Each object in a Keynote presentation’s IWA
archives is a Protocol Buffers message. Apple has published neither the messages
nor their type numbers. This page and its companions list the message definitions that
Sean O’Brien’s iWorkFileFormat project recovered from Keynote 6.0, Pages 5.0 and
Numbers 3.0 (2013) with its proto-dump tool; later versions of Keynote add
fields and messages that are not listed here. This page covers the shared value types,
the persistence messages, the Keynote document root, show and theme, and the
document, undo and style sheet messages of the shared frameworks. Slides are on
slides, builds and transitions, text on
text and styles, shapes and images on
drawables, and the type numbers on
message type numbers.
Reading the definitions
The definitions are in Protocol Buffers version 2 syntax. Each line gives the
field’s rule (required, optional or repeated),
its type, its name and its field number, which is the number written in the encoded
message; names are not stored in the file. A default in square brackets is the value
a reader assumes when the field is absent. [packed = true] means a
repeated number field is written as one length-delimited run of varints.
- Inheritance. iWork’s classes inherit from one another, and the
dump shows this as a field called
superthat holds the parent class’s message.KN.DocumentArchivehassuper(field 3), aTSA.DocumentArchive, whose ownsuperis aTSK.DocumentArchive. - References. A
TSP.Referenceholds theidentifierof another object, from that object’sArchiveInfo, in any.iwafile of the presentation. ATSP.DataReferenceholds the identifier of a data file listed inTSP.PackageMetadata. - “_null” fields. In style property messages, a boolean such as
font_name_nullnext tofont_namesays the property is explicitly unset, as opposed to absent (inherited). - Lost names. Where the dump shows enumeration values such as
TATvalue0, the programs did not carry the names; their meanings are not known from this source.
In the listings below the leading dot of fully qualified type names (as in
.TSP.Reference) is left out. Comments naming the type a reference points
to are this site’s, from the field names; the dump only says
TSP.Reference.
Shared value types (TSP)
Defined in TSPMessages.proto and used in every framework.
message Reference {
required uint64 identifier = 1;
optional int32 deprecated_type = 2;
optional bool deprecated_is_external = 3;
}
message DataReference {
required uint64 identifier = 1;
}
message Point { required float x = 1; required float y = 2; }
message Size { required float width = 1; required float height = 2; }
message Range { required uint32 location = 1; required uint32 length = 2; }
message Date { required double seconds = 1; }
message IndexSet { repeated TSP.Range ranges = 1; }
message Color {
enum ColorModel { rgb = 1; cmyk = 2; white = 3; }
required TSP.Color.ColorModel model = 1;
optional float r = 3;
optional float g = 4;
optional float b = 5;
optional float a = 6 [default = 1];
optional float c = 7;
optional float m = 8;
optional float y = 9;
optional float k = 10;
optional float w = 11;
}
message Path {
message Element {
required TSP.Path.ElementType type = 1;
repeated TSP.Point points = 2;
}
enum ElementType { moveTo = 1; lineTo = 2; quadCurveTo = 3; curveTo = 4; closeSubpath = 5; }
repeated TSP.Path.Element elements = 1;
}
message ReferenceDictionary {
message Entry {
required TSP.Reference key = 1;
required TSP.Reference value = 2;
}
repeated TSP.ReferenceDictionary.Entry entries = 1;
}
message PasteboardObject {
optional TSP.Reference stylesheet = 1;
repeated TSP.Reference drawables = 2;
repeated TSP.Reference styles = 3;
optional TSP.Reference theme = 4;
optional TSP.Reference wp_storage = 5;
optional TSP.Reference app_native_object = 6;
optional bool is_text_primary = 7 [default = false];
optional bool is_smart = 8 [default = false];
optional TSP.Reference guide_storage = 9;
}
message ObjectContainer {
optional uint32 identifier = 1;
repeated TSP.Reference objects = 2;
}
| Colour model | Fields used |
|---|---|
1 rgb | r, g, b and alpha a |
2 cmyk | c, m, y, k and a |
3 white | Grey level w and a |
Which channels each model uses is read from the field names; the dump does not say
more. Date.seconds is a number of seconds, but the dump does not give its
reference date.
Persistence messages (TSP)
ArchiveInfo and MessageInfo head every object (see
IWA archives).
PackageMetadata (type 11006) lists the components (the
.iwa files) and the data files of the presentation.
message ArchiveInfo {
optional uint64 identifier = 1;
repeated TSP.MessageInfo message_infos = 2;
}
message MessageInfo {
required uint32 type = 1;
repeated uint32 version = 2 [packed = true];
required uint32 length = 3;
repeated TSP.FieldInfo field_infos = 4;
repeated uint64 object_references = 5 [packed = true];
repeated uint64 data_references = 6 [packed = true];
}
message FieldInfo {
enum Type { Value = 0; ObjectReference = 1; DataReference = 2; Message = 3; }
enum Rule { IgnoreAndDrop = 0; IgnoreAndPreserve = 1; MustUnderstand = 2; NotSupported = -1; }
required TSP.FieldPath path = 1;
optional TSP.FieldInfo.Type type = 2 [default = Value];
optional TSP.FieldInfo.Rule rule = 3 [default = IgnoreAndDrop];
repeated uint64 object_references = 4 [packed = true];
repeated uint64 data_references = 5 [packed = true];
}
message FieldPath {
repeated uint32 path = 1 [packed = true];
}
message ComponentInfo {
required uint64 identifier = 1;
required string preferred_locator = 2;
optional string locator = 3;
repeated uint32 read_version = 4 [packed = true];
repeated uint32 write_version = 5 [packed = true];
repeated TSP.ComponentExternalReference external_references = 6;
repeated TSP.ComponentDataReference data_references = 7;
optional bool allows_duplicates_outside_of_document_package = 8 [default = false];
optional bool dirties_document_package = 9 [default = true];
optional bool is_stored_outside_object_archive = 10 [default = false];
}
message ComponentExternalReference {
required uint64 component_identifier = 1;
optional uint64 object_identifier = 2;
optional bool is_weak = 3;
}
message ComponentDataReference {
required uint64 data_identifier = 1;
}
message PackageMetadata {
required uint64 last_object_identifier = 1;
repeated TSP.ComponentInfo components = 3;
repeated TSP.DataInfo datas = 4;
repeated uint32 read_version = 5 [packed = true];
repeated uint32 write_version = 6 [packed = true];
}
message PasteboardMetadata {
repeated uint32 version = 1 [packed = true];
required string app_name = 2;
repeated TSP.DataInfo datas = 3;
optional string source_document_uuid = 4;
}
message DataInfo {
required uint64 identifier = 1;
required bytes digest = 2;
required string preferred_file_name = 3;
optional string file_name = 4;
optional string document_resource_locator = 5;
optional bytes source_bookmark_data = 6;
optional string pasteboard_external_file_path = 99;
}
message ViewStateMetadata {
repeated uint32 version = 1 [packed = true];
required string document_version_uuid = 2;
required TSP.ComponentInfo component = 3;
}
FieldInfowould let a reader handle fields it does not know (drop them, keep them, or refuse the file), but iWorkFileFormat found it absent from every archive it inspected.- A
DataInfonames a file inData/(a picture, movie or sound); itsidentifieris what aTSP.DataReferenceholds.file_nameis the name actually used when it differs frompreferred_file_name. - A
ComponentInfo’slocatororpreferred_locatoris the component’s file name inIndex, without.iwa.
Three older data messages, from TSPDatabaseMessages.proto, appear in
the database_… fields that some messages keep for presentations
converted from earlier versions:
message DatabaseData {
required TSP.DataReference data = 1;
}
message DatabaseDataArchive {
optional TSP.Reference data = 1;
optional string app_relative_path = 2;
required string display_name = 3;
optional uint64 length = 4;
optional uint32 hash = 5;
required bool sharable = 6 [default = true];
}
message DatabaseImageDataArchive {
enum ImageType { unknown = 0; bitmap = 1; pdf = 2; }
required TSP.DatabaseDataArchive super = 1;
required TSP.DatabaseImageDataArchive.ImageType type = 2;
}
The document root and the show
KN.DocumentArchive (type 1, in Document.iwa) leads to the
show (type 2), which holds the slide size, the theme, the style sheet and the slide
tree. The slide tree is a tree of slide
nodes: each node has one slide and child nodes, which is how slides are indented
under one another in the navigator.
message DocumentArchive { // KN, type 1
required TSP.Reference show = 2; // KN.ShowArchive
required TSA.DocumentArchive super = 3;
optional TSP.Reference tables_custom_format_list = 4;
}
message SlideTreeArchive {
optional TSP.Reference rootSlideNode = 1; // KN.SlideNodeArchive
}
message ShowArchive { // KN, type 2
enum KNShowMode {
kKNShowModeNormal = 0;
kKNShowModeAutoPlay = 1;
kKNShowModeHyperlinksOnly = 2;
}
optional TSP.Reference uiState = 1;
required TSP.Reference theme = 2; // KN.ThemeArchive
required KN.SlideTreeArchive slideTree = 3;
required TSP.Size size = 4; // slide size
required TSP.Reference stylesheet = 5;
optional bool slideNumbersVisible = 6;
optional TSP.Reference recording = 7; // KN.RecordingArchive
optional bool loop_presentation = 8;
optional KN.ShowArchive.KNShowMode mode = 9 [default = kKNShowModeNormal];
optional double autoplay_transition_delay = 10 [default = 5];
optional double autoplay_build_delay = 11 [default = 2];
optional bool idle_timer_active = 15;
optional double idle_timer_delay = 16 [default = 900];
optional TSP.Reference soundtrack = 17; // KN.Soundtrack
optional bool automatically_plays_upon_open = 18;
}
message ThemeArchive { // KN, type 10
required TSS.ThemeArchive super = 1;
repeated TSP.Reference masters = 2; // master slide nodes
optional string uuid = 3;
repeated TSP.Reference classicThemeRecords = 4;
optional TSP.Reference defaultMasterSlideNode = 5;
}
message ClassicStylesheetRecordArchive { // KN, type 19
repeated TSS.StylesheetArchive.IdentifiedStyleEntry identifier_to_style_map = 1;
optional TSP.Reference theme = 2;
}
message ClassicThemeRecordArchive { // KN, type 20
optional string uuid = 1;
optional TSP.Reference stylesheetRecord = 2;
repeated TSP.Reference masters = 3;
}
The delays are plain numbers in the dump; going by the defaults (5, 2 and 900) they are seconds, but the unit is not stated.
Window, selection and pasteboard state
Saved so Keynote reopens as it was left. A reader that only shows the slides can ignore these.
message DesktopUILayoutArchive { // KN, type 23
enum SidebarViewMode { kSidebarViewModeNavigator = 0; kSidebarViewModeOutline = 1; }
enum InspectorPaneViewMode {
kInspectorPaneViewModeFormat = 0;
kInspectorPaneViewModeAnimate = 1;
kInspectorPaneViewModeSetup = 2;
}
optional bool sidebar_visible = 1;
optional KN.DesktopUILayoutArchive.SidebarViewMode sidebar_view_mode = 2;
optional bool notes_visible = 3;
optional bool light_table_visible = 5;
optional bool inspector_pane_visible = 6 [default = true];
optional KN.DesktopUILayoutArchive.InspectorPaneViewMode inspector_pane_view_mode = 7 [default = kInspectorPaneViewModeFormat];
}
message UIStateArchive { // KN, type 3
optional TSP.Reference slideNodeToEdit = 1;
optional TSP.Reference deprecated_masterSlideNodeToApply = 2;
optional TSP.Size deprecated_slideThumbnailSize = 3;
optional float canvasViewScale = 4;
optional TSP.Point canvasOffset = 5;
repeated TSP.Reference selectedSlideNodes = 6;
optional float iPhoneCanvasViewScale = 7;
optional TSP.Point iPhoneCanvasOffset = 8;
optional float iPhone568CanvasViewScale = 9;
optional TSP.Point iPhone568CanvasOffset = 10;
optional TSP.Reference desktop_ui_layout = 11;
optional bool desktop_slide_view_content_fits_window = 12;
optional float desktop_canvas_view_scale = 13;
optional float light_table_zoom_scale = 14;
repeated TSCH.ChartUIState chart_ui_state = 15;
optional bool show_slide_guides = 16;
optional bool show_master_guides = 17;
optional bool shows_comments = 18;
repeated TSP.Reference collapsed_slide_nodes = 19;
optional bool shows_ruler = 20;
optional TSP.Point desktop_canvas_offset = 21;
optional float desktop_navigator_view_width = 22;
optional float desktop_outline_view_width = 23;
optional TSP.Size desktop_main_content_size = 24;
}
message CanvasSelectionArchive { // KN, type 24
repeated TSP.Reference infos = 1;
repeated uint32 database_action_ghost_indexes = 2 [deprecated = true];
repeated TSP.IndexSet action_ghost_indexes = 3;
}
message SlideCollectionSelectionArchive { // KN, type 25
message OutlineSelection {
required TSP.Reference slide_node = 1;
required TSP.IndexSet selected_paragraph_indexes = 2;
}
repeated TSP.Reference slide_nodes = 1;
optional TSP.Reference slide_node_to_edit = 2;
repeated KN.SlideCollectionSelectionArchive.OutlineSelection selected_paragraph_indexes_for_slide_nodes = 3;
optional TSP.Range range_in_selected_paragraph = 4;
}
message PasteboardNativeStorageArchive { // KN, type 11
repeated TSP.Reference drawables = 1;
repeated TSP.Reference builds = 2;
repeated KN.BuildChunkArchive buildChunks = 3;
repeated TSP.Reference slideNodes = 4;
optional TSP.Size originalShowSize = 5;
repeated TSP.Range titleRanges = 6;
}
message MasterChangeBlobArchive {
optional TSP.Reference slide = 1;
optional TSP.Reference master = 2;
optional TSP.Reference slide_style = 3;
optional TSP.Reference title_placeholder = 4;
optional TSP.Reference body_placeholder = 5;
repeated TSP.Reference drawables = 6;
optional TSP.Reference object_placeholder = 7;
}
Application document (TSA)
message DocumentArchive { // TSA, type 600
required TSK.DocumentArchive super = 1;
repeated TSWP.TextPresetDisplayItemArchive text_preset_display_items = 2;
optional string creation_language = 3;
optional TSP.Reference calculation_engine = 4;
optional TSP.Reference view_state = 5;
optional TSP.Reference function_browser_state = 6;
optional TSP.Reference tables_custom_format_list = 7;
optional bool needs_movie_compatibility_upgrade = 8;
optional string template_identifier = 9;
}
message FunctionBrowserStateArchive { // TSA, type 601
repeated uint32 recent_functions = 1;
repeated uint32 back_functions = 2;
repeated uint32 forward_functions = 3;
optional uint32 current_function = 4;
}
message TestDocumentArchive {
required TSA.DocumentArchive super = 1;
optional string value = 2;
}
message PropagatePresetCommandArchive { // TSA, type 602
required TSK.CommandArchive super = 1;
}
Kit: document, undo history and number formats (TSK)
The undo history is saved with the presentation: CommandHistory keeps
the commands that can be undone, each one a command message such as
KN.CommandShowInsertSlideArchive. A reader that only shows the slides
can ignore it.
message TreeNode { // type 205
optional string name = 1;
repeated TSP.Reference children = 2;
optional TSP.Reference object = 3;
}
message CommandHistory { // type 201
required uint32 undo_count = 1;
repeated TSP.Reference commands = 2;
repeated TSP.Reference marked_redo_commands = 3;
optional TSP.Reference pending_preflight_command = 4;
optional bool fixed_radar_13365177 = 10;
}
message DocumentArchive { // type 200
optional string locale_identifier = 4;
optional TSP.Reference annotation_author_storage = 7;
}
message DocumentSupportArchive { // type 211
optional TSP.Reference command_history = 1;
optional TSP.Reference command_selection_behavior_history = 2;
optional uint32 undo_count = 4;
optional uint32 redo_count = 5;
optional string undo_action_string = 6;
optional string redo_action_string = 7;
optional TSP.Reference web_state = 8;
}
message ViewStateArchive { // type 210
required TSP.Reference view_state_root = 1;
}
message CommandArchive {
optional TSP.Reference undoRedoState = 1;
optional TSP.Reference undoCollection = 2;
}
message CommandGroupArchive { // type 202
required TSK.CommandArchive super = 1;
repeated TSP.Reference commands = 2;
optional TSP.IndexSet process_results = 3;
}
message CommandContainerArchive { // type 203
repeated TSP.Reference commands = 1;
}
message ReplaceAllChildCommandArchive {
required TSK.CommandArchive super = 1;
}
message ReplaceAllCommandArchive { // type 204
required TSK.CommandArchive super = 1;
repeated TSP.Reference commands = 2;
required string find_string = 3;
required string replace_string = 4;
required uint32 options = 5;
}
message ShuffleMappingArchive {
message Entry {
required uint32 from = 1;
required uint32 to = 2;
}
required uint32 start_index = 1;
required uint32 end_index = 2;
repeated TSK.ShuffleMappingArchive.Entry entries = 3;
optional bool is_vertical = 4 [default = true];
optional bool is_move_operation = 5 [default = false];
optional uint32 first_moved_index = 6 [default = 0];
optional uint32 destination_index_for_move = 7 [default = 0];
optional uint32 number_of_indices_moved = 8 [default = 0];
}
message ProgressiveCommandGroupArchive { // type 206
required TSK.CommandGroupArchive super = 1;
}
message CommandSelectionBehaviorHistoryArchive { // type 208
message Entry {
required TSP.Reference command = 1;
required TSP.Reference command_selection_behavior = 2;
}
repeated TSK.CommandSelectionBehaviorHistoryArchive.Entry entries = 1;
}
message UndoRedoStateCommandSelectionBehaviorArchive { // type 209
optional TSP.Reference undo_redo_state = 2;
}
message AnnotationAuthorArchive { // type 212
optional string name = 1;
optional TSP.Color color = 2;
}
message DeprecatedChangeAuthorArchive { // type 2061
optional string name = 1;
optional TSP.Color change_color = 2;
}
message AnnotationAuthorStorageArchive { // type 213
repeated TSP.Reference annotation_author = 1;
}
message AddAnnotationAuthorCommandArchive { // type 214
required TSK.CommandArchive super = 1;
optional TSP.Reference document_root = 2;
optional TSP.Reference annotation_author = 3;
}
message SetAnnotationAuthorColorCommandArchive { // type 215
required TSK.CommandArchive super = 1;
optional TSP.Reference annotation_author = 2;
optional TSP.Color color = 3;
}
Number formats, used by table cells and charts:
message FormatStructArchive {
required uint32 format_type = 1;
optional uint32 decimal_places = 2;
optional string currency_code = 3;
optional uint32 negative_style = 4;
optional bool show_thousands_separator = 5;
optional bool use_accounting_style = 6;
optional uint32 duration_style = 7;
optional uint32 base = 8;
optional uint32 base_places = 9;
optional bool base_use_minus_sign = 10;
optional uint32 fraction_accuracy = 11;
optional bool suppress_date_format = 12;
optional bool suppress_time_format = 13;
optional string date_time_format = 14;
optional uint32 duration_unit_largest = 15;
optional uint32 duration_unit_smallest = 16;
optional uint32 custom_id = 17;
optional string custom_format_string = 18;
optional double scale_factor = 19;
optional bool requires_fraction_replacement = 20;
optional double control_minimum = 21;
optional double control_maximum = 22;
optional double control_increment = 23;
optional uint32 control_format_type = 24;
optional uint32 slider_orientation = 25;
optional uint32 slider_position = 26;
optional uint32 decimal_width = 27;
optional uint32 min_integer_width = 28;
optional uint32 num_nonspace_integer_digits = 29;
optional uint32 num_nonspace_decimal_digits = 30;
optional uint32 index_from_right_last_integer = 31;
repeated string interstitial_strings = 32;
optional TSP.IndexSet inters_str_insertion_indexes = 33;
optional uint32 num_hash_decimal_digits = 34;
optional uint32 total_num_decimal_digits = 35;
optional bool is_complex = 36;
optional bool contains_integer_token = 37;
optional uint32 multiple_choice_list_initial_value = 38;
optional uint32 multiple_choice_list_id = 39;
optional bool use_automatic_duration_units = 40;
extensions 10000 to 19999;
}
message CustomFormatArchive {
message Condition {
required uint32 condition_type = 1;
optional float condition_value = 2;
required TSK.FormatStructArchive condition_format = 3;
optional double condition_value_dbl = 4;
}
required string name = 1;
required uint32 format_type = 2;
required TSK.FormatStructArchive default_format = 3;
repeated TSK.CustomFormatArchive.Condition conditions = 4;
}
The numeric codes of format_type, negative_style,
duration_style and condition_type are not named in the dump
and are not known from this source.
Styles, style sheets and themes (TSS)
Every style message (slide, paragraph, character, list, shape and others) starts
with a TSS.StyleArchive as its super. A style’s
parent is the style it inherits from; a variation is an unnamed
style made when the user changes a named one locally. A theme’s presets live in
extension fields: TSD.ThemePresetsArchive as field 100 and
TSWP.ThemePresetsArchive as field 110 of
TSS.ThemeArchive; KN.ThemeArchive wraps it and adds the
master slides.
message StyleArchive { // type 400
optional string name = 1;
optional string style_identifier = 2;
optional TSP.Reference parent = 3;
optional bool is_variation = 4 [default = false];
optional TSP.Reference stylesheet = 5;
}
message StylesheetArchive { // type 401
message IdentifiedStyleEntry {
required string identifier = 1;
required TSP.Reference style = 2;
}
message StyleChildrenEntry {
required TSP.Reference parent = 1;
repeated TSP.Reference children = 2;
}
repeated TSP.Reference styles = 1;
repeated TSS.StylesheetArchive.IdentifiedStyleEntry identifier_to_style_map = 2;
optional TSP.Reference parent = 3;
optional bool is_locked = 4 [default = true];
repeated TSS.StylesheetArchive.StyleChildrenEntry parent_to_children_style_map = 5;
optional bool can_cull_styles = 6 [default = false];
}
message ThemeArchive { // type 402
optional TSP.Reference stylesheet = 1;
optional string theme_identifier = 3;
repeated TSP.Color color_presets = 10;
extensions 100 to 536870911;
}
message ApplyThemeCommandArchive { // type 410
required TSK.CommandArchive super = 1;
repeated TSP.Reference commands = 2;
optional TSP.Reference old_theme = 3;
optional TSP.Reference new_theme = 4;
}
message ApplyThemeChildCommandArchive { // type 411
required TSK.CommandArchive super = 1;
optional TSP.Reference parent = 2;
}
message ReapUnusedStyleCommandArchive {
message IdentifiedStyleEntry {
required string identifier = 1;
required TSP.Reference style = 2;
}
required TSK.CommandArchive super = 1;
optional TSP.Reference stylesheet = 2;
repeated TSP.Reference styles = 3;
repeated TSS.ReapUnusedStyleCommandArchive.IdentifiedStyleEntry identified_styles = 4;
}
message StyleUpdatePropertyMapCommandArchive { // type 412
required TSK.CommandArchive super = 1;
required TSP.Reference current_style = 2;
required TSP.Reference style_with_old_property_map = 3;
required TSP.Reference style_with_new_property_map = 4;
optional bool notify_for_style_clients = 6 [default = true];
}
message ThemeReplacePresetCommandArchive { // type 413
required TSK.CommandArchive super = 1;
required TSP.Reference theme = 2;
required TSP.Reference preset = 3;
required TSP.Reference oldPreset = 4;
required uint32 index = 5;
}
message ThemeAddStylePresetCommandArchive { // type 414
required TSK.CommandArchive super = 1;
required TSP.Reference theme = 2;
required TSP.Reference preset = 3;
required string preset_kind = 4;
optional string identifier = 5;
optional bool add_preset_to_stylesheet = 6;
}
message ThemeRemoveStylePresetCommandArchive { // type 415
required TSK.CommandArchive super = 1;
required TSP.Reference theme = 2;
required TSP.Reference preset = 3;
required uint32 preset_index = 4;
required string preset_kind = 5;
optional string identifier = 6;
}
message ThemeReplaceColorPresetCommandArchive { // type 416
required TSK.CommandArchive super = 1;
required TSP.Reference theme = 2;
required TSP.Color color = 3;
required TSP.Color old_color = 4;
required uint32 index = 5;
}
message ThemeMovePresetCommandArchive { // type 417
required TSK.CommandArchive super = 1;
required TSP.Reference theme = 2;
required TSP.Reference preset = 3;
required uint32 new_index = 4;
required uint32 old_index = 5;
}
message ThemeReplaceStylePresetCommandArchive { // type 418
required TSK.CommandArchive super = 1;
required TSP.Reference preset = 3;
required TSP.Reference old_preset = 4;
}
Not covered here
- The Keynote undo commands (
KNCommandArchives.proto, types 100 to 148) and the command messages of the other frameworks are listed by type number on message type numbers, but their fields are not given here. - Tables (
TST), the calculation engine (TSCE) and charts (TSCH), which a presentation uses when a slide contains a table or chart, are not yet described field by field. - Messages and fields added after Keynote 6.0.