array( array( 'attr_spec_list' => array( 'border' => array(), 'download' => array(), 'href' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'bbmi', 'fb-messenger', 'ftp', 'http', 'https', 'intent', 'line', 'mailto', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'twitter', 'viber', 'whatsapp', ), ), 'hreflang' => array(), 'media' => array(), 'name' => array(), 'rel' => array( 'blacklisted_value_regex' => '(^|\\s)(components|dns-prefetch|import|manifest|preconnect|prefetch|preload|prerender|serviceworker|stylesheet|subresource|)(\\s|$)', ), 'role' => array(), 'tabindex' => array(), 'target' => array( 'value_regex' => '(_blank|_self|_top)', ), 'type' => array( 'value_casei' => 'text/html', ), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#links', ), ), ), 'abbr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'acronym' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'address' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'amp-accordion' => array( array( 'attr_spec_list' => array( 'disable-session-states' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-accordion extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-accordion.html', ), ), ), 'amp-ad' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-app-banner', 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-ad.html', ), ), ), 'amp-analytics' => array( array( 'attr_spec_list' => array( 'config' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-analytics extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-analytics.html', ), ), ), 'amp-anim' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => '', ), 'controls' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'alternative_names' => array( 'srcset', ), 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'http', 'https', ), ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-anim extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-anim.html', ), ), ), 'amp-apester-media' => array( array( 'attr_spec_list' => array( 'data-apester-channel-token' => array( 'value_regex' => '[0-9a-za-z]+', ), 'data-apester-media-id' => array( 'value_regex' => '[0-9a-za-z]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-apester-media extension .js script', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-apester-media.html', ), ), ), 'amp-app-banner' => array( array( 'attr_spec_list' => array( 'id' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-app-banner button[open-button]', 'amp-app-banner extension .js script', ), 'html_format' => array( 'amp', ), 'mandatory_parent' => 'body', 'spec_name' => 'amp-app-banner', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-add-banner.html', 'unique' => true, ), ), ), 'amp-audio' => array( array( 'attr_spec_list' => array( 'autoplay' => array( 'value_regex' => '^$|desktop|tablet|mobile|autoplay', ), 'controls' => array(), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-audio extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-audio.html', ), ), array( 'attr_spec_list' => array( 'controls' => array(), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-audio extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp4ads', ), 'spec_name' => 'amp-audio (a4a)', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-audio.html', ), ), ), 'amp-auto-ads' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'amp-brid-player' => array( array( 'attr_spec_list' => array( 'data-partner' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'data-player' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'data-playlist' => array( 'value_regex' => '[0-9]+', ), 'data-video' => array( 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-brid-player extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-brid-player.html', ), ), ), 'amp-brightcove' => array( array( 'attr_spec_list' => array( 'data-account' => array( 'mandatory' => true, ), 'data-embed' => array(), 'data-player' => array(), 'data-playlist-id' => array(), 'data-video-id' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-brightcove extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-brightcove.html', ), ), ), 'amp-carousel' => array( array( 'attr_spec_list' => array( 'arrows' => array( 'value' => '', ), 'autoplay' => array( 'value' => '', ), 'controls' => array(), 'delay' => array( 'value_regex' => '[0-9]+', ), 'dots' => array( 'value' => '', ), 'loop' => array( 'value' => '', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'type' => array( 'value_regex' => 'slides|carousel', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-carousel extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-carousel.html', ), ), ), 'amp-dailymotion' => array( array( 'attr_spec_list' => array( 'data-endscreen-enable' => array( 'value_regex' => 'true|false', ), 'data-info' => array( 'value_regex' => 'true|false', ), 'data-mute' => array( 'value_regex' => 'true|false', ), 'data-sharing-enable' => array( 'value_regex' => 'true|false', ), 'data-start' => array( 'value_regex' => '[0-9]+', ), 'data-ui-highlight' => array( 'value_regex_casei' => '([0-9a-f]{3}){1,2}', ), 'data-ui-logo' => array( 'value_regex' => 'true|false', ), 'data-videoid' => array( 'mandatory' => true, 'value_regex_casei' => '[a-z0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-dailymotion extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-dailymotion.html', ), ), ), 'amp-embed' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'json' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-embed.html', ), ), ), 'amp-experiment' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-experiment extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-experiment.html', 'unique' => true, ), ), ), 'amp-facebook' => array( array( 'attr_spec_list' => array( 'data-href' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-facebook extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-facebook.html', ), ), ), 'amp-fit-text' => array( array( 'attr_spec_list' => array( 'max-font-size' => array(), 'media' => array(), 'min-font-size' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-fit-text extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-fit-text.html', ), ), ), 'amp-font' => array( array( 'attr_spec_list' => array( 'font-family' => array( 'mandatory' => true, ), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'on-error-add-class' => array(), 'on-error-remove-class' => array(), 'on-load-add-class' => array(), 'on-load-remove-class' => array(), 'timeout' => array( 'value_regex' => '[0-9]+', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-font extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-font.html', ), ), ), 'amp-fx-flying-carpet' => array( array( 'attr_spec_list' => array( 'height' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-fx-flying-carpet extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-fx-flying-carpet.html', ), ), ), 'amp-gfycat' => array( array( 'attr_spec_list' => array( 'data-gfyid' => array( 'mandatory' => true, ), 'media' => array(), 'noautoplay' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-gfycat extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-gfycat.html', ), ), ), 'amp-hulu' => array( array( 'attr_spec_list' => array( 'data-eid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-hulu extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), ), ), ), 'amp-iframe' => array( array( 'attr_spec_list' => array( 'allowfullscreen' => array( 'value' => '', ), 'allowtransparency' => array( 'value' => '', ), 'frameborder' => array( 'value_regex' => '0|1', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'referrerpolicy' => array(), 'resizable' => array( 'value' => '', ), 'sandbox' => array(), 'scrolling' => array( 'value_regex' => 'auto|yes|no', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'https', ), ), 'srcdoc' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-iframe extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-iframe.html', ), ), ), 'amp-image-lightbox' => array( array( 'attr_spec_list' => array( 'controls' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-image-lightbox extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-image-lightbox.html', ), ), ), 'amp-img' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'placeholder' => array(), 'src' => array( 'alternative_names' => array( 'srcset', ), 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'http', 'https', ), ), ), 'tag_spec' => array( 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-img.html', ), ), ), 'amp-instagram' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'data-shortcode' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-instagram extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-instagram.html', ), ), ), 'amp-install-serviceworker' => array( array( 'attr_spec_list' => array( 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-install-serviceworker extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-install-serviceworker.html', ), ), ), 'amp-jwplayer' => array( array( 'attr_spec_list' => array( 'data-media-id' => array( 'value_regex_casei' => '[0-9a-z]{8}', ), 'data-player-id' => array( 'mandatory' => true, 'value_regex_casei' => '[0-9a-z]{8}', ), 'data-playlist-id' => array( 'value_regex_casei' => '[0-9a-z]{8}', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-jwplayer extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-jwplayer.html', ), ), ), 'amp-kaltura-player' => array( array( 'attr_spec_list' => array( 'data-partner' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-kaltura-player extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-kaltura-player.html', ), ), ), 'amp-lightbox' => array( array( 'attr_spec_list' => array( 'controls' => array(), 'from' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'scrollable' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-lightbox extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-lightbox.html', ), ), ), 'amp-list' => array( array( 'attr_spec_list' => array( 'credentials' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'template' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-list extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-list.html', ), ), ), 'amp-live-list' => array( array( 'attr_spec_list' => array( 'data-max-items-per-page' => array( 'mandatory' => true, 'value_regex' => '\\d+', ), 'data-poll-interval' => array( 'value_regex' => '\\d{5,}', ), 'disabled' => array( 'value' => '', ), 'id' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-live-list extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-live-list.html', ), ), ), 'amp-o2-player' => array( array( 'attr_spec_list' => array( 'data-bcid' => array( 'mandatory' => true, ), 'data-bid' => array(), 'data-pid' => array( 'mandatory' => true, ), 'data-vid' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-o2-player extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-o2-player.html', ), ), ), 'amp-ooyala-player' => array( array( 'attr_spec_list' => array( 'data-config' => array(), 'data-embedcode' => array( 'mandatory' => true, ), 'data-pcode' => array( 'mandatory' => true, ), 'data-playerid' => array( 'mandatory' => true, ), 'data-playerversion' => array(), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-ooyala-player extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-ooyala-player.html', ), ), ), 'amp-pinterest' => array( array( 'attr_spec_list' => array( 'data-do' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-pinterest extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-pinterest.html', ), ), ), 'amp-pixel' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-pixel.html', ), ), ), 'amp-playbuzz' => array( array( 'attr_spec_list' => array( 'data-comments' => array( 'value_regex_casei' => '(false|true)', ), 'data-item-info' => array( 'value_regex_casei' => '(false|true)', ), 'data-share-buttons' => array( 'value_regex_casei' => '(false|true)', ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'src' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-playbuzz extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-playbuzz', ), ), ), 'amp-reach-player' => array( array( 'attr_spec_list' => array( 'data-embed-id' => array( 'mandatory' => true, 'value_regex' => '[0-9a-z-]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-reach-player extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-reach-player.html', ), ), ), 'amp-reddit' => array( array( 'attr_spec_list' => array( 'data-embedlive' => array( 'value_regex_casei' => '(false|true)', ), 'data-embedparent' => array( 'value_regex_casei' => '(false|true)', ), 'data-embedtype' => array( 'mandatory' => true, 'value_regex_casei' => '(comment|post)', ), 'data-src' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-reddit extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/components/amp-reddit', ), ), ), 'amp-selector' => array( array( 'attr_spec_list' => array( 'disabled' => array( 'value' => '', ), 'form' => array(), 'media' => array(), 'multiple' => array( 'value' => '', ), 'name' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-selector extension .js script', ), 'disallowed_ancestor' => array( 'amp-selector', 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-selector.html', ), ), ), 'amp-sidebar' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), 'side' => array( 'value_regex' => '(left|right)', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-sidebar extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'mandatory_parent' => 'body', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-sidebar.html', 'unique' => true, ), ), ), 'amp-social-share' => array( array( 'attr_spec_list' => array( 'data-share-endpoint' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => false, 'allowed_protocol' => array( 'bbmi', 'fb-messenger', 'ftp', 'http', 'https', 'intent', 'line', 'mailto', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'viber', 'whatsapp', ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-social-share extension .js script', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-social-share.html', ), ), ), 'amp-soundcloud' => array( array( 'attr_spec_list' => array( 'data-color' => array( 'value_regex_casei' => '([0-9a-f]{3}){1,2}', ), 'data-secret-token' => array( 'value_regex' => '[a-za-z0-9_-]+', ), 'data-trackid' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'data-visual' => array( 'value_regex' => 'true|false', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-soundcloud extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-soundcloud.html', ), ), ), 'amp-springboard-player' => array( array( 'attr_spec_list' => array( 'data-content-id' => array( 'mandatory' => true, ), 'data-domain' => array( 'mandatory' => true, ), 'data-items' => array( 'mandatory' => true, ), 'data-mode' => array( 'mandatory' => true, 'value_regex_casei' => 'playlist|video', ), 'data-player-id' => array( 'mandatory' => true, 'value_regex_casei' => '[a-z0-9]+', ), 'data-site-id' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-springboard-player extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-springboard-player.html', ), ), ), 'amp-sticky-ad' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-sticky-ad extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-sticky-ad.html', 'unique' => true, ), ), ), 'amp-twitter' => array( array( 'attr_spec_list' => array( 'data-tweetid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-twitter extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-twitter.html', ), ), ), 'amp-user-notification' => array( array( 'attr_spec_list' => array( 'data-dismiss-href' => array( 'allow_empty' => false, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'data-show-if-href' => array( 'allow_empty' => false, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-analytics extension .js script', 'amp-user-notification extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-user-notification.html', ), ), ), 'amp-video' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => '', ), 'controls' => array( 'value' => '', ), 'loop' => array( 'value' => '', ), 'media' => array(), 'muted' => array( 'value' => '', ), 'noloading' => array( 'value' => '', ), 'placeholder' => array(), 'poster' => array(), 'preload' => array( 'value_regex' => '(none|metadata|auto|)', ), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-video.html', ), ), ), 'amp-vimeo' => array( array( 'attr_spec_list' => array( 'data-videoid' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-vimeo extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-vimeo.html', ), ), ), 'amp-vine' => array( array( 'attr_spec_list' => array( 'data-vineid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-vine extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-vine.html', ), ), ), 'amp-youtube' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-videoid' => array( 'mandatory' => true, 'value_regex' => '[^=/?:]+', ), 'media' => array(), 'noloading' => array( 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-youtube extension .js script', ), 'disallowed_ancestor' => array( 'amp-sidebar', ), 'html_format' => array( 'amp', 'amp4ads', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-youtube.html', ), ), ), 'article' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'aside' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'audio' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'controls' => array(), 'loop' => array(), 'muted' => array(), 'preload' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => false, 'allowed_protocol' => array( 'data', 'https', ), ), ), 'tag_spec' => array( 'html_format' => array( 'amp', ), 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-audio', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-audio.html', ), ), ), 'b' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'bdi' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'bdo' => array( array( 'attr_spec_list' => array( 'dir' => array(), ), 'tag_spec' => array(), ), ), 'big' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'blockquote' => array( array( 'attr_spec_list' => array( 'align' => array(), 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'fb-messenger', 'ftp', 'http', 'https', 'intent', 'mailto', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'twitter', 'viber', 'whatsapp', ), ), ), 'tag_spec' => array(), ), ), 'body' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'html', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#required-markup', 'unique' => true, ), ), ), 'br' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'button' => array( array( 'attr_spec_list' => array( 'disabled' => array( 'value' => '', ), 'name' => array(), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'name' => array(), 'open-button' => array( 'value' => '', ), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-app-banner', 'spec_name' => 'amp-app-banner button[open-button]', ), ), ), 'caption' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'center' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'circle' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'cx' => array(), 'cy' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'r' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'cite' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'clippath' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'clippathunits' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'code' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'col' => array( array( 'attr_spec_list' => array( 'span' => array(), ), 'tag_spec' => array(), ), ), 'colgroup' => array( array( 'attr_spec_list' => array( 'span' => array(), ), 'tag_spec' => array(), ), ), 'data' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'datalist' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'mandatory_ancestor' => 'form', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'dd' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'defs' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'del' => array( array( 'attr_spec_list' => array( 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'fb-messenger', 'ftp', 'http', 'https', 'intent', 'mailto', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'twitter', 'viber', 'whatsapp', ), ), 'datetime' => array(), ), 'tag_spec' => array(), ), ), 'desc' => array( array( 'attr_spec_list' => array( 'class' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'dfn' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'dir' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'div' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-success' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'form > div [submit-success]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-error' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'form', 'spec_name' => 'form > div [submit-error]', ), ), ), 'dl' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'dt' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ellipse' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'cx' => array(), 'cy' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'rx' => array(), 'ry' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'em' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'fieldset' => array( array( 'attr_spec_list' => array( 'disabled' => array(), 'name' => array(), ), 'tag_spec' => array(), ), ), 'figcaption' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'figure' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'filter' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'filterres' => array(), 'filterunits' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'primitiveunits' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'footer' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'foreignobject' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'form' => array( array( 'attr_spec_list' => array( 'accept' => array(), 'accept-charset' => array(), 'action' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), 'disallowed_domain' => array( 'cdn.ampproject.org', ), ), 'action-xhr' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), 'disallowed_domain' => array( 'cdn.ampproject.org', ), ), 'autocomplete' => array(), 'custom-validation-reporting' => array( 'value_regex' => '(show-first-on-submit|show-all-on-submit|as-you-go)', ), 'enctype' => array(), 'method' => array( 'value_casei' => 'get', ), 'name' => array(), 'novalidate' => array(), 'target' => array( 'mandatory' => true, 'value_regex_casei' => '(_blank|_top)', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', ), 'spec_name' => 'form [method=get]', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accept-charset' => array(), 'action-xhr' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), 'disallowed_domain' => array( 'cdn.ampproject.org', ), ), 'autocomplete' => array(), 'custom-validation-reporting' => array( 'value_regex' => '(show-first-on-submit|show-all-on-submit|as-you-go)', ), 'enctype' => array(), 'method' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'post', ), 'name' => array(), 'novalidate' => array(), 'target' => array( 'mandatory' => true, 'value_regex_casei' => '(_blank|_top)', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'disallowed_ancestor' => array( 'amp-app-banner', ), 'spec_name' => 'form [method=post]', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'g' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'glyph' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'arabic-form' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'd' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-name' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'horiz-adv-x' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'orientation' => array(), 'overflow' => array(), 'pointer-events' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode' => array(), 'unicode-bidi' => array(), 'vert-adv-y' => array(), 'vert-origin-x' => array(), 'vert-origin-y' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'glyphref' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'dx' => array(), 'dy' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'format' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'glyphref' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'h1' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h2' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h3' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h4' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h5' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'h6' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'header' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'hgroup' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'hkern' => array( array( 'attr_spec_list' => array( 'g1' => array(), 'g2' => array(), 'k' => array(), 'u1' => array(), 'u2' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'hr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'i' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'image' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'blacklisted_value_regex' => '(^|\\s)data:image\\/svg\\+xml', 'allow_empty' => false, 'allow_relative' => false, 'allowed_protocol' => array( 'data', ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'img' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'border' => array(), 'height' => array(), 'ismap' => array(), 'longdesc' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'http', 'https', ), ), 'src' => array( 'alternative_names' => array( 'srcset', ), 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'data', 'https', ), ), 'width' => array(), ), 'tag_spec' => array( 'html_format' => array( 'amp', ), 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-img', 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-img.html', ), ), ), 'input' => array( array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'default-value' => array(), 'disabled' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'blacklisted_value_regex' => '__amp_source_origin', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'blacklisted_value_regex' => '(^|\\s)(button|file|image|password|)(\\s|$)', ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'ins' => array( array( 'attr_spec_list' => array( 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'fb-messenger', 'ftp', 'http', 'https', 'intent', 'mailto', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'twitter', 'viber', 'whatsapp', ), ), 'datetime' => array(), ), 'tag_spec' => array(), ), ), 'kbd' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'label' => array( array( 'attr_spec_list' => array( 'for' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'legend' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'li' => array( array( 'attr_spec_list' => array( 'value' => array( 'value_regex' => '[0-9]*', ), ), 'tag_spec' => array(), ), ), 'line' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x1' => array(), 'x2' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y1' => array(), 'y2' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'lineargradient' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'gradienttransform' => array(), 'gradientunits' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'shape-rendering' => array(), 'spreadmethod' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x1' => array(), 'x2' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y1' => array(), 'y2' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'link' => array( array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'href' => array(), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'blacklisted_value_regex' => '(^|\\s)(canonical|components|import|manifest|serviceworker|stylesheet|subresource|)(\\s|$)', 'mandatory' => true, ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'template', ), 'spec_name' => 'link rel=', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'itemprop' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'sameas', ), 'media' => array(), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link itemprop=sameas', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => 'utf-8', ), 'color' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'itemprop' => array( 'mandatory' => true, ), 'media' => array(), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link itemprop=', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), ), 'listing' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'main' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'mark' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'marker' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'markerheight' => array(), 'markerunits' => array(), 'markerwidth' => array(), 'mask' => array(), 'opacity' => array(), 'orient' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'refx' => array(), 'refy' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'viewbox' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'mask' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'maskcontentunits' => array(), 'maskunits' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'meta' => array( array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'x-ua-compatible', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=x-ua-compatible', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array(), 'itemprop' => array(), 'name' => array( 'blacklisted_value_regex' => '(^|\\s)(viewport|content-disposition|revisit-after|apple-itunes-app)(\\s|$)', ), 'property' => array(), ), 'tag_spec' => array( 'spec_name' => 'meta name= and content=', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => 'text/html; charset=utf-8', ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'content-type', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=content-type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'content-language', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=content-language', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'pics-label', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=pics-label', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'imagetoolbar', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=imagetoolbar', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => 'text/css', ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'content-style-type', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=content-style-type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => 'text/javascript', ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'content-script-type', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=content-script-type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'resource-type', ), ), 'tag_spec' => array( 'spec_name' => 'meta http-equiv=resource-type', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#html-tags', ), ), ), 'multicol' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'nav' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'nextid' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'nobr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'noscript' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'disallowed_ancestor' => array( 'noscript', ), 'html_format' => array( 'amp', ), 'mandatory_ancestor' => 'body', ), ), ), 'o:p' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'ol' => array( array( 'attr_spec_list' => array( 'reversed' => array( 'value' => '', ), 'start' => array( 'value_regex' => '[0-9]*', ), 'type' => array( 'value_regex' => '[1aaii]', ), ), 'tag_spec' => array(), ), ), 'optgroup' => array( array( 'attr_spec_list' => array( 'disabled' => array(), 'label' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'mandatory_parent' => 'select', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'option' => array( array( 'attr_spec_list' => array( 'disabled' => array(), 'label' => array(), 'selected' => array(), 'value' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'mandatory_ancestor' => 'form', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'p' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), ), 'path' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'd' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pathlength' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'pattern' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'patterncontentunits' => array(), 'patterntransform' => array(), 'patternunits' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'viewbox' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'polygon' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'points' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'polyline' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'points' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'pre' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'q' => array( array( 'attr_spec_list' => array( 'cite' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'fb-messenger', 'ftp', 'http', 'https', 'intent', 'mailto', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'twitter', 'viber', 'whatsapp', ), ), ), 'tag_spec' => array(), ), ), 'radialgradient' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'cx' => array(), 'cy' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'fx' => array(), 'fy' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'gradienttransform' => array(), 'gradientunits' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'r' => array(), 'shape-rendering' => array(), 'spreadmethod' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'rb' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rect' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'rx' => array(), 'ry' => array(), 'shape-rendering' => array(), 'sketch:type' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'rp' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rt' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rtc' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ruby' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 's' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'samp' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'script' => array( array( 'attr_spec_list' => array( 'type' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'application/ld+json', ), ), 'tag_spec' => array( 'spec_name' => 'script type=application/ld+json', ), ), array( 'attr_spec_list' => array( 'type' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'application/json', ), ), 'tag_spec' => array( 'html_format' => array( 'amp', 'amp4ads', ), 'mandatory_parent' => 'amp-analytics', 'spec_name' => 'amp-analytics extension .json script', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-analytics.html', ), ), array( 'attr_spec_list' => array( 'amp-ad-metadata' => array( 'dispatch_key' => true, 'mandatory' => true, 'value' => '', ), 'type' => array( 'mandatory' => true, 'value_casei' => 'application/json', ), ), 'tag_spec' => array( 'html_format' => array( 'amp', 'amp4ads', ), 'mandatory_parent' => 'body', 'spec_name' => 'amp-ad-metadata .json script', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-analytics.html', ), ), array( 'attr_spec_list' => array( 'type' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'application/json', ), ), 'tag_spec' => array( 'html_format' => array( 'amp', ), 'mandatory_parent' => 'amp-state', 'spec_name' => 'amp-bind extension .json script', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-bind.html', ), ), array( 'attr_spec_list' => array( 'type' => array( 'dispatch_key' => true, 'mandatory' => true, 'value_casei' => 'application/json', ), ), 'tag_spec' => array( 'html_format' => array( 'amp', ), 'mandatory_parent' => 'amp-experiment', 'spec_name' => 'amp-experiment extension .json script', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-experiment.html', ), ), ), 'section' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-accordion', ), ), ), array( 'attr_spec_list' => array( 'expanded' => array( 'value' => '', ), ), 'tag_spec' => array( 'html_format' => array( 'amp', 'amp4ads', ), 'mandatory_parent' => 'amp-accordion', 'spec_name' => 'amp-accordion > section', ), ), ), 'select' => array( array( 'attr_spec_list' => array( 'autofocus' => array(), 'disabled' => array(), 'multiple' => array(), 'name' => array(), 'required' => array(), 'size' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'mandatory_ancestor' => 'form', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'small' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'source' => array( array( 'attr_spec_list' => array( 'media' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-video', 'spec_name' => 'amp-video > source', 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-video.html', ), ), array( 'attr_spec_list' => array( 'media' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-audio', 'spec_name' => 'amp-audio > source', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-audio.html', ), ), array( 'attr_spec_list' => array( 'media' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'audio', 'spec_name' => 'audio > source', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-audio.html', ), ), array( 'attr_spec_list' => array( 'media' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => true, 'allowed_protocol' => array( 'https', ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'video', 'spec_name' => 'video > source', 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-video.html', ), ), ), 'spacer' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'span' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'stop' => array( array( 'attr_spec_list' => array( 'offset' => array(), 'stop-color' => array(), 'stop-opacity' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'lineargradient', 'spec_name' => 'lineargradient > stop', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), array( 'attr_spec_list' => array( 'offset' => array(), 'stop-color' => array(), 'stop-opacity' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'radialgradient', 'spec_name' => 'radialgradient > stop', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'strike' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'strong' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'style' => array( array( 'attr_spec_list' => array( 'amp-boilerplate' => array( 'dispatch_key' => true, 'mandatory' => true, 'value' => '', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'head > style[amp-boilerplate]', ), 'html_format' => array( 'amp', ), 'mandatory_alternatives' => 'noscript > style[amp-boilerplate]', 'mandatory_parent' => 'noscript', 'spec_name' => 'noscript > style[amp-boilerplate]', 'spec_url' => 'https://github.com/ampproject/amphtml/blob/master/spec/amp-boilerplate.md', 'unique' => true, ), ), ), 'sub' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'sup' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'svg' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'contentscripttype' => array(), 'contentstyletype' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'version' => array( 'value_regex' => '(1.0|1.1)', ), 'viewbox' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), 'zoomandpan' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'symbol' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preserveaspectratio' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'viewbox' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'table' => array( array( 'attr_spec_list' => array( 'align' => array(), 'bgcolor' => array(), 'border' => array( 'value_regex' => '0|1', ), 'cellpadding' => array(), 'cellspacing' => array(), 'sortable' => array(), 'width' => array(), ), 'tag_spec' => array(), ), ), 'tbody' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'td' => array( array( 'attr_spec_list' => array( 'align' => array(), 'bgcolor' => array(), 'colspan' => array(), 'headers' => array(), 'height' => array(), 'rowspan' => array(), 'valign' => array(), 'width' => array(), ), 'tag_spec' => array(), ), ), 'template' => array( array( 'attr_spec_list' => array( 'type' => array( 'mandatory' => true, 'value' => 'amp-mustache', ), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-mustache extension .js script', ), 'disallowed_ancestor' => array( 'template', ), 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-mustache.html', ), ), ), 'text' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'dx' => array(), 'dy' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'lengthadjust' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'rotate' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'textlength' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'textarea' => array( array( 'attr_spec_list' => array( 'autocomplete' => array(), 'autofocus' => array(), 'cols' => array(), 'disabled' => array(), 'maxlength' => array(), 'minlength' => array(), 'name' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'rows' => array(), 'selectiondirection' => array(), 'selectionend' => array(), 'selectionstart' => array(), 'spellcheck' => array(), 'wrap' => array(), ), 'tag_spec' => array( 'also_requires_tag' => array( 'amp-form extension .js script', ), 'mandatory_ancestor' => 'form', 'spec_url' => 'https://www.ampproject.org/docs/reference/extended/amp-form.html', ), ), ), 'textpath' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'method' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'spacing' => array(), 'startoffset' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'tfoot' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'th' => array( array( 'attr_spec_list' => array( 'abbr' => array(), 'align' => array(), 'bgcolor' => array(), 'colspan' => array(), 'headers' => array(), 'height' => array(), 'rowspan' => array(), 'scope' => array(), 'sorted' => array(), 'valign' => array(), 'width' => array(), ), 'tag_spec' => array(), ), ), 'thead' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'time' => array( array( 'attr_spec_list' => array( 'datetime' => array(), ), 'tag_spec' => array(), ), ), 'title' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'spec_name' => 'title', ), ), array( 'attr_spec_list' => array( 'class' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_name' => 'svg title', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'tr' => array( array( 'attr_spec_list' => array( 'align' => array(), 'bgcolor' => array(), 'height' => array(), 'valign' => array(), ), 'tag_spec' => array(), ), ), 'track' => array( array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'value_regex' => '(captions|descriptions|chapters|metadata)', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'audio', 'spec_name' => 'audio > track', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'mandatory' => true, 'value_casei' => 'subtitles', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'audio', 'spec_name' => 'audio > track[kind=subtitles]', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'value_regex' => '(captions|descriptions|chapters|metadata)', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'video', 'spec_name' => 'video > track', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'mandatory' => true, 'value_casei' => 'subtitles', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'video', 'spec_name' => 'video > track[kind=subtitles]', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'value_regex' => '(captions|descriptions|chapters|metadata)', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-audio', 'spec_name' => 'amp-audio > track', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'mandatory' => true, 'value_casei' => 'subtitles', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-audio', 'spec_name' => 'amp-audio > track[kind=subtitles]', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'value_regex' => '(captions|descriptions|chapters|metadata)', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-video', 'spec_name' => 'amp-video > track', ), ), array( 'attr_spec_list' => array( 'default' => array( 'value' => '', ), 'kind' => array( 'mandatory' => true, 'value_casei' => 'subtitles', ), 'label' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'mandatory' => true, 'allow_relative' => false, 'allowed_protocol' => array( 'https', ), ), 'srclang' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-video', 'spec_name' => 'amp-video > track[kind=subtitles]', ), ), ), 'tref' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'tspan' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'dx' => array(), 'dy' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'image-rendering' => array(), 'kerning' => array(), 'lengthadjust' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'rotate' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'textlength' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'tt' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), 'u' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ul' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'use' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'class' => array(), 'clip' => array(), 'clip-path' => array(), 'clip-rule' => array(), 'color' => array(), 'color-interpolation' => array(), 'color-interpolation-filters' => array(), 'color-profile' => array(), 'color-rendering' => array(), 'cursor' => array(), 'direction' => array(), 'display' => array(), 'dominant-baseline' => array(), 'enable-background' => array(), 'externalresourcesrequired' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'glyph-orientation-horizontal' => array(), 'glyph-orientation-vertical' => array(), 'height' => array(), 'image-rendering' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'requiredextensions' => array(), 'requiredfeatures' => array(), 'shape-rendering' => array(), 'stop-color' => array(), 'stop-opacity' => array(), 'stroke' => array(), 'stroke-dasharray' => array(), 'stroke-dashoffset' => array(), 'stroke-linecap' => array(), 'stroke-linejoin' => array(), 'stroke-miterlimit' => array(), 'stroke-opacity' => array(), 'stroke-width' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'value_regex' => '#.*', ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'var' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'video' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'controls' => array(), 'height' => array(), 'loop' => array(), 'muted' => array(), 'poster' => array(), 'preload' => array(), 'src' => array( 'blacklisted_value_regex' => '__amp_source_origin', 'allow_relative' => false, 'allowed_protocol' => array( 'data', 'https', ), ), 'width' => array(), ), 'tag_spec' => array( 'html_format' => array( 'amp', ), 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-video', 'spec_url' => 'https://www.ampproject.org/docs/reference/amp-video.html', ), ), ), 'view' => array( array( 'attr_spec_list' => array( 'externalresourcesrequired' => array(), 'preserveaspectratio' => array(), 'viewbox' => array(), 'viewtarget' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'zoomandpan' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'vkern' => array( array( 'attr_spec_list' => array( 'g1' => array(), 'g2' => array(), 'k' => array(), 'u1' => array(), 'u2' => array(), 'xml:base' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://www.ampproject.org/docs/reference/spec.html#svg', ), ), ), 'wbr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'xmp' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'html_format' => array( 'amp', ), ), ), ), ); private static $layout_allowed_attrs = array( 'height' => array(), 'heights' => array(), 'layout' => array(), 'sizes' => array(), 'width' => array(), ); private static $globally_allowed_attrs = array( 'accesskey' => array(), 'amp-access' => array(), 'amp-access-behavior' => array(), 'amp-access-hide' => array(), 'amp-access-id' => array(), 'amp-access-loader' => array(), 'amp-access-loading' => array(), 'amp-access-off' => array(), 'amp-access-on' => array(), 'amp-access-show' => array(), 'amp-access-style' => array(), 'amp-access-template' => array(), 'aria-activedescendant' => array(), 'aria-atomic' => array(), 'aria-autocomplete' => array(), 'aria-busy' => array(), 'aria-checked' => array(), 'aria-controls' => array(), 'aria-describedby' => array(), 'aria-disabled' => array(), 'aria-dropeffect' => array(), 'aria-expanded' => array(), 'aria-flowto' => array(), 'aria-grabbed' => array(), 'aria-haspopup' => array(), 'aria-hidden' => array(), 'aria-invalid' => array(), 'aria-label' => array(), 'aria-labelledby' => array(), 'aria-level' => array(), 'aria-live' => array(), 'aria-multiline' => array(), 'aria-multiselectable' => array(), 'aria-orientation' => array(), 'aria-owns' => array(), 'aria-posinset' => array(), 'aria-pressed' => array(), 'aria-readonly' => array(), 'aria-relevant' => array(), 'aria-required' => array(), 'aria-selected' => array(), 'aria-setsize' => array(), 'aria-sort' => array(), 'aria-valuemax' => array(), 'aria-valuemin' => array(), 'aria-valuenow' => array(), 'aria-valuetext' => array(), 'class' => array( 'blacklisted_value_regex' => '(^|\\w)i-amphtml-', ), 'dir' => array(), 'draggable' => array(), 'fallback' => array( 'value' => '', ), 'i-amp-access-id' => array(), 'id' => array( 'blacklisted_value_regex' => '^i-amphtml-', ), 'itemid' => array(), 'itemprop' => array(), 'itemref' => array(), 'itemscope' => array(), 'itemtype' => array(), 'lang' => array(), 'lightbox' => array(), 'on' => array(), 'overflow' => array(), 'placeholder' => array( 'value' => '', ), 'role' => array(), 'tabindex' => array(), 'title' => array(), 'translate' => array(), 'validation-for' => array(), 'visible-when-invalid' => array( 'value_regex' => '(badinput|customerror|patternmismatch|rangeoverflow|rangeunderflow|stepmismatch|toolong|typemismatch|valuemissing)', ), ); public static function get_allowed_tags() { return self::$allowed_tags; } public static function get_allowed_attributes() { return self::$globally_allowed_attrs; } public static function get_layout_attributes() { return self::$layout_allowed_attrs; } } ?>