ay( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 4, ), ), 'requires_extension' => array( 'amp-google-assistant-assistjs', ), ), ), ), 'amp-google-document-embed' => array( array( 'attr_spec_list' => array( 'data-amp-bind-src' => array(), 'data-amp-bind-title' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'requires_extension' => array( 'amp-google-document-embed', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-google-document-embed/', ), ), ), 'amp-hulu' => array( array( 'attr_spec_list' => array( 'data-eid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-hulu', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-hulu/', ), ), ), 'amp-iframe' => array( array( 'attr_spec_list' => array( 'allow' => array(), 'allowfullscreen' => array( 'value' => array( '', ), ), 'allowpaymentrequest' => array( 'value' => array( '', ), ), 'allowtransparency' => array( 'value' => array( '', ), ), 'data-amp-bind-src' => array(), 'frameborder' => array( 'value' => array( '0', '1', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'referrerpolicy' => array(), 'resizable' => array( 'value' => array( '', ), ), 'sandbox' => array(), 'scrolling' => array( 'value' => array( 'auto', 'no', 'yes', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'data', 'https', ), ), ), 'srcdoc' => array(), 'tabindex' => array( 'value_regex' => '-?\\d+', ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'mandatory_oneof' => array( 'src', 'srcdoc', ), 'requires_extension' => array( 'amp-iframe', ), ), ), ), 'amp-ima-video' => array( array( 'attr_spec_list' => array( 'autoplay' => array( 'value' => array( '', ), ), 'data-src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), 'data-tag' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'rotate-to-fullscreen' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 1, 4, ), ), 'requires_extension' => array( 'amp-ima-video', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-ima-video/', ), ), ), 'amp-image-lightbox' => array( array( 'attr_spec_list' => array( 'controls' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-image-lightbox', ), ), ), ), 'amp-image-slider' => array( array( 'attr_spec_list' => array( 'disable-hint-reappear' => array(), 'initial-slider-position' => array( 'value_regex' => '0(\\.[0-9]+)?|1(\\.0+)?', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'step-size' => array( 'value_regex' => '0(\\.[0-9]+)?|1(\\.0+)?', ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, 9, 1, 4, ), ), 'child_tags' => array( 'child_tag_name_oneof' => array( 'amp-img', 'div', ), 'mandatory_min_num_child_tags' => 2, ), 'requires_extension' => array( 'amp-image-slider', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider/', ), ), ), 'amp-img' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'crossorigin' => array(), 'data-amp-bind-alt' => array(), 'data-amp-bind-attribution' => array(), 'data-amp-bind-src' => array(), 'data-amp-bind-srcset' => array(), 'lightbox' => array(), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'object-fit' => array(), 'object-position' => array(), 'placeholder' => array(), 'referrerpolicy' => array(), 'src' => array( 'alternative_names' => array( 'srcset', ), 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'data', 'http', 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'spec_url' => 'https://amp.dev/documentation/components/amp-img/', ), ), ), 'amp-imgur' => array( array( 'attr_spec_list' => array( 'data-imgur-id' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-imgur', ), ), ), ), 'amp-inline-gallery' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 5, ), ), 'requires_extension' => array( 'amp-inline-gallery', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/', ), ), ), 'amp-inline-gallery-pagination' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'mandatory_ancestor' => 'amp-inline-gallery', 'requires_extension' => array( 'amp-inline-gallery', ), 'spec_name' => 'amp-inline-gallery-pagination', 'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/', ), ), array( 'attr_spec_list' => array( 'inset' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'mandatory_ancestor' => 'amp-inline-gallery', 'requires_extension' => array( 'amp-inline-gallery', ), 'spec_name' => 'amp-inline-gallery-pagination [inset]', 'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/', ), ), ), 'amp-inline-gallery-thumbnails' => array( array( 'attr_spec_list' => array( 'aspect-ratio-height' => array( 'disallowed_value_regex' => '^0+(\\.0+)?$', 'value_regex' => '\\d+(\\.\\d+)?', ), 'aspect-ratio-width' => array( 'disallowed_value_regex' => '^0+(\\.0+)?$', 'value_regex' => '\\d+(\\.\\d+)?', ), 'loop' => array( 'value' => array( 'true', 'false', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'mandatory_ancestor' => 'amp-inline-gallery', 'requires_extension' => array( 'amp-inline-gallery', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-inline-gallery/', ), ), ), 'amp-instagram' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'data-shortcode' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-instagram', ), ), ), ), 'amp-install-serviceworker' => array( array( 'attr_spec_list' => array( 'data-iframe-src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-install-serviceworker', ), ), ), ), 'amp-izlesene' => array( array( 'attr_spec_list' => array( 'data-videoid' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-izlesene', ), ), ), ), 'amp-jwplayer' => array( array( 'attr_spec_list' => array( 'autoplay' => array( 'value' => array( '', ), ), 'data-media-id' => array( 'value_regex_casei' => '[0-9a-z]{8}|outstream', ), 'data-player-id' => array( 'mandatory' => true, 'value_regex_casei' => '[0-9a-z]{8}', ), 'data-playlist-id' => array( 'value_regex_casei' => '[0-9a-z]{8}', ), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'mandatory_oneof' => array( 'data-media-id', 'data-playlist-id', ), 'requires_extension' => array( 'amp-jwplayer', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-jwplayer/', ), ), ), 'amp-kaltura-player' => array( array( 'attr_spec_list' => array( 'data-partner' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-kaltura-player', ), ), ), ), 'amp-layout' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, 5, ), ), 'spec_url' => 'https://amp.dev/documentation/components/amp-layout/', ), ), ), 'amp-lightbox' => array( array( 'attr_spec_list' => array( 'animate-in' => array( 'value_casei' => array( 'fade-in', 'fly-in-bottom', 'fly-in-top', ), ), 'controls' => array(), 'data-amp-bind-open' => array(), 'from' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'scrollable' => array(), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-lightbox', ), ), ), ), 'amp-link-rewriter' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'child_tags' => array( 'first_child_tag_name_oneof' => array( 'script', ), 'mandatory_num_child_tags' => 1, ), 'requires_extension' => array( 'amp-link-rewriter', ), 'unique' => true, ), ), ), 'amp-list' => array( array( 'attr_spec_list' => array( 'auto-resize' => array( 'value' => array( '', ), ), 'binding' => array( 'value' => array( 'always', 'no', 'refresh', ), ), 'credentials' => array(), 'data-amp-bind-is-layout-container' => array(), 'data-amp-bind-src' => array(), 'diffable' => array( 'value' => array( '', ), ), 'items' => array(), 'load-more' => array( 'value' => array( 'auto', 'manual', ), ), 'load-more-bookmark' => array(), 'max-items' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'reset-on-refresh' => array( 'value' => array( '', 'always', 'fetch', ), ), 'single-item' => array(), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', 'amp-state', 'amp-script', ), ), ), 'template' => array(), 'xssi-prefix' => array(), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'mandatory_anyof' => array( 'data-amp-bind-src', 'src', ), 'requires_extension' => array( 'amp-list', ), ), ), ), 'amp-list-load-more' => array( array( 'attr_spec_list' => array( 'load-more-button' => array( 'value' => array( '', ), ), 'load-more-end' => array( 'value' => array( '', ), ), 'load-more-failed' => array( 'value' => array( '', ), ), 'load-more-loading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'mandatory_oneof' => array( 'load-more-button', 'load-more-end', 'load-more-failed', 'load-more-loading', ), 'mandatory_parent' => 'amp-list', 'requires_extension' => array( 'amp-list', ), ), ), ), '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' => array( '', ), ), 'id' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', 'mandatory' => true, ), 'sort' => array( 'value' => array( 'ascending', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 5, 3, ), ), 'reference_points' => array( 'AMP-LIVE-LIST [items]' => array( 'mandatory' => true, 'unique' => true, ), 'AMP-LIVE-LIST [pagination]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-LIVE-LIST [update]' => array( 'mandatory' => true, 'unique' => true, ), ), 'requires_extension' => array( 'amp-live-list', ), ), ), ), 'amp-mathml' => array( array( 'attr_spec_list' => array( 'data-formula' => array( 'mandatory' => true, ), 'inline' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 5, ), ), 'requires_extension' => array( 'amp-mathml', ), ), ), ), 'amp-mega-menu' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 3, ), ), 'child_tags' => array( 'child_tag_name_oneof' => array( 'nav', 'amp-list', ), 'mandatory_num_child_tags' => 1, ), 'descendant_tag_list' => 'amp-mega-menu-allowed-descendants', 'reference_points' => array( 'AMP-MEGA-MENU > AMP-LIST' => array( 'mandatory' => false, 'unique' => false, ), 'AMP-MEGA-MENU > NAV' => array( 'mandatory' => false, 'unique' => false, ), ), 'requires_extension' => array( 'amp-mega-menu', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-mega-menu/', ), ), ), 'amp-megaphone' => array( array( 'attr_spec_list' => array( 'data-episodes' => array( 'value_regex' => '[0-9]+', ), 'data-light' => array( 'value' => array( '', ), ), 'data-playlist' => array( 'dispatch_key' => 1, 'mandatory' => true, 'value_regex' => '[A-Za-z0-9]+', ), 'data-sharing' => array( 'value' => array( '', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, 3, ), ), 'requires_extension' => array( 'amp-megaphone', ), 'spec_name' => 'amp-megaphone [data-playlist]', ), ), array( 'attr_spec_list' => array( 'data-episode' => array( 'dispatch_key' => 1, 'mandatory' => true, 'value_regex' => '[A-Za-z0-9]+', ), 'data-light' => array( 'value' => array( '', ), ), 'data-sharing' => array( 'value' => array( '', ), ), 'data-start' => array( 'value_regex' => '\\d+(\\.\\d+)?', ), 'data-tile' => array( 'value' => array( '', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, 3, ), ), 'requires_extension' => array( 'amp-megaphone', ), 'spec_name' => 'amp-megaphone [data-episode]', ), ), ), 'amp-minute-media-player' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-content-id' => array(), 'data-content-type' => array( 'mandatory' => true, 'value' => array( 'curated', 'semantic', 'specific', ), ), 'data-minimum-date-factor' => array(), 'data-scanned-element' => array(), 'data-scanned-element-type' => array( 'value' => array( 'className', 'id', 'tag', ), ), 'data-scoped-keywords' => array(), 'data-tags' => array(), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-minute-media-player', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-minute-media-player/', ), ), ), 'amp-mowplayer' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-mediaid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-mowplayer', ), ), ), ), 'amp-nested-menu' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'side' => array( 'value' => array( 'left', 'right', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, ), ), 'descendant_tag_list' => 'amp-nested-menu-allowed-descendants', 'mandatory_ancestor' => 'amp-sidebar', 'requires_extension' => array( 'amp-sidebar', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-nested-menu/', ), ), ), 'amp-next-page' => array( array( 'attr_spec_list' => array( 'deep-parsing' => array(), 'max-pages' => array(), ), 'tag_spec' => array( 'reference_points' => array( 'AMP-NEXT-PAGE > SCRIPT[type=application/json]' => array( 'mandatory' => true, 'unique' => true, ), 'AMP-NEXT-PAGE > [footer]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [recommendation-box]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [separator]' => array( 'mandatory' => false, 'unique' => true, ), ), 'requires_extension' => array( 'amp-next-page', ), 'spec_name' => 'amp-next-page with inline config', 'spec_url' => 'https://amp.dev/documentation/components/amp-next-page/', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'deep-parsing' => array(), 'max-pages' => array(), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'xssi-prefix' => array(), ), 'tag_spec' => array( 'reference_points' => array( 'AMP-NEXT-PAGE > SCRIPT[type=application/json]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [footer]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [recommendation-box]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [separator]' => array( 'mandatory' => false, 'unique' => true, ), ), 'requires_extension' => array( 'amp-next-page', ), 'spec_name' => 'amp-next-page with src attribute', 'spec_url' => 'https://amp.dev/documentation/components/amp-next-page/', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'data-client' => array( 'mandatory' => true, ), 'data-slot' => array( 'mandatory' => true, ), 'deep-parsing' => array(), 'max-pages' => array(), 'type' => array( 'mandatory' => true, 'value' => array( 'adsense', ), ), ), 'tag_spec' => array( 'reference_points' => array( 'AMP-NEXT-PAGE > SCRIPT[type=application/json]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [footer]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [recommendation-box]' => array( 'mandatory' => false, 'unique' => true, ), 'AMP-NEXT-PAGE > [separator]' => array( 'mandatory' => false, 'unique' => true, ), ), 'requires_extension' => array( 'amp-next-page', ), 'spec_name' => 'amp-next-page [type=adsense]', 'spec_url' => 'https://amp.dev/documentation/components/amp-next-page/', 'unique' => true, ), ), ), 'amp-nexxtv-player' => array( array( 'attr_spec_list' => array( 'data-client' => array( 'mandatory' => true, ), 'data-mediaid' => array( 'mandatory' => true, 'value_regex' => '[^=/?:]+', ), 'data-mode' => array( 'value' => array( 'api', 'static', ), ), 'data-origin' => array( 'value_url' => array( 'allow_empty' => true, 'protocol' => array( 'https', 'http', ), ), ), 'data-streamtype' => array( 'value' => array( 'album', 'audio', 'live', 'playlist', 'playlist-marked', 'video', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-nexxtv-player', ), ), ), ), 'amp-o2-player' => array( array( 'attr_spec_list' => array( 'data-bcid' => array( 'mandatory' => true, ), 'data-pid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-o2-player', ), ), ), ), 'amp-onetap-google' => array( array( 'attr_spec_list' => array( 'data-src' => array( 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-onetap-google', ), 'unique' => true, ), ), ), 'amp-ooyala-player' => array( array( 'attr_spec_list' => array( 'data-embedcode' => array( 'mandatory' => true, ), 'data-pcode' => array( 'mandatory' => true, ), 'data-playerid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 7, 4, ), ), 'requires_extension' => array( 'amp-ooyala-player', ), ), ), ), 'amp-orientation-observer' => array( array( 'attr_spec_list' => array( 'alpha-range' => array( 'value_regex' => '(\\d+)\\s{1}(\\d+)', ), 'beta-range' => array( 'value_regex' => '(\\d+)\\s{1}(\\d+)', ), 'gamma-range' => array( 'value_regex' => '(\\d+)\\s{1}(\\d+)', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'smoothing' => array( 'value_regex' => '[0-9]+|', ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-orientation-observer', ), ), ), ), 'amp-pan-zoom' => array( array( 'attr_spec_list' => array( 'disable-double-tap' => array( 'value' => array( '', ), ), 'initial-scale' => array( 'value_regex' => '[0-9]+(\\.[0-9]+)?', ), 'initial-x' => array( 'value_regex' => '[0-9]+', ), 'initial-y' => array( 'value_regex' => '[0-9]+', ), 'max-scale' => array( 'value_regex' => '[0-9]+(\\.[0-9]+)?', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'reset-on-resize' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 4, ), ), 'requires_extension' => array( 'amp-pan-zoom', ), ), ), ), 'amp-pinterest' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'data-do' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-pinterest', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-pinterest/', ), ), ), 'amp-pixel' => array( array( 'attr_spec_list' => array( 'allow-ssr-img' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'referrerpolicy' => array( 'value' => array( 'no-referrer', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'allow_empty' => true, 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'defines_default_height' => true, 'defines_default_width' => true, 'supported_layouts' => array( 2, 1, ), ), 'spec_url' => 'https://amp.dev/documentation/components/amp-pixel/', ), ), ), 'amp-playbuzz' => array( array( 'attr_spec_list' => array( 'data-comments' => array( 'value_casei' => array( 'false', 'true', ), ), 'data-item' => array(), 'data-item-info' => array( 'value_casei' => array( 'false', 'true', ), ), 'data-share-buttons' => array( 'value_casei' => array( 'false', 'true', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'src' => array(), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 4, 3, ), ), 'mandatory_oneof' => array( 'data-item', 'src', ), 'requires_extension' => array( 'amp-playbuzz', ), ), ), ), 'amp-position-observer' => array( array( 'attr_spec_list' => array( 'intersection-ratios' => array( 'value_regex' => '^([0]*?\\.\\d*$|1$|0$)|([0]*?\\.\\d*|1|0)\\s{1}([0]*?\\.\\d*$|1$|0$)', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'once' => array( 'value' => array( '', ), ), 'target' => array(), 'viewport-margins' => array( 'value_regex' => '^(\\d+$|\\d+px$|\\d+vh$)|((\\d+|\\d+px|\\d+vh)\\s{1}(\\d+$|\\d+px$|\\d+vh$))', ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-position-observer', ), ), ), ), 'amp-powr-player' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-account' => array( 'mandatory' => true, 'value_regex' => '[0-9a-zA-Z-]+', ), 'data-amp-bind-data-referrer' => array(), 'data-player' => array( 'mandatory' => true, 'value_regex' => '[0-9a-zA-Z-]+', ), 'data-terms' => array(), 'data-video' => array( 'value_regex' => '[0-9a-zA-Z-]+', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'mandatory_oneof' => array( 'data-terms', 'data-video', ), 'requires_extension' => array( 'amp-powr-player', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-powr-player/', ), ), ), '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' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-reach-player', ), ), ), ), 'amp-recaptcha-input' => array( array( 'attr_spec_list' => array( 'data-action' => array( 'mandatory' => true, ), 'data-sitekey' => array( 'mandatory' => true, ), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', 'mandatory' => true, ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'mandatory_ancestor' => 'form', 'requires_extension' => array( 'amp-form', 'amp-recaptcha-input', ), ), ), ), 'amp-redbull-player' => array( array( 'attr_spec_list' => array( 'data-param-videoid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, 3, 4, 6, 7, 8, 9, ), ), 'requires_extension' => array( 'amp-redbull-player', ), ), ), ), 'amp-reddit' => array( array( 'attr_spec_list' => array( 'data-embedlive' => array( 'value_casei' => array( 'false', 'true', ), ), 'data-embedparent' => array( 'value_casei' => array( 'false', 'true', ), ), 'data-embedtype' => array( 'mandatory' => true, 'value_casei' => array( 'comment', 'post', ), ), 'data-src' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-reddit', ), ), ), ), 'amp-riddle-quiz' => array( array( 'attr_spec_list' => array( 'data-riddle-id' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 4, ), ), 'requires_extension' => array( 'amp-riddle-quiz', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-riddle-quiz/', ), ), ), 'amp-script' => array( array( 'attr_spec_list' => array( 'max-age' => array( 'value_regex' => '[0-9]+', ), 'media' => array(), 'nodom' => array( 'value' => array( '', ), ), 'noloading' => array( 'value' => array( '', ), ), 'sandbox' => array(), 'script' => array(), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 5, 6, 2, 3, 7, 9, 1, 4, ), ), 'disallowed_ancestor' => array( 'amp-script', ), 'mandatory_oneof' => array( 'script', 'src', ), 'requires_extension' => array( 'amp-script', ), ), ), ), 'amp-selector' => array( array( 'attr_spec_list' => array( 'data-amp-bind-disabled' => array(), 'data-amp-bind-selected' => array(), 'disabled' => array( 'value' => array( '', ), ), 'form' => array(), 'keyboard-select-mode' => array( 'value_casei' => array( 'focus', 'none', 'select', ), ), 'media' => array(), 'multiple' => array( 'value' => array( '', ), ), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 1, 4, 5, ), ), 'disallowed_ancestor' => array( 'amp-selector', ), 'reference_points' => array( 'AMP-SELECTOR child' => array( 'mandatory' => false, 'unique' => false, ), 'AMP-SELECTOR option' => array( 'mandatory' => false, 'unique' => false, ), ), 'requires_extension' => array( 'amp-selector', ), ), ), ), 'amp-sidebar' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'side' => array( 'value' => array( 'left', 'right', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'disallowed_ancestor' => array( 'amp-story', ), 'requires_extension' => array( 'amp-sidebar', ), 'spec_name' => 'amp-sidebar', 'spec_url' => 'https://amp.dev/documentation/components/amp-sidebar/', ), ), array( 'attr_spec_list' => array(), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'mandatory_parent' => 'amp-story', 'requires_extension' => array( 'amp-sidebar', ), 'spec_name' => 'amp-story >> amp-sidebar', 'spec_url' => 'https://amp.dev/documentation/components/amp-sidebar/', ), ), ), 'amp-skimlinks' => array( array( 'attr_spec_list' => array( 'custom-redirect-domain' => array(), 'custom-tracking-id' => array( 'value_regex_casei' => '^.{0,50}$', ), 'excluded-domains' => array(), 'link-selector' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'publisher-code' => array( 'mandatory' => true, 'value_regex_casei' => '^[0-9]+X[0-9]+$', ), 'tracking' => array( 'value' => array( 'false', 'true', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-skimlinks', ), ), ), ), 'amp-smartlinks' => array( array( 'attr_spec_list' => array( 'exclusive-links' => array( 'value' => array( '', ), ), 'link-attribute' => array(), 'link-selector' => array(), 'linkmate' => array( 'value' => array( '', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'nrtv-account-name' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-smartlinks', ), ), ), ), 'amp-social-share' => array( array( 'attr_spec_list' => array( 'data-share-endpoint' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'ftp', 'http', 'https', 'mailto', 'bbmi', 'fb-me', 'fb-messenger', 'intent', 'line', 'skype', 'sms', 'snapchat', 'tel', 'tg', 'threema', 'viber', 'wh', 'whatsapp', ), ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'type' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 5, 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-social-share', ), ), ), ), 'amp-soundcloud' => array( array( 'attr_spec_list' => array( 'data-color' => array( 'value_regex_casei' => '([0-9a-f]{3}){1,2}', ), 'data-playlistid' => array( 'value_regex' => '[0-9]+', ), 'data-secret-token' => array( 'value_regex' => '[A-Za-z0-9_-]+', ), 'data-trackid' => array( 'value_regex' => '[0-9]+', ), 'data-visual' => array( 'value_casei' => array( 'false', 'true', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'mandatory_oneof' => array( 'data-playlistid', 'data-trackid', ), 'requires_extension' => array( 'amp-soundcloud', ), ), ), ), '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_casei' => array( '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' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 7, 4, ), ), 'requires_extension' => array( 'amp-springboard-player', ), ), ), ), 'amp-state' => array( array( 'attr_spec_list' => array( 'credentials' => array(), 'data-amp-bind-src' => array(), 'id' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', 'mandatory' => true, ), 'overridable' => array(), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'child_tags' => array( 'first_child_tag_name_oneof' => array( 'script', ), ), 'requires_extension' => array( 'amp-bind', ), 'spec_name' => 'amp-state', 'spec_url' => 'https://amp.dev/documentation/components/amp-bind/', ), ), ), 'amp-sticky-ad' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'child_tags' => array( 'first_child_tag_name_oneof' => array( 'amp-ad', ), 'mandatory_num_child_tags' => 1, ), 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-sticky-ad', ), 'unique' => true, ), ), ), 'amp-story' => array( array( 'attr_spec_list' => array( 'background-audio' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'entity' => array(), 'entity-logo-src' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'entity-url' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'live-story' => array( 'value' => array( '', ), ), 'live-story-disabled' => array( 'value' => array( '', ), ), 'poster-landscape-src' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'poster-portrait-src' => array( 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'poster-square-src' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'publisher' => array( 'mandatory' => true, ), 'publisher-logo-src' => array( 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'standalone' => array( 'mandatory' => true, 'value' => array( '', ), ), 'supports-landscape' => array( 'value' => array( '', ), ), 'title' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'child_tags' => array( 'child_tag_name_oneof' => array( 'amp-analytics', 'amp-consent', 'amp-geo', 'amp-pixel', 'amp-sidebar', 'amp-story-auto-ads', 'amp-story-auto-analytics', 'amp-story-bookend', 'amp-story-page', 'amp-story-social-share', ), 'mandatory_min_num_child_tags' => 1, ), 'mandatory_parent' => 'body', 'requires_extension' => array( 'amp-story', ), ), ), ), 'amp-story-360' => array( array( 'attr_spec_list' => array( 'controls' => array( 'value' => array( 'gyroscope', ), ), 'duration' => array( 'value_regex' => '([0-9\\.]+)\\s*(s|ms)', ), 'heading-end' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'heading-start' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'pitch-end' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'pitch-start' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'scene-heading' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'scene-pitch' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'scene-roll' => array( 'value_regex' => '-?\\d+\\.?\\d*', ), 'zoom-end' => array( 'value_regex' => '\\d+\\.?\\d*', ), 'zoom-start' => array( 'value_regex' => '\\d+\\.?\\d*', ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, ), ), 'child_tags' => array( 'child_tag_name_oneof' => array( 'amp-img', 'amp-video', ), 'mandatory_num_child_tags' => 1, ), 'mandatory_ancestor' => 'amp-story', 'requires_extension' => array( 'amp-story-360', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-story-360', ), ), ), 'amp-story-animation' => array( array( 'attr_spec_list' => array( 'animate-in-after' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'trigger' => array( 'mandatory' => true, 'value' => array( 'visibility', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'child_tags' => array( 'child_tag_name_oneof' => array( 'script', ), 'mandatory_num_child_tags' => 1, ), 'mandatory_parent' => 'amp-story-page', 'requires_extension' => array( 'amp-story', ), ), ), ), 'amp-story-auto-ads' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory_parent' => 'amp-story', 'requires_extension' => array( 'amp-story-auto-ads', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-story-auto-ads/', 'unique' => true, ), ), ), 'amp-story-auto-analytics' => array( array( 'attr_spec_list' => array( 'gtag-id' => array( 'mandatory' => true, 'value_regex' => '[A-Z]{1,2}-[A-Z0-9-]+', ), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-story-auto-analytics', ), ), ), ), 'amp-story-bookend' => array( array( 'attr_spec_list' => array( 'layout' => array( 'mandatory' => true, 'value' => array( 'nodisplay', ), ), 'src' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), ), 'tag_spec' => array( 'descendant_tag_list' => 'amp-story-bookend-allowed-descendants', 'mandatory_ancestor' => 'amp-story', ), ), ), 'amp-story-consent' => array( array( 'attr_spec_list' => array( 'id' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', 'mandatory' => true, ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'child_tags' => array( 'child_tag_name_oneof' => array( 'script', ), 'mandatory_num_child_tags' => 1, ), 'mandatory_parent' => 'amp-consent', 'requires_extension' => array( 'amp-consent', 'amp-story', ), ), ), ), 'amp-story-cta-layer' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'descendant_tag_list' => 'amp-story-cta-layer-allowed-descendants', 'mandatory_ancestor' => 'amp-story-page', 'reference_points' => array( 'AMP-STORY-CTA-LAYER animate-in' => array( 'mandatory' => false, 'unique' => false, ), ), ), ), ), 'amp-story-grid-layer' => array( array( 'attr_spec_list' => array( 'anchor' => array( 'value_regex' => 'top|bottom|left|right|(top|bottom)[ -](left|right)|(left|right)[ -](top|bottom)', ), 'aspect-ratio' => array( 'value_regex' => '\\d+:\\d+', ), 'position' => array( 'value' => array( 'landscape-half-left', 'landscape-half-right', ), ), 'preset' => array( 'value' => array( '2021-background', '2021-foreground', ), ), 'template' => array( 'mandatory' => true, 'value' => array( 'fill', 'horizontal', 'thirds', 'vertical', ), ), ), 'tag_spec' => array( 'descendant_tag_list' => 'amp-story-grid-layer-allowed-descendants', 'mandatory_ancestor' => 'amp-story-page', 'reference_points' => array( 'AMP-STORY-GRID-LAYER animate-in' => array( 'mandatory' => false, 'unique' => false, ), 'AMP-STORY-GRID-LAYER default' => array( 'mandatory' => false, 'unique' => false, ), ), ), ), ), 'amp-story-interactive-binary-poll' => array( array( 'attr_spec_list' => array( 'chip-style' => array( 'value' => array( 'shadow', 'flat', 'transparent', ), ), 'endpoint' => array( 'mandatory' => true, 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'id' => array( 'mandatory' => true, ), 'option-1-confetti' => array(), 'option-1-text' => array( 'mandatory' => true, ), 'option-2-confetti' => array(), 'option-2-text' => array( 'mandatory' => true, ), 'prompt-size' => array( 'value' => array( 'small', 'medium', 'large', ), ), 'prompt-text' => array(), 'theme' => array( 'value' => array( 'light', 'dark', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-grid-layer', 'requires_extension' => array( 'amp-story-interactive', ), ), ), ), 'amp-story-interactive-poll' => array( array( 'attr_spec_list' => array( 'chip-style' => array( 'value' => array( 'shadow', 'flat', 'transparent', ), ), 'endpoint' => array( 'mandatory' => true, 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'id' => array( 'mandatory' => true, ), 'option-1-confetti' => array(), 'option-1-results-category' => array(), 'option-1-text' => array( 'mandatory' => true, ), 'option-2-confetti' => array(), 'option-2-results-category' => array(), 'option-2-text' => array( 'mandatory' => true, ), 'option-3-confetti' => array(), 'option-3-results-category' => array(), 'option-3-text' => array(), 'option-4-confetti' => array(), 'option-4-results-category' => array(), 'option-4-text' => array(), 'prompt-size' => array( 'value' => array( 'small', 'medium', 'large', ), ), 'prompt-text' => array(), 'theme' => array( 'value' => array( 'light', 'dark', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-grid-layer', 'requires_extension' => array( 'amp-story-interactive', ), ), ), ), 'amp-story-interactive-quiz' => array( array( 'attr_spec_list' => array( 'chip-style' => array( 'value' => array( 'shadow', 'flat', 'transparent', ), ), 'endpoint' => array( 'mandatory' => true, 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'id' => array( 'mandatory' => true, ), 'option-1-confetti' => array(), 'option-1-correct' => array(), 'option-1-text' => array( 'mandatory' => true, ), 'option-2-confetti' => array(), 'option-2-correct' => array(), 'option-2-text' => array( 'mandatory' => true, ), 'option-3-confetti' => array(), 'option-3-correct' => array(), 'option-3-text' => array(), 'option-4-confetti' => array(), 'option-4-correct' => array(), 'option-4-text' => array(), 'prompt-size' => array( 'value' => array( 'small', 'medium', 'large', ), ), 'prompt-text' => array(), 'theme' => array( 'value' => array( 'light', 'dark', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-grid-layer', 'mandatory_oneof' => array( 'option-1-correct', 'option-2-correct', 'option-3-correct', 'option-4-correct', ), 'requires_extension' => array( 'amp-story-interactive', ), ), ), ), 'amp-story-interactive-results' => array( array( 'attr_spec_list' => array( 'chip-style' => array( 'value' => array( 'flat', 'transparent', ), ), 'option-1-image' => array(), 'option-1-results-category' => array( 'mandatory' => true, ), 'option-1-results-threshold' => array( 'value_regex' => '\\d+(\\.\\d+)?', ), 'option-1-text' => array(), 'option-2-image' => array(), 'option-2-results-category' => array( 'mandatory' => true, ), 'option-2-results-threshold' => array( 'value_regex' => '\\d+(\\.\\d+)?', ), 'option-2-text' => array(), 'option-3-image' => array(), 'option-3-results-category' => array(), 'option-3-results-threshold' => array( 'value_regex' => '\\d+(\\.\\d+)?', ), 'option-3-text' => array(), 'option-4-image' => array(), 'option-4-results-category' => array(), 'option-4-results-threshold' => array( 'value_regex' => '\\d+(\\.\\d+)?', ), 'option-4-text' => array(), 'prompt-text' => array(), 'theme' => array( 'value' => array( 'light', 'dark', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-grid-layer', 'requires_extension' => array( 'amp-story-interactive', ), ), ), ), 'amp-story-page' => array( array( 'attr_spec_list' => array( 'auto-advance-after' => array(), 'background-audio' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'id' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|AMP|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|i-amphtml-\\S*|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', 'mandatory' => true, ), 'next-page-no-ad' => array(), ), 'tag_spec' => array( 'child_tags' => array( 'child_tag_name_oneof' => array( 'amp-analytics', 'amp-pixel', 'amp-story-animation', 'amp-story-auto-analytics', 'amp-story-cta-layer', 'amp-story-grid-layer', 'amp-story-page-attachment', ), 'mandatory_min_num_child_tags' => 1, ), 'mandatory_parent' => 'amp-story', 'requires_extension' => array( 'amp-story', ), ), ), ), 'amp-story-page-attachment' => array( array( 'attr_spec_list' => array( 'href' => array( 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'layout' => array( 'mandatory' => true, 'value' => array( 'nodisplay', ), ), 'theme' => array( 'value' => array( 'dark', 'light', ), ), ), 'tag_spec' => array( 'child_tags' => array( 'mandatory_num_child_tags' => 0, ), 'mandatory_ancestor' => 'amp-story-page', 'spec_name' => 'amp-story-page-attachment[href]', ), ), array( 'attr_spec_list' => array( 'cta-image' => array( 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'cta-image-2' => array( 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'layout' => array( 'mandatory' => true, 'value' => array( 'nodisplay', ), ), 'theme' => array( 'value' => array( 'dark', 'light', ), ), ), 'tag_spec' => array( 'descendant_tag_list' => 'amp-story-page-attachment-allowed-descendants', 'mandatory_ancestor' => 'amp-story-page', 'spec_name' => 'amp-story-page-attachment', ), ), ), 'amp-story-panning-media' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, ), ), 'mandatory_ancestor' => 'amp-story-grid-layer', 'requires_extension' => array( 'amp-story-panning-media', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-story-panning-media', ), ), ), 'amp-story-player' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, 9, ), ), 'descendant_tag_list' => 'amp-story-player-allowed-descendants', 'requires_extension' => array( 'amp-story-player', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-story-player/', ), ), ), 'amp-story-social-share' => array( array( 'attr_spec_list' => array( 'layout' => array( 'mandatory' => true, 'value' => array( 'nodisplay', ), ), 'src' => array( 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), ), 'tag_spec' => array( 'descendant_tag_list' => 'amp-story-social-share-allowed-descendants', 'mandatory_ancestor' => 'amp-story', ), ), ), 'amp-timeago' => array( array( 'attr_spec_list' => array( 'cutoff' => array( 'value_regex' => '\\d+', ), 'data-amp-bind-datetime' => array(), 'data-amp-bind-title' => array(), 'datetime' => array( 'mandatory' => true, 'value_regex' => '\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d(:[0-5]\\d(\\.\\d+)?)?(Z|[+-][0-1][0-9]:[0-5][0-9])', ), 'locale' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, 3, 4, ), ), 'requires_extension' => array( 'amp-timeago', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-timeago/', ), ), ), 'amp-truncate-text' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'overflow-style' => array( 'value' => array( 'right', 'default', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 5, 6, 2, 3, 7, 9, 1, 4, ), ), 'requires_extension' => array( 'amp-truncate-text', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-truncate-text/', ), ), ), 'amp-twitter' => array( array( 'attr_spec_list' => array( 'data-amp-bind-data-tweetid' => array(), 'data-cards' => array(), 'data-conversation' => array(), 'data-limit' => array(), 'data-momentid' => array( 'value_regex' => '\\d+', ), 'data-timeline-id' => array( 'value_regex' => '\\d+', ), 'data-timeline-owner-screen-name' => array(), 'data-timeline-screen-name' => array(), 'data-timeline-slug' => array(), 'data-timeline-source-type' => array(), 'data-timeline-url' => array( 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'http', 'https', ), ), ), 'data-timeline-user-id' => array( 'value_regex' => '\\d+', ), 'data-tweetid' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'mandatory_oneof' => array( 'data-momentid', 'data-timeline-source-type', 'data-tweetid', ), 'requires_extension' => array( 'amp-twitter', ), ), ), ), 'amp-user-notification' => array( array( 'attr_spec_list' => array( 'data-dismiss-href' => array( 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'data-show-if-href' => array( 'value_url' => array( 'allow_empty' => false, 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'enctype' => array( 'value' => array( 'application/x-www-form-urlencoded', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-user-notification', ), ), ), ), 'amp-video' => array( array( 'attr_spec_list' => array( 'album' => array(), 'alt' => array(), 'artist' => array(), 'artwork' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => array( '', ), ), 'controls' => array( 'value' => array( '', ), ), 'controlslist' => array(), 'crossorigin' => array(), 'data-amp-bind-album' => array(), 'data-amp-bind-alt' => array(), 'data-amp-bind-artist' => array(), 'data-amp-bind-artwork' => array(), 'data-amp-bind-attribution' => array(), 'data-amp-bind-controls' => array(), 'data-amp-bind-controlslist' => array(), 'data-amp-bind-loop' => array(), 'data-amp-bind-poster' => array(), 'data-amp-bind-preload' => array(), 'data-amp-bind-src' => array(), 'data-amp-bind-title' => array(), 'disableremoteplayback' => array( 'value' => array( '', ), ), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'lightbox' => array(), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'loop' => array( 'value' => array( '', ), ), 'media' => array(), 'muted' => array( 'value' => array( '', ), ), 'noaudio' => array( 'value' => array( '', ), ), 'noloading' => array( 'value' => array( '', ), ), 'object-fit' => array(), 'object-position' => array(), 'placeholder' => array(), 'poster' => array(), 'preload' => array( 'value' => array( 'auto', 'metadata', 'none', '', ), ), 'rotate-to-fullscreen' => array( 'value' => array( '', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'disallowed_ancestor' => array( 'amp-story', ), 'requires_extension' => array( 'amp-video', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-video/', ), ), array( 'attr_spec_list' => array( 'album' => array(), 'alt' => array(), 'artist' => array(), 'artwork' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => array( '', ), ), 'controls' => array( 'value' => array( '', ), ), 'controlslist' => array(), 'crossorigin' => array(), 'data-amp-bind-album' => array(), 'data-amp-bind-alt' => array(), 'data-amp-bind-artist' => array(), 'data-amp-bind-artwork' => array(), 'data-amp-bind-attribution' => array(), 'data-amp-bind-controls' => array(), 'data-amp-bind-controlslist' => array(), 'data-amp-bind-loop' => array(), 'data-amp-bind-poster' => array(), 'data-amp-bind-preload' => array(), 'data-amp-bind-src' => array(), 'data-amp-bind-title' => array(), 'disableremoteplayback' => array( 'value' => array( '', ), ), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'lightbox' => array(), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'loop' => array( 'value' => array( '', ), ), 'media' => array(), 'muted' => array( 'value' => array( '', ), ), 'noaudio' => array( 'value' => array( '', ), ), 'noloading' => array( 'value' => array( '', ), ), 'object-fit' => array(), 'object-position' => array(), 'placeholder' => array(), 'poster' => array(), 'preload' => array( 'value' => array( 'auto', 'metadata', 'none', '', ), ), 'rotate-to-fullscreen' => array( 'value' => array( '', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'mandatory_ancestor' => 'amp-story-page-attachment', 'requires_extension' => array( 'amp-video', ), 'spec_name' => 'amp-story >> amp-story-page-attachment >> amp-video', 'spec_url' => 'https://amp.dev/documentation/components/amp-video/', ), ), array( 'attr_spec_list' => array( 'album' => array(), 'alt' => array(), 'artist' => array(), 'artwork' => array(), 'attribution' => array(), 'autoplay' => array( 'mandatory' => true, 'value' => array( '', ), ), 'controls' => array( 'value' => array( '', ), ), 'controlslist' => array(), 'crossorigin' => array(), 'data-amp-bind-album' => array(), 'data-amp-bind-alt' => array(), 'data-amp-bind-artist' => array(), 'data-amp-bind-artwork' => array(), 'data-amp-bind-attribution' => array(), 'data-amp-bind-controls' => array(), 'data-amp-bind-controlslist' => array(), 'data-amp-bind-loop' => array(), 'data-amp-bind-poster' => array(), 'data-amp-bind-preload' => array(), 'data-amp-bind-src' => array(), 'data-amp-bind-title' => array(), 'disableremoteplayback' => array( 'value' => array( '', ), ), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'loop' => array( 'value' => array( '', ), ), 'media' => array(), 'muted' => array( 'value' => array( '', ), ), 'noaudio' => array( 'value' => array( '', ), ), 'noloading' => array( 'value' => array( '', ), ), 'object-fit' => array(), 'object-position' => array(), 'placeholder' => array(), 'poster' => array( 'mandatory' => true, ), 'preload' => array( 'value' => array( 'auto', 'metadata', 'none', '', ), ), 'rotate-to-fullscreen' => array( 'value' => array( '', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => true, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'mandatory_ancestor' => 'amp-story', 'requires_extension' => array( 'amp-video', ), 'spec_name' => 'amp-story >> amp-video', 'spec_url' => 'https://amp.dev/documentation/components/amp-video/', ), ), ), 'amp-video-iframe' => array( array( 'attr_spec_list' => array( 'album' => array(), 'alt' => array(), 'artist' => array(), 'artwork' => array(), 'attribution' => array(), 'autoplay' => array( 'value' => array( '', ), ), 'data-amp-bind-src' => array(), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'implements-media-session' => array( 'value' => array( '', ), ), 'implements-rotate-to-fullscreen' => array( 'value' => array( '', ), ), 'lightbox' => array(), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'poster' => array(), 'referrerpolicy' => array(), 'rotate-to-fullscreen' => array( 'value' => array( '', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 9, 1, 4, ), ), 'requires_extension' => array( 'amp-video-iframe', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-video-iframe/', ), ), ), 'amp-vimeo' => array( array( 'attr_spec_list' => array( 'autoplay' => array( 'value' => array( '', ), ), 'data-videoid' => array( 'mandatory' => true, 'value_regex' => '[0-9]+', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-vimeo', ), ), ), ), 'amp-vine' => array( array( 'attr_spec_list' => array( 'data-vineid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-vine', ), ), ), ), 'amp-viqeo-player' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'data-profileid' => array( 'mandatory' => true, 'value_regex' => '[0-9a-f]*', ), 'data-videoid' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-viqeo-player', ), ), ), ), 'amp-vk' => array( array( 'attr_spec_list' => array( 'data-embedtype' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, 7, 4, ), ), 'requires_extension' => array( 'amp-vk', ), ), ), ), 'amp-web-push' => array( array( 'attr_spec_list' => array( 'helper-iframe-url' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'id' => array( 'mandatory' => true, 'value' => array( 'amp-web-push', ), ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'permission-dialog-url' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), 'service-worker-scope' => array( 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'service-worker-url' => array( 'mandatory' => true, 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 1, ), ), 'requires_extension' => array( 'amp-web-push', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-web-push/', ), ), ), 'amp-web-push-widget' => array( array( 'attr_spec_list' => array( 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'visibility' => array( 'mandatory' => true, 'value' => array( 'blocked', 'subscribed', 'unsubscribed', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 2, ), ), 'requires_extension' => array( 'amp-web-push', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-web-push/', ), ), ), 'amp-wistia-player' => array( array( 'attr_spec_list' => array( 'data-media-hashed-id' => array( 'mandatory' => true, 'value_regex' => '[0-9a-zA-Z]+', ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), 'rotate-to-fullscreen' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 4, ), ), 'requires_extension' => array( 'amp-wistia-player', ), ), ), ), 'amp-yotpo' => array( array( 'attr_spec_list' => array( 'data-app-key' => array( 'mandatory' => true, ), 'data-widget-type' => array( 'mandatory' => true, ), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'requires_extension' => array( 'amp-yotpo', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-yotpo/', ), ), ), 'amp-youtube' => array( array( 'attr_spec_list' => array( 'autoplay' => array(), 'credentials' => array( 'value_casei' => array( 'include', 'omit', ), ), 'data-amp-bind-data-videoid' => array(), 'data-live-channelid' => array( 'value_regex' => '[^=/?:]+', ), 'data-videoid' => array( 'value_regex' => '[^=/?:]+', ), 'dock' => array( 'requires_extension' => array( 'amp-video-docking', ), ), 'lightbox' => array(), 'lightbox-thumbnail-id' => array( 'value_regex_casei' => '^[a-z][a-z\\d_-]*', ), 'loop' => array(), 'media' => array(), 'noloading' => array( 'value' => array( '', ), ), ), 'tag_spec' => array( 'amp_layout' => array( 'supported_layouts' => array( 6, 2, 3, 7, 1, 4, ), ), 'mandatory_oneof' => array( 'data-live-channelid', 'data-videoid', ), 'requires_extension' => array( 'amp-youtube', ), ), ), ), '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( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'data', 'https', ), ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-audio', 'spec_url' => 'https://amp.dev/documentation/components/amp-audio/', ), ), ), 'b' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'base' => array( array( 'attr_spec_list' => array( 'href' => array( 'value' => array( '/', ), ), 'target' => array( 'value_casei' => array( '_blank', '_self', '_top', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'unique' => true, ), ), ), '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(), ), ), 'blockquote' => array( array( 'attr_spec_list' => array( 'align' => array(), 'cite' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'protocol' => array( 'http', 'https', ), ), ), ), 'tag_spec' => array(), ), ), 'body' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'html', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), ), 'br' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'button' => array( array( 'attr_spec_list' => array( 'data-amp-bind-disabled' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'disabled' => array( 'value' => array( '', ), ), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'open-button' => array( 'value' => array( '', ), ), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-app-banner', 'spec_name' => 'amp-app-banner button[open-button]', ), ), array( 'attr_spec_list' => array( 'disabled' => array( 'value' => array( '', ), ), 'load-more-clickable' => array( 'dispatch_key' => 1, 'mandatory' => true, 'value' => array( '', ), ), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'role' => array(), 'tabindex' => array(), 'type' => array(), 'value' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-list-load-more', 'requires_extension' => array( 'amp-list', ), 'spec_name' => 'amp-list-load-more button[load-more-clickable]', ), ), array( 'attr_spec_list' => array( 'amp-nested-submenu-close' => array(), 'amp-nested-submenu-open' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-nested-menu', 'spec_name' => 'button amp-nested-menu', ), ), ), 'canvas' => array( array( 'attr_spec_list' => array( 'height' => array(), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-script', 'requires_extension' => array( 'amp-script', ), 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), ), 'caption' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'center' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'circle' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'cite' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'clippath' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#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( 'spec_url' => 'https://amp.dev/documentation/components/amp-form/', ), ), ), 'dd' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'defs' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'del' => array( array( 'attr_spec_list' => array( 'cite' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'protocol' => array( 'http', 'https', ), ), ), 'datetime' => array(), ), 'tag_spec' => array(), ), ), 'desc' => array( array( 'attr_spec_list' => array( 'style' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'details' => array( array( 'attr_spec_list' => array( 'data-amp-bind-open' => array(), 'open' => array( 'value' => array( '', ), ), ), 'tag_spec' => array(), ), ), 'dfn' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'dir' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'div' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'align' => array(), 'verify-error' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [verify-error]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'template' => array( 'mandatory' => true, ), 'verify-error' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [verify-error][template]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submitting' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [submitting]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submitting' => array( 'mandatory' => true, ), 'template' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [submitting][template]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-success' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [submit-success]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-success' => array( 'mandatory' => true, ), 'template' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [submit-success][template]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-error' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [submit-error]', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'submit-error' => array( 'mandatory' => true, ), 'template' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form', 'spec_name' => 'FORM DIV [submit-error][template]', ), ), array( 'attr_spec_list' => array( 'first' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-image-slider', 'spec_name' => 'AMP-IMAGE-SLIDER > DIV [first]', 'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider/', ), ), array( 'attr_spec_list' => array( 'second' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-image-slider', 'spec_name' => 'AMP-IMAGE-SLIDER > DIV [second]', 'spec_url' => 'https://amp.dev/documentation/components/amp-image-slider/', ), ), array( 'attr_spec_list' => array( 'align' => array(), 'fetch-error' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-list', 'spec_name' => 'AMP-LIST DIV [fetch-error]', ), ), array( 'attr_spec_list' => array( 'amp-nested-submenu' => array( 'dispatch_key' => 2, ), 'amp-nested-submenu-close' => array( 'dispatch_key' => 2, ), 'amp-nested-submenu-open' => array( 'dispatch_key' => 2, ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-accordion', ), 'mandatory_ancestor' => 'amp-nested-menu', 'mandatory_oneof' => array( 'amp-nested-submenu', 'amp-nested-submenu-close', 'amp-nested-submenu-open', ), 'spec_name' => 'div amp-nested-menu', ), ), ), '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(), '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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'em' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'feblend' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => array(), 'in2' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'mode' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fecolormatrix' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => 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(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'type' => array(), 'unicode-bidi' => array(), 'values' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fecomponenttransfer' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fecomposite' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => array(), 'in2' => array(), 'k1' => array(), 'k2' => array(), 'k3' => array(), 'k4' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'operator' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'feconvolvematrix' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => array(), 'bias' => 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(), 'divisor' => array(), 'dominant-baseline' => array(), 'edgemode' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => array(), 'kernelmatrix' => array(), 'kernelunitlength' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'order' => array(), 'overflow' => array(), 'pointer-events' => array(), 'preservealpha' => array(), 'result' => 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(), 'style' => array(), 'targetx' => array(), 'targety' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fediffuselighting' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'diffuseconstant' => 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(), 'focusable' => 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(), 'in' => array(), 'kernelunitlength' => 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(), 'result' => 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(), 'style' => array(), 'surfacescale' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fedisplacementmap' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => array(), 'in2' => 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(), 'result' => array(), 'scale' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xchannelselector' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), 'ychannelselector' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fedistantlight' => array( array( 'attr_spec_list' => array( 'azimuth' => array(), 'elevation' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fedropshadow' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'result' => array(), 'shape-rendering' => array(), 'stddeviation' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'mandatory_parent' => 'filter', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'feflood' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fefunca' => array( array( 'attr_spec_list' => array( 'amplitude' => array(), 'exponent' => array(), 'intercept' => array(), 'offset' => array(), 'slope' => array(), 'table' => array(), 'tablevalues' => array(), 'type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'mandatory_parent' => 'fecomponenttransfer', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fefuncb' => array( array( 'attr_spec_list' => array( 'amplitude' => array(), 'exponent' => array(), 'intercept' => array(), 'offset' => array(), 'slope' => array(), 'table' => array(), 'tablevalues' => array(), 'type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'mandatory_parent' => 'fecomponenttransfer', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fefuncg' => array( array( 'attr_spec_list' => array( 'amplitude' => array(), 'exponent' => array(), 'intercept' => array(), 'offset' => array(), 'slope' => array(), 'table' => array(), 'tablevalues' => array(), 'type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'mandatory_parent' => 'fecomponenttransfer', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fefuncr' => array( array( 'attr_spec_list' => array( 'amplitude' => array(), 'exponent' => array(), 'intercept' => array(), 'offset' => array(), 'slope' => array(), 'table' => array(), 'tablevalues' => array(), 'type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'mandatory_parent' => 'fecomponenttransfer', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fegaussianblur' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'edgemode' => array(), 'enable-background' => array(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => 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(), 'result' => array(), 'shape-rendering' => array(), 'stddeviation' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'femerge' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'femergenode' => array( array( 'attr_spec_list' => array( 'in' => array(), 'style' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'femorphology' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => array(), 'kerning' => array(), 'letter-spacing' => array(), 'lighting-color' => array(), 'marker-end' => array(), 'marker-mid' => array(), 'marker-start' => array(), 'mask' => array(), 'opacity' => array(), 'operator' => array(), 'overflow' => array(), 'pointer-events' => array(), 'radius' => array(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'feoffset' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'in' => 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(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fepointlight' => array( array( 'attr_spec_list' => array( 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), 'z' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fespecularlighting' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => array(), 'kernelunitlength' => 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(), 'result' => array(), 'shape-rendering' => array(), 'specularconstant' => array(), 'specularexponent' => 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(), 'style' => array(), 'surfacescale' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fespotlight' => array( array( 'attr_spec_list' => array( 'limitingconeangle' => array(), 'pointsatx' => array(), 'pointsaty' => array(), 'pointsatz' => array(), 'specularexponent' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), 'z' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fetile' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'in' => 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(), 'result' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'feturbulence' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'basefrequency' => array(), 'baseline-shift' => 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(), 'fill' => array(), 'fill-opacity' => array(), 'fill-rule' => array(), 'filter' => array(), 'flood-color' => array(), 'flood-opacity' => array(), 'focusable' => 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(), 'numoctaves' => array(), 'opacity' => array(), 'overflow' => array(), 'pointer-events' => array(), 'result' => array(), 'seed' => array(), 'shape-rendering' => array(), 'stitchtiles' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'type' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'fieldset' => array( array( 'attr_spec_list' => array( 'data-amp-bind-disabled' => array(), 'disabled' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), ), '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(), '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(), 'focusable' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'footer' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'form' => array( array( 'attr_spec_list' => array( 'accept' => array(), 'accept-charset' => array(), 'action' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'action-xhr' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'autocomplete' => array(), 'custom-validation-reporting' => array( 'value' => array( 'as-you-go', 'interact-and-submit', 'show-all-on-submit', 'show-first-on-submit', ), ), 'enctype' => array(), 'method' => array( 'value_casei' => array( 'get', ), ), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_POSITION_CONTAINED_BY|DOCUMENT_POSITION_CONTAINS|DOCUMENT_POSITION_DISCONNECTED|DOCUMENT_POSITION_FOLLOWING|DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|DOCUMENT_POSITION_PRECEDING|DOCUMENT_TYPE_NODE|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|URL|URLUnencoded|__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|activeElement|addEventListener|adoptNode|alinkColor|all|anchors|append|appendChild|applets|baseURI|bgColor|body|captureEvents|caretPositionFromPoint|caretRangeFromPoint|characterSet|charset|childElementCount|childNodes|children|clear|cloneNode|close|compareDocumentPosition|compatMode|constructor|contains|contentType|cookie|createAttribute|createAttributeNS|createCDATASection|createComment|createDocumentFragment|createElement|createElementNS|createEvent|createExpression|createNSResolver|createNodeIterator|createProcessingInstruction|createRange|createTextNode|createTreeWalker|currentScript|defaultView|designMode|dir|dispatchEvent|doctype|documentElement|documentURI|domain|elementFromPoint|elementsFromPoint|embeds|enableStyleSheetsForSet|evaluate|execCommand|execCommandShowHelp|exitFullscreen|exitPictureInPicture|exitPointerLock|fgColor|firstChild|firstElementChild|focus|fonts|forms|fullscreen|fullscreenElement|fullscreenEnabled|getCSSCanvasContext|getElementById|getElementsByClassName|getElementsByName|getElementsByTagName|getElementsByTagNameNS|getOverrideStyle|getRootNode|getSelection|hasChildNodes|hasFocus|hasOwnProperty|hasStorageAccess|head|hidden|images|implementation|importNode|inputEncoding|insertBefore|isConnected|isDefaultNamespace|isEqualNode|isPrototypeOf|isSameNode|l10n|lastChild|lastElementChild|lastModified|lastStyleSheetSet|linkColor|links|location|lookupNamespaceURI|lookupPrefix|mozCancelFullScreen|mozFullScreen|mozFullScreenElement|mozFullScreenEnabled|mozSetImageElement|msCSSOMElementFloatMetrics|msCapsLockWarningOff|msElementsFromPoint|msElementsFromRect|nextSibling|nodeName|nodeType|nodeValue|normalize|onabort|onactivate|onafterscriptexecute|onanimationcancel|onanimationend|onanimationiteration|onanimationstart|onauxclick|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeinput|onbeforepaste|onbeforescriptexecute|onblur|oncancel|oncanplay|oncanplaythrough|onchange|onclick|onclose|oncontextmenu|oncopy|oncuechange|oncut|ondblclick|ondeactivate|ondrag|ondragend|ondragenter|ondragexit|ondragleave|ondragover|ondragstart|ondrop|ondurationchange|onemptied|onended|onerror|onfocus|onfreeze|onfullscreenchange|onfullscreenerror|ongotpointercapture|oninput|oninvalid|onkeydown|onkeypress|onkeyup|onload|onloadeddata|onloadedmetadata|onloadend|onloadstart|onlostpointercapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmouseout|onmouseover|onmouseup|onmousewheel|onmozfullscreenchange|onmozfullscreenerror|onmscontentzoom|onmsgesturechange|onmsgesturedoubletap|onmsgestureend|onmsgesturehold|onmsgesturestart|onmsgesturetap|onmsinertiastart|onmsmanipulationstatechanged|onmssitemodejumplistitemremoved|onmsthumbnailclick|onpaste|onpause|onplay|onplaying|onpointercancel|onpointerdown|onpointerenter|onpointerleave|onpointerlockchange|onpointerlockerror|onpointermove|onpointerout|onpointerover|onpointerup|onprogress|onratechange|onreadystatechange|onrejectionhandled|onreset|onresize|onresume|onscroll|onsearch|onseeked|onseeking|onselect|onselectionchange|onselectstart|onshow|onstalled|onstop|onsubmit|onsuspend|ontimeupdate|ontoggle|ontransitioncancel|ontransitionend|ontransitionrun|ontransitionstart|onunhandledrejection|onvisibilitychange|onvolumechange|onwaiting|onwebkitanimationend|onwebkitanimationiteration|onwebkitanimationstart|onwebkitfullscreenchange|onwebkitfullscreenerror|onwebkitmouseforcechanged|onwebkitmouseforcedown|onwebkitmouseforceup|onwebkitmouseforcewillbegin|onwebkittransitionend|onwheel|open|origin|ownerDocument|parentElement|parentNode|pictureInPictureElement|pictureInPictureEnabled|plugins|pointerLockElement|preferredStyleSheetSet|prepend|previousSibling|propertyIsEnumerable|queryCommandEnabled|queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandText|queryCommandValue|querySelector|querySelectorAll|readyState|referrer|registerElement|releaseCapture|releaseEvents|removeChild|removeEventListener|replaceChild|requestStorageAccess|rootElement|scripts|scrollingElement|selectedStyleSheetSet|styleSheetSets|styleSheets|textContent|title|toLocaleString|toSource|toString|updateSettings|valueOf|visibilityState|vlinkColor|wasDiscarded|webkitCancelFullScreen|webkitCurrentFullScreenElement|webkitExitFullscreen|webkitFullScreenKeyboardInputAllowed|webkitFullscreenElement|webkitFullscreenEnabled|webkitHidden|webkitIsFullScreen|webkitVisibilityState|write|writeln|xmlEncoding|xmlStandalone|xmlVersion)(\\s|$)', ), 'novalidate' => array(), 'target' => array( 'mandatory' => true, 'value_casei' => array( '_blank', '_top', ), ), 'verify-xhr' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-form', ), 'spec_name' => 'FORM [method=GET]', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accept-charset' => array(), 'action-xhr' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'autocomplete' => array(), 'custom-validation-reporting' => array( 'value' => array( 'as-you-go', 'interact-and-submit', 'show-all-on-submit', 'show-first-on-submit', ), ), 'enctype' => array(), 'method' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'post', ), ), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_POSITION_CONTAINED_BY|DOCUMENT_POSITION_CONTAINS|DOCUMENT_POSITION_DISCONNECTED|DOCUMENT_POSITION_FOLLOWING|DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|DOCUMENT_POSITION_PRECEDING|DOCUMENT_TYPE_NODE|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|URL|URLUnencoded|__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|activeElement|addEventListener|adoptNode|alinkColor|all|anchors|append|appendChild|applets|baseURI|bgColor|body|captureEvents|caretPositionFromPoint|caretRangeFromPoint|characterSet|charset|childElementCount|childNodes|children|clear|cloneNode|close|compareDocumentPosition|compatMode|constructor|contains|contentType|cookie|createAttribute|createAttributeNS|createCDATASection|createComment|createDocumentFragment|createElement|createElementNS|createEvent|createExpression|createNSResolver|createNodeIterator|createProcessingInstruction|createRange|createTextNode|createTreeWalker|currentScript|defaultView|designMode|dir|dispatchEvent|doctype|documentElement|documentURI|domain|elementFromPoint|elementsFromPoint|embeds|enableStyleSheetsForSet|evaluate|execCommand|execCommandShowHelp|exitFullscreen|exitPictureInPicture|exitPointerLock|fgColor|firstChild|firstElementChild|focus|fonts|forms|fullscreen|fullscreenElement|fullscreenEnabled|getCSSCanvasContext|getElementById|getElementsByClassName|getElementsByName|getElementsByTagName|getElementsByTagNameNS|getOverrideStyle|getRootNode|getSelection|hasChildNodes|hasFocus|hasOwnProperty|hasStorageAccess|head|hidden|images|implementation|importNode|inputEncoding|insertBefore|isConnected|isDefaultNamespace|isEqualNode|isPrototypeOf|isSameNode|l10n|lastChild|lastElementChild|lastModified|lastStyleSheetSet|linkColor|links|location|lookupNamespaceURI|lookupPrefix|mozCancelFullScreen|mozFullScreen|mozFullScreenElement|mozFullScreenEnabled|mozSetImageElement|msCSSOMElementFloatMetrics|msCapsLockWarningOff|msElementsFromPoint|msElementsFromRect|nextSibling|nodeName|nodeType|nodeValue|normalize|onabort|onactivate|onafterscriptexecute|onanimationcancel|onanimationend|onanimationiteration|onanimationstart|onauxclick|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeinput|onbeforepaste|onbeforescriptexecute|onblur|oncancel|oncanplay|oncanplaythrough|onchange|onclick|onclose|oncontextmenu|oncopy|oncuechange|oncut|ondblclick|ondeactivate|ondrag|ondragend|ondragenter|ondragexit|ondragleave|ondragover|ondragstart|ondrop|ondurationchange|onemptied|onended|onerror|onfocus|onfreeze|onfullscreenchange|onfullscreenerror|ongotpointercapture|oninput|oninvalid|onkeydown|onkeypress|onkeyup|onload|onloadeddata|onloadedmetadata|onloadend|onloadstart|onlostpointercapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmouseout|onmouseover|onmouseup|onmousewheel|onmozfullscreenchange|onmozfullscreenerror|onmscontentzoom|onmsgesturechange|onmsgesturedoubletap|onmsgestureend|onmsgesturehold|onmsgesturestart|onmsgesturetap|onmsinertiastart|onmsmanipulationstatechanged|onmssitemodejumplistitemremoved|onmsthumbnailclick|onpaste|onpause|onplay|onplaying|onpointercancel|onpointerdown|onpointerenter|onpointerleave|onpointerlockchange|onpointerlockerror|onpointermove|onpointerout|onpointerover|onpointerup|onprogress|onratechange|onreadystatechange|onrejectionhandled|onreset|onresize|onresume|onscroll|onsearch|onseeked|onseeking|onselect|onselectionchange|onselectstart|onshow|onstalled|onstop|onsubmit|onsuspend|ontimeupdate|ontoggle|ontransitioncancel|ontransitionend|ontransitionrun|ontransitionstart|onunhandledrejection|onvisibilitychange|onvolumechange|onwaiting|onwebkitanimationend|onwebkitanimationiteration|onwebkitanimationstart|onwebkitfullscreenchange|onwebkitfullscreenerror|onwebkitmouseforcechanged|onwebkitmouseforcedown|onwebkitmouseforceup|onwebkitmouseforcewillbegin|onwebkittransitionend|onwheel|open|origin|ownerDocument|parentElement|parentNode|pictureInPictureElement|pictureInPictureEnabled|plugins|pointerLockElement|preferredStyleSheetSet|prepend|previousSibling|propertyIsEnumerable|queryCommandEnabled|queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandText|queryCommandValue|querySelector|querySelectorAll|readyState|referrer|registerElement|releaseCapture|releaseEvents|removeChild|removeEventListener|replaceChild|requestStorageAccess|rootElement|scripts|scrollingElement|selectedStyleSheetSet|styleSheetSets|styleSheets|textContent|title|toLocaleString|toSource|toString|updateSettings|valueOf|visibilityState|vlinkColor|wasDiscarded|webkitCancelFullScreen|webkitCurrentFullScreenElement|webkitExitFullscreen|webkitFullScreenKeyboardInputAllowed|webkitFullscreenElement|webkitFullscreenEnabled|webkitHidden|webkitIsFullScreen|webkitVisibilityState|write|writeln|xmlEncoding|xmlStandalone|xmlVersion)(\\s|$)', ), 'novalidate' => array(), 'target' => array( 'value_casei' => array( '_blank', '_top', ), ), 'verify-xhr' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'protocol' => array( 'https', ), ), ), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'amp-app-banner', ), 'requires_extension' => array( 'amp-form', ), 'spec_name' => 'FORM [method=POST]', ), ), ), 'g' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'glyph' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'arabic-form' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'vert-adv-y' => array(), 'vert-origin-x' => array(), 'vert-origin-y' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'glyphref' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#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(), ), array( 'attr_spec_list' => array( 'amp-nested-submenu-close' => array(), 'amp-nested-submenu-open' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-nested-menu', 'spec_name' => 'h2 amp-nested-menu', ), ), ), 'h3' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'amp-nested-submenu-close' => array(), 'amp-nested-submenu-open' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-nested-menu', 'spec_name' => 'h3 amp-nested-menu', ), ), ), 'h4' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'amp-nested-submenu-close' => array(), 'amp-nested-submenu-open' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-nested-menu', 'spec_name' => 'h4 amp-nested-menu', ), ), ), 'h5' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'amp-nested-submenu-close' => array(), 'amp-nested-submenu-open' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-nested-menu', 'spec_name' => 'h5 amp-nested-menu', ), ), ), 'h6' => array( array( 'attr_spec_list' => array( 'align' => array(), ), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'amp-nested-submenu-close' => array(), 'amp-nested-submenu-open' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-nested-menu', 'spec_name' => 'h6 amp-nested-menu', ), ), ), 'head' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'html', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), ), 'header' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'hgroup' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'hkern' => array( array( 'attr_spec_list' => array( 'g1' => array(), 'g2' => array(), 'k' => array(), 'style' => array(), 'u1' => array(), 'u2' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'hr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'html' => array( array( 'attr_spec_list' => array( 'data-amp-autocomplete-opt-in' => array( 'disallowed_value_regex' => 'false', 'value' => array( 'false', ), ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => '!doctype', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), ), 'i' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'iframe' => array( array( 'attr_spec_list' => array( 'frameborder' => array( 'value' => array( '0', '1', ), ), 'height' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'referrerpolicy' => array(), 'resizable' => array( 'value' => array( '', ), ), 'sandbox' => array(), 'scrolling' => array( 'value' => array( 'auto', 'yes', 'no', ), ), 'src' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_relative' => false, 'protocol' => array( 'data', 'https', ), ), ), 'srcdoc' => array(), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-iframe', 'mandatory_oneof' => array( 'src', 'srcdoc', ), 'spec_url' => 'https://amp.dev/documentation/components/amp-iframe/', ), ), ), 'image' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'disallowed_value_regex' => '(^|\\s)data:image\\/svg\\+xml', 'value_url' => array( 'allow_empty' => false, 'protocol' => array( 'data', 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'img' => array( array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'border' => array(), 'decoding' => array( 'value' => array( 'async', 'auto', 'sync', ), ), 'height' => array(), 'importance' => array(), 'intrinsicsize' => array(), 'ismap' => array(), 'loading' => array(), 'longdesc' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'sizes' => array(), 'src' => array( 'alternative_names' => array( 'srcset', ), 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'data', 'http', 'https', ), ), ), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'noscript', 'mandatory_ancestor_suggested_alternative' => 'amp-img', 'spec_name' => 'noscript > img', 'spec_url' => 'https://amp.dev/documentation/components/amp-img/', ), ), array( 'attr_spec_list' => array( 'alt' => array(), 'attribution' => array(), 'data-amp-story-player-poster-img' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( '', ), ), 'decoding' => array( 'value' => array( 'async', ), ), 'height' => array( 'value_regex' => '[0-9]+', ), 'loading' => array( 'mandatory' => true, 'value' => array( 'lazy', ), ), 'sizes' => array(), 'src' => array( 'alternative_names' => array( 'srcset', ), 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'data', 'http', 'https', ), ), ), 'width' => array( 'value_regex' => '[0-9]+', ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'amp-story-player', 'mandatory_parent' => 'a', 'spec_name' => 'amp-story-player > img', 'spec_url' => 'https://amp.dev/documentation/components/amp-story-player/', ), ), ), 'input' => array( array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'no-verify' => array( 'value' => array( '', ), ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'disallowed_value_regex' => '(^|\\s)(file|image|password|)(\\s|$)', ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://amp.dev/documentation/components/amp-form/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'no-verify' => array( 'value' => array( '', ), ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'file', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form [method=post]', 'spec_name' => 'INPUT [type=file]', 'spec_url' => 'https://amp.dev/documentation/components/amp-form/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'password', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'form [method=post]', 'spec_name' => 'INPUT [type=password]', 'spec_url' => 'https://amp.dev/documentation/components/amp-form/', ), ), array( 'attr_spec_list' => array( 'type' => array( 'mandatory' => true, 'value_casei' => array( 'search', 'text', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'amp-autocomplete', 'requires_extension' => array( 'amp-form', 'amp-autocomplete', ), 'spec_name' => 'amp-autocomplete > input', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'mask' => array( 'disallowed_value_regex' => '(payment-card|date-dd-mm-yyyy|date-mm-dd-yyyy|date-mm-yy|date-yyyy-mm-dd)', 'dispatch_key' => 1, 'mandatory' => true, ), 'mask-output' => array(), 'mask-trim-zeros' => array( 'value_regex' => '\\d+', ), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'value' => array( 'text', 'tel', 'search', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-inputmask', ), 'spec_name' => 'input [mask] (custom mask)', 'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'mask' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'payment-card', ), ), 'mask-output' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'value' => array( 'text', 'tel', 'search', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-inputmask', ), 'spec_name' => 'input [mask=payment-card]', 'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'mask' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'date-dd-mm-yyyy', ), ), 'mask-output' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'value' => array( 'text', 'tel', 'search', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-inputmask', ), 'spec_name' => 'input [mask=date-dd-mm-yyyy]', 'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'mask' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'date-mm-dd-yyyy', ), ), 'mask-output' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'value' => array( 'text', 'tel', 'search', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-inputmask', ), 'spec_name' => 'input [mask=date-mm-dd-yyyy]', 'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'mask' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'date-mm-yy', ), ), 'mask-output' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'value' => array( 'text', 'tel', 'search', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-inputmask', ), 'spec_name' => 'input [mask=date-mm-yy]', 'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/', ), ), array( 'attr_spec_list' => array( 'accept' => array(), 'accesskey' => array(), 'autocomplete' => array(), 'autofocus' => array(), 'checked' => array(), 'data-amp-bind-accept' => array(), 'data-amp-bind-accesskey' => array(), 'data-amp-bind-autocomplete' => array(), 'data-amp-bind-checked' => array(), 'data-amp-bind-disabled' => array(), 'data-amp-bind-height' => array(), 'data-amp-bind-inputmode' => array(), 'data-amp-bind-max' => array(), 'data-amp-bind-maxlength' => array(), 'data-amp-bind-min' => array(), 'data-amp-bind-minlength' => array(), 'data-amp-bind-multiple' => array(), 'data-amp-bind-pattern' => array(), 'data-amp-bind-placeholder' => array(), 'data-amp-bind-readonly' => array(), 'data-amp-bind-required' => array(), 'data-amp-bind-selectiondirection' => array(), 'data-amp-bind-size' => array(), 'data-amp-bind-spellcheck' => array(), 'data-amp-bind-step' => array(), 'data-amp-bind-type' => array(), 'data-amp-bind-value' => array(), 'data-amp-bind-width' => array(), 'disabled' => array(), 'enterkeyhint' => array(), 'height' => array(), 'inputmode' => array(), 'list' => array(), 'mask' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'date-yyyy-mm-dd', ), ), 'mask-output' => array(), 'max' => array(), 'maxlength' => array(), 'min' => array(), 'minlength' => array(), 'multiple' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), 'pattern' => array(), 'placeholder' => array(), 'readonly' => array(), 'required' => array(), 'selectiondirection' => array(), 'size' => array(), 'spellcheck' => array(), 'step' => array(), 'tabindex' => array(), 'type' => array( 'value' => array( 'text', 'tel', 'search', ), ), 'value' => array(), 'width' => array(), ), 'tag_spec' => array( 'requires_extension' => array( 'amp-inputmask', ), 'spec_name' => 'input [mask=date-yyyy-mm-dd]', 'spec_url' => 'https://amp.dev/documentation/components/amp-inputmask/', ), ), ), 'ins' => array( array( 'attr_spec_list' => array( 'cite' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'protocol' => array( 'http', 'https', ), ), ), '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://amp.dev/documentation/components/amp-form/', ), ), ), '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(), '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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x1' => array(), 'x2' => 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://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'lineargradient' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x1' => array(), 'x2' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => 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://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'link' => array( array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => array(), 'href' => array(), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'disallowed_value_regex' => '(^|\\s)(canonical|components|import|manifest|modulepreload|preload|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://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'canonical', ), ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'link rel=canonical', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'disallowed_value_regex' => '__amp_source_origin', 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'hreflang' => array(), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'manifest', ), ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'link rel=manifest', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'as' => array( 'mandatory' => true, 'value' => array( 'script', ), ), 'crossorigin' => array( 'mandatory' => true, 'value' => array( 'anonymous', ), ), 'href' => array( 'mandatory' => true, 'value_regex' => '.*\\.mjs$', ), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'modulepreload', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'link rel=modulepreload', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'as' => array(), 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => array(), 'href' => array(), 'hreflang' => array(), 'imagesizes' => array(), 'imagesrcset' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'protocol' => array( 'http', 'https', ), ), ), 'media' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'preload', ), ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'disallowed_ancestor' => array( 'template', ), 'spec_name' => 'link rel=preload', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'async' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, 'value_regex' => 'https://cdn\\.materialdesignicons\\.com/([0-9]+\\.?)+/css/materialdesignicons\\.min\\.css|https://cloud\\.typography\\.com/[0-9]*/[0-9]*/css/fonts\\.css|https://fast\\.fonts\\.net/.*|https://fonts\\.googleapis\\.com/css2?\\?.*|https://fonts\\.googleapis\\.com/icon\\?.*|https://fonts\\.googleapis\\.com/earlyaccess/.*\\.css|https://maxcdn\\.bootstrapcdn\\.com/font-awesome/([0-9]+\\.?)+/css/font-awesome\\.min\\.css(\\?.*)?|https://(use|pro|kit)\\.fontawesome\\.com/releases/v([0-9]+\\.?)+/css/[0-9a-zA-Z-]+\\.css|https://(use|pro|kit)\\.fontawesome\\.com/[0-9a-zA-Z-]+\\.css|https://use\\.typekit\\.net/[\\w\\p{L}\\p{N}_]+\\.css', ), 'integrity' => array(), 'media' => array(), 'nonce' => array(), 'rel' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'stylesheet', ), ), 'type' => array( 'value_casei' => array( 'text/css', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'link rel=stylesheet for fonts', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#custom-fonts', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'itemprop' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'sameas', ), ), 'media' => array(), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link itemprop=sameAs', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => 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://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'charset' => array( 'value_casei' => array( 'utf-8', ), ), 'color' => array(), 'crossorigin' => array(), 'href' => array( 'mandatory' => true, ), 'hreflang' => array(), 'media' => array(), 'property' => array( 'mandatory' => true, ), 'sizes' => array(), 'target' => array(), 'type' => array(), ), 'tag_spec' => array( 'spec_name' => 'link property=', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), ), 'listing' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), '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(), '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(), 'focusable' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'viewbox' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'mask' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'meta' => array( array( 'attr_spec_list' => array( 'charset' => array( 'dispatch_key' => 1, 'mandatory' => true, 'value_casei' => array( 'utf-8', ), ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'meta charset=utf-8', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_properties' => array( 'height' => array(), 'initial-scale' => array(), 'maximum-scale' => array(), 'minimum-scale' => array(), 'shrink-to-fit' => array(), 'user-scalable' => array(), 'viewport-fit' => array(), 'width' => array( 'mandatory' => true, 'value' => 'device-width', ), ), ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'viewport', ), ), ), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'meta name=viewport', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_properties' => array( 'chrome' => array( 'value' => '1', ), 'ie' => array( 'value' => 'edge', ), ), ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'x-ua-compatible', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=X-UA-Compatible', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_regex' => '.*app-id=.*', ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'apple-itunes-app', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=apple-itunes-app', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-experiments-opt-in', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-experiments-opt-in', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_url' => array( 'protocol' => array( 'https', ), ), ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-3p-iframe-src', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-3p-iframe-src', 'spec_url' => 'https://amp.dev/documentation/components/amp-ad/', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-consent-blocking', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-consent-blocking', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-experiment-token', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-experiment-token', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-link-variable-allowed-origin', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-link-variable-allowed-origin', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-google-client-id-api', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-google-clientid-id-api', ), ), array( 'attr_spec_list' => array( 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-ad-doubleclick-sra', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-ad-doubleclick-sra', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-list-load-more', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-list-load-more', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-recaptcha-input', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-recaptcha-input', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-script-src', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-script-src', ), ), array( 'attr_spec_list' => array( 'content' => array(), 'itemprop' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(amp-.*|amp4ads-.*|apple-itunes-app|content-disposition|revisit-after|viewport)(\\s|$)', ), 'property' => array(), 'scheme' => array(), ), 'tag_spec' => array( 'spec_name' => 'meta name= and content=', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => array( 'text/html; charset=utf-8', ), ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'content-type', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=Content-Type', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'content-language', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=content-language', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'pics-label', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=pics-label', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'imagetoolbar', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=imagetoolbar', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => array( 'text/css', ), ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'content-style-type', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=Content-Style-Type', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => array( 'text/javascript', ), ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'content-script-type', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=Content-Script-Type', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'origin-trial', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=origin-trial', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'resource-type', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=resource-type', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, 'value_casei' => array( 'off', 'on', ), ), 'http-equiv' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'x-dns-prefetch-control', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta http-equiv=x-dns-prefetch-control', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#html-tags', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-ad-enable-refresh', ), ), ), 'tag_spec' => array( 'mandatory_ancestor' => 'head', 'spec_name' => 'meta name=amp-ad-enable-refresh', ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'amp-to-amp-navigation', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-to-amp-navigation', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'mandatory' => true, 'value_casei' => array( 'amp-story-generator-name', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-story-generator-name', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'content' => array( 'mandatory' => true, ), 'name' => array( 'mandatory' => true, 'value_casei' => array( 'amp-story-generator-version', ), ), ), 'tag_spec' => array( 'mandatory_parent' => 'head', 'spec_name' => 'meta name=amp-story-generator-version', 'unique' => true, ), ), ), 'metadata' => array( array( 'attr_spec_list' => array( 'style' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'meter' => array( array( 'attr_spec_list' => array( 'high' => array(), 'low' => array(), 'max' => array(), 'min' => array(), 'optimum' => array(), 'value' => array(), ), 'tag_spec' => array(), ), ), 'multicol' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'nav' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), array( 'attr_spec_list' => array( 'toolbar' => array( 'dispatch_key' => 1, 'mandatory' => true, ), 'toolbar-target' => array( 'mandatory' => true, ), ), 'tag_spec' => array( 'child_tags' => array( 'child_tag_name_oneof' => array( 'ol', 'ul', ), 'mandatory_num_child_tags' => 1, ), 'mandatory_parent' => 'amp-sidebar', 'spec_name' => 'amp-sidebar > nav', ), ), ), 'nextid' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'nobr' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'noscript' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory' => true, 'mandatory_parent' => 'head', 'spec_name' => 'noscript enclosure for boilerplate', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amp-boilerplate/?format=websites', 'unique' => true, ), ), array( 'attr_spec_list' => array(), 'tag_spec' => array( 'disallowed_ancestor' => array( 'noscript', ), 'mandatory_ancestor' => 'body', ), ), ), 'o:p' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'ol' => array( array( 'attr_spec_list' => array( 'reversed' => array( 'value' => array( '', ), ), 'start' => array( 'value_regex' => '[0-9]*', ), 'type' => array( 'value_regex' => '[1AaIi]', ), ), 'tag_spec' => array(), ), ), 'optgroup' => array( array( 'attr_spec_list' => array( 'data-amp-bind-disabled' => array(), 'data-amp-bind-label' => array(), 'disabled' => array(), 'label' => array(), ), 'tag_spec' => array( 'mandatory_parent' => 'select', 'spec_url' => 'https://amp.dev/documentation/components/amp-form/', ), ), ), 'option' => array( array( 'attr_spec_list' => array( 'data-amp-bind-disabled' => array(), 'data-amp-bind-label' => array(), 'data-amp-bind-selected' => array(), 'data-amp-bind-value' => array(), 'disabled' => array(), 'label' => array(), 'selected' => array(), 'value' => array(), ), 'tag_spec' => array( 'spec_url' => 'https://amp.dev/documentation/components/amp-form/', ), ), ), 'output' => array( array( 'attr_spec_list' => array( 'for' => array(), 'form' => array(), 'name' => array( 'disallowed_value_regex' => '(^|\\s)(__amp_\\S*|__count__|__defineGetter__|__defineSetter__|__lookupGetter__|__lookupSetter__|__noSuchMethod__|__parent__|__proto__|__AMP_\\S*|\\$p|\\$proxy|acceptCharset|addEventListener|appendChild|assignedSlot|attachShadow|baseURI|checkValidity|childElementCount|childNodes|classList|className|clientHeight|clientLeft|clientTop|clientWidth|compareDocumentPosition|computedName|computedRole|contentEditable|createShadowRoot|enqueAction|firstChild|firstElementChild|getAnimations|getAttribute|getAttributeNS|getAttributeNode|getAttributeNodeNS|getBoundingClientRect|getClientRects|getDestinationInsertionPoints|getElementsByClassName|getElementsByTagName|getElementsByTagNameNS|getRootNode|hasAttribute|hasAttributeNS|hasAttributes|hasChildNodes|hasPointerCapture|innerHTML|innerText|inputMode|insertAdjacentElement|insertAdjacentHTML|insertAdjacentText|isContentEditable|isDefaultNamespace|isEqualNode|isSameNode|lastChild|lastElementChild|lookupNamespaceURI|namespaceURI|nextElementSibling|nextSibling|nodeName|nodeType|nodeValue|offsetHeight|offsetLeft|offsetParent|offsetTop|offsetWidth|outerHTML|outerText|ownerDocument|parentElement|parentNode|previousElementSibling|previousSibling|querySelector|querySelectorAll|releasePointerCapture|removeAttribute|removeAttributeNS|removeAttributeNode|removeChild|removeEventListener|replaceChild|reportValidity|requestPointerLock|scrollHeight|scrollIntoView|scrollIntoViewIfNeeded|scrollLeft|scrollWidth|setAttribute|setAttributeNS|setAttributeNode|setAttributeNodeNS|setPointerCapture|shadowRoot|styleMap|tabIndex|tagName|textContent|toString|valueOf|(webkit|ms|moz|o)dropzone|(webkit|moz|ms|o)MatchesSelector|(webkit|moz|ms|o)RequestFullScreen|(webkit|moz|ms|o)RequestFullscreen)(\\s|$)', ), ), 'tag_spec' => array(), ), ), '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(), '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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'pattern' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'viewbox' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'picture' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array( 'mandatory_parent' => 'noscript', 'spec_url' => 'https://amp.dev/documentation/components/amp-img/', ), ), ), 'polygon' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'polyline' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'pre' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'progress' => array( array( 'attr_spec_list' => array( 'max' => array(), 'value' => array(), ), 'tag_spec' => array(), ), ), 'q' => array( array( 'attr_spec_list' => array( 'cite' => array( 'disallowed_value_regex' => '__amp_source_origin', 'value_url' => array( 'allow_empty' => true, 'protocol' => array( 'http', 'https', ), ), ), ), 'tag_spec' => array(), ), ), 'radialgradient' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => array(), 'font-family' => array(), 'font-size' => array(), 'font-size-adjust' => array(), 'font-stretch' => array(), 'font-style' => array(), 'font-variant' => array(), 'font-weight' => array(), 'fr' => 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(), 'style' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'xlink:actuate' => array(), 'xlink:arcrole' => array(), 'xlink:href' => array( 'alternative_names' => array( 'href', ), 'value_url' => array( 'allow_empty' => false, 'protocol' => array( 'http', 'https', ), ), ), 'xlink:role' => array(), 'xlink:show' => array(), 'xlink:title' => array(), 'xlink:type' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#svg', ), ), ), 'rb' => array( array( 'attr_spec_list' => array(), 'tag_spec' => array(), ), ), 'rect' => array( array( 'attr_spec_list' => array( 'alignment-baseline' => array(), 'baseline-shift' => 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(), 'focusable' => 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(), 'style' => array(), 'systemlanguage' => array(), 'text-anchor' => array(), 'text-decoration' => array(), 'text-rendering' => array(), 'transform' => array(), 'unicode-bidi' => array(), 'vector-effect' => array(), 'visibility' => array(), 'width' => array(), 'word-spacing' => array(), 'writing-mode' => array(), 'x' => array(), 'xml:lang' => array(), 'xml:space' => array(), 'xmlns' => array(), 'xmlns:xlink' => array(), 'y' => array(), ), 'tag_spec' => array( 'mandatory_ancestor' => 'svg', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#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( 'async' => array( 'mandatory' => true, 'value' => array( '', ), ), 'crossorigin' => array( 'value' => array( 'anonymous', ), ), 'nonce' => array(), 'src' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'https://cdn.ampproject.org/v0.js', ), ), 'type' => array( 'value_casei' => array( 'text/javascript', ), ), ), 'cdata' => array( 'disallowed_cdata_regex' => array( array( 'error_message' => 'contents', 'regex' => '.', ), ), ), 'tag_spec' => array( 'mandatory_alternatives' => 'amphtml engine script', 'mandatory_parent' => 'head', 'spec_name' => 'amphtml engine script', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'async' => array( 'mandatory' => true, 'value' => array( '', ), ), 'crossorigin' => array( 'value' => array( 'anonymous', ), ), 'nonce' => array(), 'src' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value' => array( 'https://cdn.ampproject.org/lts/v0.js', ), ), 'type' => array( 'value_casei' => array( 'text/javascript', ), ), ), 'cdata' => array( 'disallowed_cdata_regex' => array( array( 'error_message' => 'contents', 'regex' => '.', ), ), ), 'tag_spec' => array( 'mandatory_alternatives' => 'amphtml engine script', 'mandatory_parent' => 'head', 'spec_name' => 'amphtml engine script (LTS)', 'spec_url' => 'https://amp.dev/documentation/guides-and-tutorials/learn/spec/amphtml/#required-markup', 'unique' => true, ), ), array( 'attr_spec_list' => array( 'nonce' => array(), 'type' => array( 'dispatch_key' => 2, 'mandatory' => true, 'value_casei' => array( 'application/ld+json', ), ), ), 'cdata' => array( 'disallowed_cdata_regex' => array( array( 'error_message' => 'html comments', 'regex' => '