Skip to content

Instantly share code, notes, and snippets.

@shawninder
Last active April 15, 2016 09:06
Show Gist options
  • Save shawninder/c9a114e5a26a364580f454609be18802 to your computer and use it in GitHub Desktop.
Save shawninder/c9a114e5a26a364580f454609be18802 to your computer and use it in GitHub Desktop.
requirebin sketch
var postcss = require('postcss')
var cssnext = require('postcss-cssnext')
var test = require('tape')
var input = 'body { color: rebeccapurple; }'
var expected = 'body { color: rgb(102, 51, 153); }'
test('cssnext', function (t) {
t.plan(1)
postcss([cssnext]).process(input).then(function (result) {
t.equals(result.css, expected, 'produces the expected result')
})
})
test('running plugins against a Result object (1)', function (t) {
t.plan(1)
// first run without plugins to get a Result object
postcss([]).process(input).then(function (result) {
postcss([cssnext]).process(result)
.then(function () {
t.equals(result.css, expected, 'produces the same result')
})
})
})
test('running plugins against a Result object (2)', function (t) {
t.plan(1)
// first run without plugins to get a Result object
postcss([]).process(input).then(function (result) {
Promise.resolve(cssnext(result.root, result))
.then(function () {
t.equals(result.css, expected, 'produces the same result')
})
})
})
This file has been truncated, but you can view the full file.
setTimeout(function(){require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _container=require("./container");var _container2=_interopRequireDefault(_container);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var AtRule=function(_Container){_inherits(AtRule,_Container);function AtRule(defaults){_classCallCheck(this,AtRule);var _this=_possibleConstructorReturn(this,_Container.call(this,defaults));_this.type="atrule";return _this}AtRule.prototype.append=function append(){var _Container$prototype$;if(!this.nodes)this.nodes=[];for(var _len=arguments.length,children=Array(_len),_key=0;_key<_len;_key++){children[_key]=arguments[_key]}return(_Container$prototype$=_Container.prototype.append).call.apply(_Container$prototype$,[this].concat(children))};AtRule.prototype.prepend=function prepend(){var _Container$prototype$2;if(!this.nodes)this.nodes=[];for(var _len2=arguments.length,children=Array(_len2),_key2=0;_key2<_len2;_key2++){children[_key2]=arguments[_key2]}return(_Container$prototype$2=_Container.prototype.prepend).call.apply(_Container$prototype$2,[this].concat(children))};_createClass(AtRule,[{key:"afterName",get:function get(){(0,_warnOnce2.default)("AtRule#afterName was deprecated. Use AtRule#raws.afterName");return this.raws.afterName},set:function set(val){(0,_warnOnce2.default)("AtRule#afterName was deprecated. Use AtRule#raws.afterName");this.raws.afterName=val}},{key:"_params",get:function get(){(0,_warnOnce2.default)("AtRule#_params was deprecated. Use AtRule#raws.params");return this.raws.params},set:function set(val){(0,_warnOnce2.default)("AtRule#_params was deprecated. Use AtRule#raws.params");this.raws.params=val}}]);return AtRule}(_container2.default);exports.default=AtRule;module.exports=exports["default"]},{"./container":3,"./warn-once":22}],2:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);var _node=require("./node");var _node2=_interopRequireDefault(_node);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Comment=function(_Node){_inherits(Comment,_Node);function Comment(defaults){_classCallCheck(this,Comment);var _this=_possibleConstructorReturn(this,_Node.call(this,defaults));_this.type="comment";return _this}_createClass(Comment,[{key:"left",get:function get(){(0,_warnOnce2.default)("Comment#left was deprecated. Use Comment#raws.left");return this.raws.left},set:function set(val){(0,_warnOnce2.default)("Comment#left was deprecated. Use Comment#raws.left");this.raws.left=val}},{key:"right",get:function get(){(0,_warnOnce2.default)("Comment#right was deprecated. Use Comment#raws.right");return this.raws.right},set:function set(val){(0,_warnOnce2.default)("Comment#right was deprecated. Use Comment#raws.right");this.raws.right=val}}]);return Comment}(_node2.default);exports.default=Comment;module.exports=exports["default"]},{"./node":10,"./warn-once":22}],3:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _declaration=require("./declaration");var _declaration2=_interopRequireDefault(_declaration);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);var _comment=require("./comment");var _comment2=_interopRequireDefault(_comment);var _node=require("./node");var _node2=_interopRequireDefault(_node);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Container=function(_Node){_inherits(Container,_Node);function Container(){_classCallCheck(this,Container);return _possibleConstructorReturn(this,_Node.apply(this,arguments))}Container.prototype.push=function push(child){child.parent=this;this.nodes.push(child);return this};Container.prototype.each=function each(callback){if(!this.lastEach)this.lastEach=0;if(!this.indexes)this.indexes={};this.lastEach+=1;var id=this.lastEach;this.indexes[id]=0;if(!this.nodes)return undefined;var index=undefined,result=undefined;while(this.indexes[id]<this.nodes.length){index=this.indexes[id];result=callback(this.nodes[index],index);if(result===false)break;this.indexes[id]+=1}delete this.indexes[id];return result};Container.prototype.walk=function walk(callback){return this.each(function(child,i){var result=callback(child,i);if(result!==false&&child.walk){result=child.walk(callback)}return result})};Container.prototype.walkDecls=function walkDecls(prop,callback){if(!callback){callback=prop;return this.walk(function(child,i){if(child.type==="decl"){return callback(child,i)}})}else if(prop instanceof RegExp){return this.walk(function(child,i){if(child.type==="decl"&&prop.test(child.prop)){return callback(child,i)}})}else{return this.walk(function(child,i){if(child.type==="decl"&&child.prop===prop){return callback(child,i)}})}};Container.prototype.walkRules=function walkRules(selector,callback){if(!callback){callback=selector;return this.walk(function(child,i){if(child.type==="rule"){return callback(child,i)}})}else if(selector instanceof RegExp){return this.walk(function(child,i){if(child.type==="rule"&&selector.test(child.selector)){return callback(child,i)}})}else{return this.walk(function(child,i){if(child.type==="rule"&&child.selector===selector){return callback(child,i)}})}};Container.prototype.walkAtRules=function walkAtRules(name,callback){if(!callback){callback=name;return this.walk(function(child,i){if(child.type==="atrule"){return callback(child,i)}})}else if(name instanceof RegExp){return this.walk(function(child,i){if(child.type==="atrule"&&name.test(child.name)){return callback(child,i)}})}else{return this.walk(function(child,i){if(child.type==="atrule"&&child.name===name){return callback(child,i)}})}};Container.prototype.walkComments=function walkComments(callback){return this.walk(function(child,i){if(child.type==="comment"){return callback(child,i)}})};Container.prototype.append=function append(){for(var _len=arguments.length,children=Array(_len),_key=0;_key<_len;_key++){children[_key]=arguments[_key]}for(var _iterator=children,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++]}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value}var child=_ref;var nodes=this.normalize(child,this.last);for(var _iterator2=nodes,_isArray2=Array.isArray(_iterator2),_i2=0,_iterator2=_isArray2?_iterator2:_iterator2[Symbol.iterator]();;){var _ref2;if(_isArray2){if(_i2>=_iterator2.length)break;_ref2=_iterator2[_i2++]}else{_i2=_iterator2.next();if(_i2.done)break;_ref2=_i2.value}var node=_ref2;this.nodes.push(node)}}return this};Container.prototype.prepend=function prepend(){for(var _len2=arguments.length,children=Array(_len2),_key2=0;_key2<_len2;_key2++){children[_key2]=arguments[_key2]}children=children.reverse();for(var _iterator3=children,_isArray3=Array.isArray(_iterator3),_i3=0,_iterator3=_isArray3?_iterator3:_iterator3[Symbol.iterator]();;){var _ref3;if(_isArray3){if(_i3>=_iterator3.length)break;_ref3=_iterator3[_i3++]}else{_i3=_iterator3.next();if(_i3.done)break;_ref3=_i3.value}var child=_ref3;var nodes=this.normalize(child,this.first,"prepend").reverse();for(var _iterator4=nodes,_isArray4=Array.isArray(_iterator4),_i4=0,_iterator4=_isArray4?_iterator4:_iterator4[Symbol.iterator]();;){var _ref4;if(_isArray4){if(_i4>=_iterator4.length)break;_ref4=_iterator4[_i4++]}else{_i4=_iterator4.next();if(_i4.done)break;_ref4=_i4.value}var node=_ref4;this.nodes.unshift(node)}for(var id in this.indexes){this.indexes[id]=this.indexes[id]+nodes.length}}return this};Container.prototype.cleanRaws=function cleanRaws(keepBetween){_Node.prototype.cleanRaws.call(this,keepBetween);if(this.nodes){for(var _iterator5=this.nodes,_isArray5=Array.isArray(_iterator5),_i5=0,_iterator5=_isArray5?_iterator5:_iterator5[Symbol.iterator]();;){var _ref5;if(_isArray5){if(_i5>=_iterator5.length)break;_ref5=_iterator5[_i5++]}else{_i5=_iterator5.next();if(_i5.done)break;_ref5=_i5.value}var node=_ref5;node.cleanRaws(keepBetween)}}};Container.prototype.insertBefore=function insertBefore(exist,add){exist=this.index(exist);var type=exist===0?"prepend":false;var nodes=this.normalize(add,this.nodes[exist],type).reverse();for(var _iterator6=nodes,_isArray6=Array.isArray(_iterator6),_i6=0,_iterator6=_isArray6?_iterator6:_iterator6[Symbol.iterator]();;){var _ref6;if(_isArray6){if(_i6>=_iterator6.length)break;_ref6=_iterator6[_i6++]}else{_i6=_iterator6.next();if(_i6.done)break;_ref6=_i6.value}var node=_ref6;this.nodes.splice(exist,0,node)}var index=undefined;for(var id in this.indexes){index=this.indexes[id];if(exist<=index){this.indexes[id]=index+nodes.length}}return this};Container.prototype.insertAfter=function insertAfter(exist,add){exist=this.index(exist);var nodes=this.normalize(add,this.nodes[exist]).reverse();for(var _iterator7=nodes,_isArray7=Array.isArray(_iterator7),_i7=0,_iterator7=_isArray7?_iterator7:_iterator7[Symbol.iterator]();;){var _ref7;if(_isArray7){if(_i7>=_iterator7.length)break;_ref7=_iterator7[_i7++]}else{_i7=_iterator7.next();if(_i7.done)break;_ref7=_i7.value}var node=_ref7;this.nodes.splice(exist+1,0,node)}var index=undefined;for(var id in this.indexes){index=this.indexes[id];if(exist<index){this.indexes[id]=index+nodes.length}}return this};Container.prototype.remove=function remove(child){if(typeof child!=="undefined"){(0,_warnOnce2.default)("Container#remove is deprecated. "+"Use Container#removeChild");this.removeChild(child)}else{_Node.prototype.remove.call(this)}return this};Container.prototype.removeChild=function removeChild(child){child=this.index(child);this.nodes[child].parent=undefined;this.nodes.splice(child,1);var index=undefined;for(var id in this.indexes){index=this.indexes[id];if(index>=child){this.indexes[id]=index-1}}return this};Container.prototype.removeAll=function removeAll(){for(var _iterator8=this.nodes,_isArray8=Array.isArray(_iterator8),_i8=0,_iterator8=_isArray8?_iterator8:_iterator8[Symbol.iterator]();;){var _ref8;if(_isArray8){if(_i8>=_iterator8.length)break;_ref8=_iterator8[_i8++]}else{_i8=_iterator8.next();if(_i8.done)break;_ref8=_i8.value}var node=_ref8;node.parent=undefined}this.nodes=[];return this};Container.prototype.replaceValues=function replaceValues(regexp,opts,callback){if(!callback){callback=opts;opts={}}this.walkDecls(function(decl){if(opts.props&&opts.props.indexOf(decl.prop)===-1)return;if(opts.fast&&decl.value.indexOf(opts.fast)===-1)return;decl.value=decl.value.replace(regexp,callback)});return this};Container.prototype.every=function every(condition){return this.nodes.every(condition)};Container.prototype.some=function some(condition){return this.nodes.some(condition)};Container.prototype.index=function index(child){if(typeof child==="number"){return child}else{return this.nodes.indexOf(child)}};Container.prototype.normalize=function normalize(nodes,sample){var _this2=this;if(typeof nodes==="string"){var parse=require("./parse");nodes=parse(nodes).nodes}else if(!Array.isArray(nodes)){if(nodes.type==="root"){nodes=nodes.nodes}else if(nodes.type){nodes=[nodes]}else if(nodes.prop){if(typeof nodes.value==="undefined"){throw new Error("Value field is missed in node creation")}nodes=[new _declaration2.default(nodes)]}else if(nodes.selector){var Rule=require("./rule");nodes=[new Rule(nodes)]}else if(nodes.name){var AtRule=require("./at-rule");nodes=[new AtRule(nodes)]}else if(nodes.text){nodes=[new _comment2.default(nodes)]}else{throw new Error("Unknown node type in node creation")}}var processed=nodes.map(function(i){if(typeof i.raws==="undefined")i=_this2.rebuild(i);if(i.parent)i=i.clone();if(typeof i.raws.before==="undefined"){if(sample&&typeof sample.raws.before!=="undefined"){i.raws.before=sample.raws.before.replace(/[^\s]/g,"")}}i.parent=_this2;return i});return processed};Container.prototype.rebuild=function rebuild(node,parent){var _this3=this;var fix=undefined;if(node.type==="root"){var Root=require("./root");fix=new Root}else if(node.type==="atrule"){var AtRule=require("./at-rule");fix=new AtRule}else if(node.type==="rule"){var Rule=require("./rule");fix=new Rule}else if(node.type==="decl"){fix=new _declaration2.default}else if(node.type==="comment"){fix=new _comment2.default}for(var i in node){if(i==="nodes"){fix.nodes=node.nodes.map(function(j){return _this3.rebuild(j,fix)})}else if(i==="parent"&&parent){fix.parent=parent}else if(node.hasOwnProperty(i)){fix[i]=node[i]}}return fix};Container.prototype.eachInside=function eachInside(callback){(0,_warnOnce2.default)("Container#eachInside is deprecated. "+"Use Container#walk instead.");return this.walk(callback)};Container.prototype.eachDecl=function eachDecl(prop,callback){(0,_warnOnce2.default)("Container#eachDecl is deprecated. "+"Use Container#walkDecls instead.");return this.walkDecls(prop,callback)};Container.prototype.eachRule=function eachRule(selector,callback){(0,_warnOnce2.default)("Container#eachRule is deprecated. "+"Use Container#walkRules instead.");return this.walkRules(selector,callback)};Container.prototype.eachAtRule=function eachAtRule(name,callback){(0,_warnOnce2.default)("Container#eachAtRule is deprecated. "+"Use Container#walkAtRules instead.");return this.walkAtRules(name,callback)};Container.prototype.eachComment=function eachComment(callback){(0,_warnOnce2.default)("Container#eachComment is deprecated. "+"Use Container#walkComments instead.");return this.walkComments(callback)};_createClass(Container,[{key:"first",get:function get(){if(!this.nodes)return undefined;return this.nodes[0]}},{key:"last",get:function get(){if(!this.nodes)return undefined;return this.nodes[this.nodes.length-1]}},{key:"semicolon",get:function get(){(0,_warnOnce2.default)("Node#semicolon is deprecated. Use Node#raws.semicolon");return this.raws.semicolon},set:function set(val){(0,_warnOnce2.default)("Node#semicolon is deprecated. Use Node#raws.semicolon");this.raws.semicolon=val}},{key:"after",get:function get(){(0,_warnOnce2.default)("Node#after is deprecated. Use Node#raws.after");return this.raws.after},set:function set(val){(0,_warnOnce2.default)("Node#after is deprecated. Use Node#raws.after");this.raws.after=val}}]);return Container}(_node2.default);exports.default=Container;module.exports=exports["default"]},{"./at-rule":1,"./comment":2,"./declaration":5,"./node":10,"./parse":11,"./root":16,"./rule":17,"./warn-once":22}],4:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _supportsColor=require("supports-color");var _supportsColor2=_interopRequireDefault(_supportsColor);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var CssSyntaxError=function(){function CssSyntaxError(message,line,column,source,file,plugin){_classCallCheck(this,CssSyntaxError);this.name="CssSyntaxError";this.reason=message;if(file)this.file=file;if(source)this.source=source;if(plugin)this.plugin=plugin;if(typeof line!=="undefined"&&typeof column!=="undefined"){this.line=line;this.column=column}this.setMessage();if(Error.captureStackTrace){Error.captureStackTrace(this,CssSyntaxError)}}CssSyntaxError.prototype.setMessage=function setMessage(){this.message=this.plugin?this.plugin+": ":"";this.message+=this.file?this.file:"<css input>";if(typeof this.line!=="undefined"){this.message+=":"+this.line+":"+this.column}this.message+=": "+this.reason};CssSyntaxError.prototype.showSourceCode=function showSourceCode(color){if(!this.source)return"";var num=this.line-1;var lines=this.source.split("\n");var prev=num>0?lines[num-1]+"\n":"";var broken=lines[num];var next=num<lines.length-1?"\n"+lines[num+1]:"";var mark="\n";for(var i=0;i<this.column-1;i++){mark+=" "}if(typeof color==="undefined")color=_supportsColor2.default;if(color){mark+="^"}else{mark+="^"}return"\n"+prev+broken+mark+next};CssSyntaxError.prototype.toString=function toString(){return this.name+": "+this.message+this.showSourceCode()};_createClass(CssSyntaxError,[{key:"generated",get:function get(){(0,_warnOnce2.default)("CssSyntaxError#generated is depreacted. Use input instead.");return this.input}}]);return CssSyntaxError}();exports.default=CssSyntaxError;module.exports=exports["default"]},{"./warn-once":22,"supports-color":36}],5:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);var _node=require("./node");var _node2=_interopRequireDefault(_node);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Declaration=function(_Node){_inherits(Declaration,_Node);function Declaration(defaults){_classCallCheck(this,Declaration);var _this=_possibleConstructorReturn(this,_Node.call(this,defaults));_this.type="decl";return _this}_createClass(Declaration,[{key:"_value",get:function get(){(0,_warnOnce2.default)("Node#_value was deprecated. Use Node#raws.value");return this.raws.value},set:function set(val){(0,_warnOnce2.default)("Node#_value was deprecated. Use Node#raws.value");this.raws.value=val}},{key:"_important",get:function get(){(0,_warnOnce2.default)("Node#_important was deprecated. Use Node#raws.important");return this.raws.important},set:function set(val){(0,_warnOnce2.default)("Node#_important was deprecated. Use Node#raws.important");this.raws.important=val}}]);return Declaration}(_node2.default);exports.default=Declaration;module.exports=exports["default"]},{"./node":10,"./warn-once":22}],6:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _cssSyntaxError=require("./css-syntax-error");var _cssSyntaxError2=_interopRequireDefault(_cssSyntaxError);var _previousMap=require("./previous-map");var _previousMap2=_interopRequireDefault(_previousMap);var _path=require("path");var _path2=_interopRequireDefault(_path);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var sequence=0;var Input=function(){function Input(css){var opts=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];_classCallCheck(this,Input);this.css=css.toString();if(this.css[0]==="\ufeff"||this.css[0]==="￾"){this.css=this.css.slice(1)}if(opts.from)this.file=_path2.default.resolve(opts.from);var map=new _previousMap2.default(this.css,opts);if(map.text){this.map=map;var file=map.consumer().file;if(!this.file&&file)this.file=this.mapResolve(file)}if(!this.file){sequence+=1;this.id="<input css "+sequence+">"}if(this.map)this.map.file=this.from}Input.prototype.error=function error(message,line,column){var opts=arguments.length<=3||arguments[3]===undefined?{}:arguments[3];var result=undefined;var origin=this.origin(line,column);if(origin){result=new _cssSyntaxError2.default(message,origin.line,origin.column,origin.source,origin.file,opts.plugin)}else{result=new _cssSyntaxError2.default(message,line,column,this.css,this.file,opts.plugin)}result.input={line:line,column:column,source:this.css};if(this.file)result.input.file=this.file;return result};Input.prototype.origin=function origin(line,column){if(!this.map)return false;var consumer=this.map.consumer();var from=consumer.originalPositionFor({line:line,column:column});if(!from.source)return false;var result={file:this.mapResolve(from.source),line:from.line,column:from.column};var source=consumer.sourceContentFor(from.source);if(source)result.source=source;return result};Input.prototype.mapResolve=function mapResolve(file){return _path2.default.resolve(this.map.consumer().sourceRoot||".",file)};_createClass(Input,[{key:"from",get:function get(){return this.file||this.id}}]);return Input}();exports.default=Input;module.exports=exports["default"]},{"./css-syntax-error":4,"./previous-map":13,path:41}],7:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};var _mapGenerator=require("./map-generator");var _mapGenerator2=_interopRequireDefault(_mapGenerator);var _stringify2=require("./stringify");var _stringify3=_interopRequireDefault(_stringify2);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);var _result=require("./result");var _result2=_interopRequireDefault(_result);var _parse=require("./parse");var _parse2=_interopRequireDefault(_parse);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function isPromise(obj){return(typeof obj==="undefined"?"undefined":_typeof(obj))==="object"&&typeof obj.then==="function"}var LazyResult=function(){function LazyResult(processor,css,opts){_classCallCheck(this,LazyResult);this.stringified=false;this.processed=false;var root=undefined;if((typeof css==="undefined"?"undefined":_typeof(css))==="object"&&css.type==="root"){root=css}else if(css instanceof LazyResult||css instanceof _result2.default){root=css.root;if(css.map){if(typeof opts.map==="undefined")opts.map={};if(!opts.map.inline)opts.map.inline=false;opts.map.prev=css.map}}else{var parser=_parse2.default;if(opts.syntax)parser=opts.syntax.parse;if(opts.parser)parser=opts.parser;if(parser.parse)parser=parser.parse;try{root=parser(css,opts)}catch(error){this.error=error}}this.result=new _result2.default(processor,root,opts)}LazyResult.prototype.warnings=function warnings(){return this.sync().warnings()};LazyResult.prototype.toString=function toString(){return this.css};LazyResult.prototype.then=function then(onFulfilled,onRejected){return this.async().then(onFulfilled,onRejected)};LazyResult.prototype.catch=function _catch(onRejected){return this.async().catch(onRejected)};LazyResult.prototype.handleError=function handleError(error,plugin){try{this.error=error;if(error.name==="CssSyntaxError"&&!error.plugin){error.plugin=plugin.postcssPlugin;error.setMessage()}else if(plugin.postcssVersion){var pluginName=plugin.postcssPlugin;var pluginVer=plugin.postcssVersion;var runtimeVer=this.result.processor.version;var a=pluginVer.split(".");var b=runtimeVer.split(".");if(a[0]!==b[0]||parseInt(a[1])>parseInt(b[1])){(0,_warnOnce2.default)("Your current PostCSS version "+"is "+runtimeVer+", but "+pluginName+" "+"uses "+pluginVer+". Perhaps this is "+"the source of the error below.")}}}catch(err){if(console&&console.error)console.error(err)}};LazyResult.prototype.asyncTick=function asyncTick(resolve,reject){var _this=this;if(this.plugin>=this.processor.plugins.length){this.processed=true;return resolve()}try{(function(){var plugin=_this.processor.plugins[_this.plugin];var promise=_this.run(plugin);_this.plugin+=1;if(isPromise(promise)){promise.then(function(){_this.asyncTick(resolve,reject)}).catch(function(error){_this.handleError(error,plugin);_this.processed=true;reject(error)})}else{_this.asyncTick(resolve,reject)}})()}catch(error){this.processed=true;reject(error)}};LazyResult.prototype.async=function async(){var _this2=this;if(this.processed){return new Promise(function(resolve,reject){if(_this2.error){reject(_this2.error)}else{resolve(_this2.stringify())}})}if(this.processing){return this.processing}this.processing=new Promise(function(resolve,reject){if(_this2.error)return reject(_this2.error);_this2.plugin=0;_this2.asyncTick(resolve,reject)}).then(function(){_this2.processed=true;return _this2.stringify()});return this.processing};LazyResult.prototype.sync=function sync(){if(this.processed)return this.result;this.processed=true;if(this.processing){throw new Error("Use process(css).then(cb) to work with async plugins")}if(this.error)throw this.error;for(var _iterator=this.result.processor.plugins,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++]}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value}var plugin=_ref;var promise=this.run(plugin);if(isPromise(promise)){throw new Error("Use process(css).then(cb) to work with async plugins")}}return this.result};LazyResult.prototype.run=function run(plugin){this.result.lastPlugin=plugin;try{return plugin(this.result.root,this.result);
}catch(error){this.handleError(error,plugin);throw error}};LazyResult.prototype.stringify=function stringify(){if(this.stringified)return this.result;this.stringified=true;this.sync();var opts=this.result.opts;var str=_stringify3.default;if(opts.syntax)str=opts.syntax.stringify;if(opts.stringifier)str=opts.stringifier;if(str.stringify)str=str.stringify;var map=new _mapGenerator2.default(str,this.result.root,this.result.opts);var data=map.generate();this.result.css=data[0];this.result.map=data[1];return this.result};_createClass(LazyResult,[{key:"processor",get:function get(){return this.result.processor}},{key:"opts",get:function get(){return this.result.opts}},{key:"css",get:function get(){return this.stringify().css}},{key:"content",get:function get(){return this.stringify().content}},{key:"map",get:function get(){return this.stringify().map}},{key:"root",get:function get(){return this.sync().root}},{key:"messages",get:function get(){return this.sync().messages}}]);return LazyResult}();exports.default=LazyResult;module.exports=exports["default"]},{"./map-generator":9,"./parse":11,"./result":15,"./stringify":19,"./warn-once":22}],8:[function(require,module,exports){"use strict";exports.__esModule=true;var list={split:function split(string,separators,last){var array=[];var current="";var split=false;var func=0;var quote=false;var escape=false;for(var i=0;i<string.length;i++){var letter=string[i];if(quote){if(escape){escape=false}else if(letter==="\\"){escape=true}else if(letter===quote){quote=false}}else if(letter==='"'||letter==="'"){quote=letter}else if(letter==="("){func+=1}else if(letter===")"){if(func>0)func-=1}else if(func===0){if(separators.indexOf(letter)!==-1)split=true}if(split){if(current!=="")array.push(current.trim());current="";split=false}else{current+=letter}}if(last||current!=="")array.push(current.trim());return array},space:function space(string){var spaces=[" ","\n"," "];return list.split(string,spaces)},comma:function comma(string){var comma=",";return list.split(string,[comma],true)}};exports.default=list;module.exports=exports["default"]},{}],9:[function(require,module,exports){"use strict";exports.__esModule=true;var _jsBase=require("js-base64");var _sourceMap=require("source-map");var _sourceMap2=_interopRequireDefault(_sourceMap);var _path=require("path");var _path2=_interopRequireDefault(_path);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var _class=function(){function _class(stringify,root,opts){_classCallCheck(this,_class);this.stringify=stringify;this.mapOpts=opts.map||{};this.root=root;this.opts=opts}_class.prototype.isMap=function isMap(){if(typeof this.opts.map!=="undefined"){return!!this.opts.map}else{return this.previous().length>0}};_class.prototype.previous=function previous(){var _this=this;if(!this.previousMaps){this.previousMaps=[];this.root.walk(function(node){if(node.source&&node.source.input.map){var map=node.source.input.map;if(_this.previousMaps.indexOf(map)===-1){_this.previousMaps.push(map)}}})}return this.previousMaps};_class.prototype.isInline=function isInline(){if(typeof this.mapOpts.inline!=="undefined"){return this.mapOpts.inline}var annotation=this.mapOpts.annotation;if(typeof annotation!=="undefined"&&annotation!==true){return false}if(this.previous().length){return this.previous().some(function(i){return i.inline})}else{return true}};_class.prototype.isSourcesContent=function isSourcesContent(){if(typeof this.mapOpts.sourcesContent!=="undefined"){return this.mapOpts.sourcesContent}if(this.previous().length){return this.previous().some(function(i){return i.withContent()})}else{return true}};_class.prototype.clearAnnotation=function clearAnnotation(){if(this.mapOpts.annotation===false)return;var node=undefined;for(var i=this.root.nodes.length-1;i>=0;i--){node=this.root.nodes[i];if(node.type!=="comment")continue;if(node.text.indexOf("# sourceMappingURL=")===0){this.root.removeChild(i)}}};_class.prototype.setSourcesContent=function setSourcesContent(){var _this2=this;var already={};this.root.walk(function(node){if(node.source){var from=node.source.input.from;if(from&&!already[from]){already[from]=true;var relative=_this2.relative(from);_this2.map.setSourceContent(relative,node.source.input.css)}}})};_class.prototype.applyPrevMaps=function applyPrevMaps(){for(var _iterator=this.previous(),_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++]}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value}var prev=_ref;var from=this.relative(prev.file);var root=prev.root||_path2.default.dirname(prev.file);var map=undefined;if(this.mapOpts.sourcesContent===false){map=new _sourceMap2.default.SourceMapConsumer(prev.text);if(map.sourcesContent){map.sourcesContent=map.sourcesContent.map(function(){return null})}}else{map=prev.consumer()}this.map.applySourceMap(map,from,this.relative(root))}};_class.prototype.isAnnotation=function isAnnotation(){if(this.isInline()){return true}else if(typeof this.mapOpts.annotation!=="undefined"){return this.mapOpts.annotation}else if(this.previous().length){return this.previous().some(function(i){return i.annotation})}else{return true}};_class.prototype.addAnnotation=function addAnnotation(){var content=undefined;if(this.isInline()){content="data:application/json;base64,"+_jsBase.Base64.encode(this.map.toString())}else if(typeof this.mapOpts.annotation==="string"){content=this.mapOpts.annotation}else{content=this.outputFile()+".map"}var eol="\n";if(this.css.indexOf("\r\n")!==-1)eol="\r\n";this.css+=eol+"/*# sourceMappingURL="+content+" */"};_class.prototype.outputFile=function outputFile(){if(this.opts.to){return this.relative(this.opts.to)}else if(this.opts.from){return this.relative(this.opts.from)}else{return"to.css"}};_class.prototype.generateMap=function generateMap(){this.generateString();if(this.isSourcesContent())this.setSourcesContent();if(this.previous().length>0)this.applyPrevMaps();if(this.isAnnotation())this.addAnnotation();if(this.isInline()){return[this.css]}else{return[this.css,this.map]}};_class.prototype.relative=function relative(file){var from=this.opts.to?_path2.default.dirname(this.opts.to):".";if(typeof this.mapOpts.annotation==="string"){from=_path2.default.dirname(_path2.default.resolve(from,this.mapOpts.annotation))}file=_path2.default.relative(from,file);if(_path2.default.sep==="\\"){return file.replace(/\\/g,"/")}else{return file}};_class.prototype.sourcePath=function sourcePath(node){return this.relative(node.source.input.from)};_class.prototype.generateString=function generateString(){var _this3=this;this.css="";this.map=new _sourceMap2.default.SourceMapGenerator({file:this.outputFile()});var line=1;var column=1;var lines=undefined,last=undefined;this.stringify(this.root,function(str,node,type){_this3.css+=str;if(node&&node.source&&node.source.start&&type!=="end"){_this3.map.addMapping({source:_this3.sourcePath(node),original:{line:node.source.start.line,column:node.source.start.column-1},generated:{line:line,column:column-1}})}lines=str.match(/\n/g);if(lines){line+=lines.length;last=str.lastIndexOf("\n");column=str.length-last}else{column+=str.length}if(node&&node.source&&node.source.end&&type!=="start"){_this3.map.addMapping({source:_this3.sourcePath(node),original:{line:node.source.end.line,column:node.source.end.column},generated:{line:line,column:column-1}})}})};_class.prototype.generate=function generate(){this.clearAnnotation();if(this.isMap()){return this.generateMap()}else{var result="";this.stringify(this.root,function(i){result+=i});return[result]}};return _class}();exports.default=_class;module.exports=exports["default"]},{"js-base64":24,path:41,"source-map":35}],10:[function(require,module,exports){"use strict";exports.__esModule=true;var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};var _cssSyntaxError=require("./css-syntax-error");var _cssSyntaxError2=_interopRequireDefault(_cssSyntaxError);var _stringifier=require("./stringifier");var _stringifier2=_interopRequireDefault(_stringifier);var _stringify=require("./stringify");var _stringify2=_interopRequireDefault(_stringify);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var cloneNode=function cloneNode(obj,parent){var cloned=new obj.constructor;for(var i in obj){if(!obj.hasOwnProperty(i))continue;var value=obj[i];var type=typeof value==="undefined"?"undefined":_typeof(value);if(i==="parent"&&type==="object"){if(parent)cloned[i]=parent}else if(i==="source"){cloned[i]=value}else if(value instanceof Array){cloned[i]=value.map(function(j){return cloneNode(j,cloned)})}else if(i!=="before"&&i!=="after"&&i!=="between"&&i!=="semicolon"){if(type==="object"&&value!==null)value=cloneNode(value);cloned[i]=value}}return cloned};var Node=function(){function Node(){var defaults=arguments.length<=0||arguments[0]===undefined?{}:arguments[0];_classCallCheck(this,Node);this.raws={};for(var name in defaults){this[name]=defaults[name]}}Node.prototype.error=function error(message){var opts=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];if(this.source){var pos=this.positionBy(opts);return this.source.input.error(message,pos.line,pos.column,opts)}else{return new _cssSyntaxError2.default(message)}};Node.prototype.warn=function warn(result,text,opts){return result.warn(text,_extends({node:this},opts))};Node.prototype.remove=function remove(){if(this.parent){this.parent.removeChild(this)}this.parent=undefined;return this};Node.prototype.toString=function toString(){var stringifier=arguments.length<=0||arguments[0]===undefined?_stringify2.default:arguments[0];if(stringifier.stringify)stringifier=stringifier.stringify;var result="";stringifier(this,function(i){result+=i});return result};Node.prototype.clone=function clone(){var overrides=arguments.length<=0||arguments[0]===undefined?{}:arguments[0];var cloned=cloneNode(this);for(var name in overrides){cloned[name]=overrides[name]}return cloned};Node.prototype.cloneBefore=function cloneBefore(){var overrides=arguments.length<=0||arguments[0]===undefined?{}:arguments[0];var cloned=this.clone(overrides);this.parent.insertBefore(this,cloned);return cloned};Node.prototype.cloneAfter=function cloneAfter(){var overrides=arguments.length<=0||arguments[0]===undefined?{}:arguments[0];var cloned=this.clone(overrides);this.parent.insertAfter(this,cloned);return cloned};Node.prototype.replaceWith=function replaceWith(){if(this.parent){for(var _len=arguments.length,nodes=Array(_len),_key=0;_key<_len;_key++){nodes[_key]=arguments[_key]}for(var _iterator=nodes,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++]}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value}var node=_ref;this.parent.insertBefore(this,node)}this.remove()}return this};Node.prototype.moveTo=function moveTo(container){this.cleanRaws(this.root()===container.root());this.remove();container.append(this);return this};Node.prototype.moveBefore=function moveBefore(node){this.cleanRaws(this.root()===node.root());this.remove();node.parent.insertBefore(node,this);return this};Node.prototype.moveAfter=function moveAfter(node){this.cleanRaws(this.root()===node.root());this.remove();node.parent.insertAfter(node,this);return this};Node.prototype.next=function next(){var index=this.parent.index(this);return this.parent.nodes[index+1]};Node.prototype.prev=function prev(){var index=this.parent.index(this);return this.parent.nodes[index-1]};Node.prototype.toJSON=function toJSON(){var fixed={};for(var name in this){if(!this.hasOwnProperty(name))continue;if(name==="parent")continue;var value=this[name];if(value instanceof Array){fixed[name]=value.map(function(i){if((typeof i==="undefined"?"undefined":_typeof(i))==="object"&&i.toJSON){return i.toJSON()}else{return i}})}else if((typeof value==="undefined"?"undefined":_typeof(value))==="object"&&value.toJSON){fixed[name]=value.toJSON()}else{fixed[name]=value}}return fixed};Node.prototype.raw=function raw(own,detect){var str=new _stringifier2.default;return str.raw(this,own,detect)};Node.prototype.root=function root(){var result=this;while(result.parent){result=result.parent}return result};Node.prototype.cleanRaws=function cleanRaws(keepBetween){delete this.raws.before;delete this.raws.after;if(!keepBetween)delete this.raws.between};Node.prototype.positionInside=function positionInside(index){var string=this.toString();var column=this.source.start.column;var line=this.source.start.line;for(var i=0;i<index;i++){if(string[i]==="\n"){column=1;line+=1}else{column+=1}}return{line:line,column:column}};Node.prototype.positionBy=function positionBy(opts){var pos=this.source.start;if(opts.index){pos=this.positionInside(opts.index)}else if(opts.word){var index=this.toString().indexOf(opts.word);if(index!==-1)pos=this.positionInside(index)}return pos};Node.prototype.removeSelf=function removeSelf(){(0,_warnOnce2.default)("Node#removeSelf is deprecated. Use Node#remove.");return this.remove()};Node.prototype.replace=function replace(nodes){(0,_warnOnce2.default)("Node#replace is deprecated. Use Node#replaceWith");return this.replaceWith(nodes)};Node.prototype.style=function style(own,detect){(0,_warnOnce2.default)("Node#style() is deprecated. Use Node#raw()");return this.raw(own,detect)};Node.prototype.cleanStyles=function cleanStyles(keepBetween){(0,_warnOnce2.default)("Node#cleanStyles() is deprecated. Use Node#cleanRaws()");return this.cleanRaws(keepBetween)};_createClass(Node,[{key:"before",get:function get(){(0,_warnOnce2.default)("Node#before is deprecated. Use Node#raws.before");return this.raws.before},set:function set(val){(0,_warnOnce2.default)("Node#before is deprecated. Use Node#raws.before");this.raws.before=val}},{key:"between",get:function get(){(0,_warnOnce2.default)("Node#between is deprecated. Use Node#raws.between");return this.raws.between},set:function set(val){(0,_warnOnce2.default)("Node#between is deprecated. Use Node#raws.between");this.raws.between=val}}]);return Node}();exports.default=Node;module.exports=exports["default"]},{"./css-syntax-error":4,"./stringifier":18,"./stringify":19,"./warn-once":22}],11:[function(require,module,exports){"use strict";exports.__esModule=true;exports.default=parse;var _parser=require("./parser");var _parser2=_interopRequireDefault(_parser);var _input=require("./input");var _input2=_interopRequireDefault(_input);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function parse(css,opts){if(opts&&opts.safe){throw new Error("Option safe was removed. "+'Use parser: require("postcss-safe-parser")')}var input=new _input2.default(css,opts);var parser=new _parser2.default(input);parser.tokenize();parser.loop();return parser.root}module.exports=exports["default"]},{"./input":6,"./parser":12}],12:[function(require,module,exports){"use strict";exports.__esModule=true;var _declaration=require("./declaration");var _declaration2=_interopRequireDefault(_declaration);var _tokenize=require("./tokenize");var _tokenize2=_interopRequireDefault(_tokenize);var _comment=require("./comment");var _comment2=_interopRequireDefault(_comment);var _atRule=require("./at-rule");var _atRule2=_interopRequireDefault(_atRule);var _root=require("./root");var _root2=_interopRequireDefault(_root);var _rule=require("./rule");var _rule2=_interopRequireDefault(_rule);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var Parser=function(){function Parser(input){_classCallCheck(this,Parser);this.input=input;this.pos=0;this.root=new _root2.default;this.current=this.root;this.spaces="";this.semicolon=false;this.root.source={input:input,start:{line:1,column:1}}}Parser.prototype.tokenize=function tokenize(){this.tokens=(0,_tokenize2.default)(this.input)};Parser.prototype.loop=function loop(){var token=undefined;while(this.pos<this.tokens.length){token=this.tokens[this.pos];switch(token[0]){case"word":case":":this.word();break;case"}":this.end(token);break;case"comment":this.comment(token);break;case"at-word":this.atrule(token);break;case"{":this.emptyRule(token);break;default:this.spaces+=token[1];break}this.pos+=1}this.endFile()};Parser.prototype.comment=function comment(token){var node=new _comment2.default;this.init(node,token[2],token[3]);node.source.end={line:token[4],column:token[5]};var text=token[1].slice(2,-2);if(/^\s*$/.test(text)){node.text="";node.raws.left=text;node.raws.right=""}else{var match=text.match(/^(\s*)([^]*[^\s])(\s*)$/);node.text=match[2];node.raws.left=match[1];node.raws.right=match[3]}};Parser.prototype.emptyRule=function emptyRule(token){var node=new _rule2.default;this.init(node,token[2],token[3]);node.selector="";node.raws.between="";this.current=node};Parser.prototype.word=function word(){var token=undefined;var end=false;var type=null;var colon=false;var bracket=null;var brackets=0;var start=this.pos;this.pos+=1;while(this.pos<this.tokens.length){token=this.tokens[this.pos];type=token[0];if(type==="("){if(!bracket)bracket=token;brackets+=1}else if(brackets===0){if(type===";"){if(colon){this.decl(this.tokens.slice(start,this.pos+1));return}else{break}}else if(type==="{"){this.rule(this.tokens.slice(start,this.pos+1));return}else if(type==="}"){this.pos-=1;end=true;break}else if(type===":"){colon=true}}else if(type===")"){brackets-=1;if(brackets===0)bracket=null}this.pos+=1}if(this.pos===this.tokens.length){this.pos-=1;end=true}if(brackets>0)this.unclosedBracket(bracket);if(end&&colon){while(this.pos>start){token=this.tokens[this.pos][0];if(token!=="space"&&token!=="comment")break;this.pos-=1}this.decl(this.tokens.slice(start,this.pos+1));return}this.unknownWord(start)};Parser.prototype.rule=function rule(tokens){tokens.pop();var node=new _rule2.default;this.init(node,tokens[0][2],tokens[0][3]);node.raws.between=this.spacesFromEnd(tokens);this.raw(node,"selector",tokens);this.current=node};Parser.prototype.decl=function decl(tokens){var node=new _declaration2.default;this.init(node);var last=tokens[tokens.length-1];if(last[0]===";"){this.semicolon=true;tokens.pop()}if(last[4]){node.source.end={line:last[4],column:last[5]}}else{node.source.end={line:last[2],column:last[3]}}while(tokens[0][0]!=="word"){node.raws.before+=tokens.shift()[1]}node.source.start={line:tokens[0][2],column:tokens[0][3]};node.prop="";while(tokens.length){var type=tokens[0][0];if(type===":"||type==="space"||type==="comment"){break}node.prop+=tokens.shift()[1]}node.raws.between="";var token=undefined;while(tokens.length){token=tokens.shift();if(token[0]===":"){node.raws.between+=token[1];break}else{node.raws.between+=token[1]}}if(node.prop[0]==="_"||node.prop[0]==="*"){node.raws.before+=node.prop[0];node.prop=node.prop.slice(1)}node.raws.between+=this.spacesFromStart(tokens);this.precheckMissedSemicolon(tokens);for(var i=tokens.length-1;i>0;i--){token=tokens[i];if(token[1]==="!important"){node.important=true;var string=this.stringFrom(tokens,i);string=this.spacesFromEnd(tokens)+string;if(string!==" !important")node.raws.important=string;break}else if(token[1]==="important"){var cache=tokens.slice(0);var str="";for(var j=i;j>0;j--){var type=cache[j][0];if(str.trim().indexOf("!")===0&&type!=="space"){break}str=cache.pop()[1]+str}if(str.trim().indexOf("!")===0){node.important=true;node.raws.important=str;tokens=cache}}if(token[0]!=="space"&&token[0]!=="comment"){break}}this.raw(node,"value",tokens);if(node.value.indexOf(":")!==-1)this.checkMissedSemicolon(tokens)};Parser.prototype.atrule=function atrule(token){var node=new _atRule2.default;node.name=token[1].slice(1);if(node.name===""){this.unnamedAtrule(node,token)}this.init(node,token[2],token[3]);var last=false;var open=false;var params=[];this.pos+=1;while(this.pos<this.tokens.length){token=this.tokens[this.pos];if(token[0]===";"){node.source.end={line:token[2],column:token[3]};this.semicolon=true;break}else if(token[0]==="{"){open=true;break}else if(token[0]==="}"){this.end(token);break}else{params.push(token)}this.pos+=1}if(this.pos===this.tokens.length){last=true}node.raws.between=this.spacesFromEnd(params);if(params.length){node.raws.afterName=this.spacesFromStart(params);this.raw(node,"params",params);if(last){token=params[params.length-1];node.source.end={line:token[4],column:token[5]};this.spaces=node.raws.between;node.raws.between=""}}else{node.raws.afterName="";node.params=""}if(open){node.nodes=[];this.current=node}};Parser.prototype.end=function end(token){if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.semicolon=false;this.current.raws.after=(this.current.raws.after||"")+this.spaces;this.spaces="";if(this.current.parent){this.current.source.end={line:token[2],column:token[3]};this.current=this.current.parent}else{this.unexpectedClose(token)}};Parser.prototype.endFile=function endFile(){if(this.current.parent)this.unclosedBlock();if(this.current.nodes&&this.current.nodes.length){this.current.raws.semicolon=this.semicolon}this.current.raws.after=(this.current.raws.after||"")+this.spaces};Parser.prototype.init=function init(node,line,column){this.current.push(node);node.source={start:{line:line,column:column},input:this.input};node.raws.before=this.spaces;this.spaces="";if(node.type!=="comment")this.semicolon=false};Parser.prototype.raw=function raw(node,prop,tokens){var token=undefined,type=undefined;var length=tokens.length;var value="";var clean=true;for(var i=0;i<length;i+=1){token=tokens[i];type=token[0];if(type==="comment"||type==="space"&&i===length-1){clean=false}else{value+=token[1]}}if(!clean){var raw=tokens.reduce(function(all,i){return all+i[1]},"");node.raws[prop]={value:value,raw:raw}}node[prop]=value};Parser.prototype.spacesFromEnd=function spacesFromEnd(tokens){var next=undefined;var spaces="";while(tokens.length){next=tokens[tokens.length-1][0];if(next!=="space"&&next!=="comment")break;spaces+=tokens.pop()[1]}return spaces};Parser.prototype.spacesFromStart=function spacesFromStart(tokens){var next=undefined;var spaces="";while(tokens.length){next=tokens[0][0];if(next!=="space"&&next!=="comment")break;spaces+=tokens.shift()[1]}return spaces};Parser.prototype.stringFrom=function stringFrom(tokens,from){var result="";for(var i=from;i<tokens.length;i++){result+=tokens[i][1]}tokens.splice(from,tokens.length-from);return result};Parser.prototype.colon=function colon(tokens){var brackets=0;var token=undefined,type=undefined,prev=undefined;for(var i=0;i<tokens.length;i++){token=tokens[i];type=token[0];if(type==="("){brackets+=1}else if(type===")"){brackets-=1}else if(brackets===0&&type===":"){if(!prev){this.doubleColon(token)}else if(prev[0]==="word"&&prev[1]==="progid"){continue}else{return i}}prev=token}return false};Parser.prototype.unclosedBracket=function unclosedBracket(bracket){throw this.input.error("Unclosed bracket",bracket[2],bracket[3])};Parser.prototype.unknownWord=function unknownWord(start){var token=this.tokens[start];throw this.input.error("Unknown word",token[2],token[3])};Parser.prototype.unexpectedClose=function unexpectedClose(token){throw this.input.error("Unexpected }",token[2],token[3])};Parser.prototype.unclosedBlock=function unclosedBlock(){var pos=this.current.source.start;throw this.input.error("Unclosed block",pos.line,pos.column)};Parser.prototype.doubleColon=function doubleColon(token){throw this.input.error("Double colon",token[2],token[3])};Parser.prototype.unnamedAtrule=function unnamedAtrule(node,token){throw this.input.error("At-rule without name",token[2],token[3])};Parser.prototype.precheckMissedSemicolon=function precheckMissedSemicolon(tokens){tokens};Parser.prototype.checkMissedSemicolon=function checkMissedSemicolon(tokens){var colon=this.colon(tokens);if(colon===false)return;var founded=0;var token=undefined;for(var j=colon-1;j>=0;j--){token=tokens[j];if(token[0]!=="space"){founded+=1;if(founded===2)break}}throw this.input.error("Missed semicolon",token[2],token[3])};return Parser}();exports.default=Parser;module.exports=exports["default"]},{"./at-rule":1,"./comment":2,"./declaration":5,"./root":16,"./rule":17,"./tokenize":20}],13:[function(require,module,exports){"use strict";exports.__esModule=true;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};var _jsBase=require("js-base64");var _sourceMap=require("source-map");var _sourceMap2=_interopRequireDefault(_sourceMap);var _path=require("path");var _path2=_interopRequireDefault(_path);var _fs=require("fs");var _fs2=_interopRequireDefault(_fs);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var PreviousMap=function(){function PreviousMap(css,opts){_classCallCheck(this,PreviousMap);this.loadAnnotation(css);this.inline=this.startWith(this.annotation,"data:");var prev=opts.map?opts.map.prev:undefined;var text=this.loadMap(opts.from,prev);if(text)this.text=text}PreviousMap.prototype.consumer=function consumer(){if(!this.consumerCache){this.consumerCache=new _sourceMap2.default.SourceMapConsumer(this.text)}return this.consumerCache};PreviousMap.prototype.withContent=function withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)};PreviousMap.prototype.startWith=function startWith(string,start){if(!string)return false;return string.substr(0,start.length)===start};PreviousMap.prototype.loadAnnotation=function loadAnnotation(css){var match=css.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);if(match)this.annotation=match[1].trim()};PreviousMap.prototype.decodeInline=function decodeInline(text){var utf64="data:application/json;charset=utf-8;base64,";var b64="data:application/json;base64,";var uri="data:application/json,";if(this.startWith(text,uri)){return decodeURIComponent(text.substr(uri.length))}else if(this.startWith(text,b64)){return _jsBase.Base64.decode(text.substr(b64.length))}else if(this.startWith(text,utf64)){return _jsBase.Base64.decode(text.substr(utf64.length))}else{var encoding=text.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+encoding)}};PreviousMap.prototype.loadMap=function loadMap(file,prev){if(prev===false)return false;if(prev){if(typeof prev==="string"){return prev}else if(prev instanceof _sourceMap2.default.SourceMapConsumer){return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString()}else if(prev instanceof _sourceMap2.default.SourceMapGenerator){return prev.toString()}else if(this.isMap(prev)){return JSON.stringify(prev)}else{throw new Error("Unsupported previous source map format: "+prev.toString())}}else if(this.inline){return this.decodeInline(this.annotation)}else if(this.annotation){var map=this.annotation;if(file)map=_path2.default.join(_path2.default.dirname(file),map);this.root=_path2.default.dirname(map);if(_fs2.default.existsSync&&_fs2.default.existsSync(map)){return _fs2.default.readFileSync(map,"utf-8").toString().trim()}else{return false}}};PreviousMap.prototype.isMap=function isMap(map){if((typeof map==="undefined"?"undefined":_typeof(map))!=="object")return false;return typeof map.mappings==="string"||typeof map._mappings==="string"};return PreviousMap}();exports.default=PreviousMap;module.exports=exports["default"]},{fs:37,"js-base64":24,path:41,"source-map":35}],14:[function(require,module,exports){"use strict";exports.__esModule=true;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};var _lazyResult=require("./lazy-result");var _lazyResult2=_interopRequireDefault(_lazyResult);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var Processor=function(){function Processor(){var plugins=arguments.length<=0||arguments[0]===undefined?[]:arguments[0];_classCallCheck(this,Processor);this.version="5.0.14";this.plugins=this.normalize(plugins)}Processor.prototype.use=function use(plugin){this.plugins=this.plugins.concat(this.normalize([plugin]));return this};Processor.prototype.process=function process(css){var opts=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];return new _lazyResult2.default(this,css,opts)};Processor.prototype.normalize=function normalize(plugins){var normalized=[];for(var _iterator=plugins,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++]}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value}var i=_ref;if(i.postcss)i=i.postcss;if((typeof i==="undefined"?"undefined":_typeof(i))==="object"&&Array.isArray(i.plugins)){normalized=normalized.concat(i.plugins)}else if(typeof i==="function"){normalized.push(i)}else{throw new Error(i+" is not a PostCSS plugin")}}return normalized};return Processor}();exports.default=Processor;module.exports=exports["default"]},{"./lazy-result":7}],15:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _warning=require("./warning");var _warning2=_interopRequireDefault(_warning);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var Result=function(){function Result(processor,root,opts){_classCallCheck(this,Result);this.processor=processor;this.messages=[];this.root=root;this.opts=opts;this.css=undefined;this.map=undefined}Result.prototype.toString=function toString(){return this.css;
};Result.prototype.warn=function warn(text){var opts=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];if(!opts.plugin){if(this.lastPlugin&&this.lastPlugin.postcssPlugin){opts.plugin=this.lastPlugin.postcssPlugin}}this.messages.push(new _warning2.default(text,opts))};Result.prototype.warnings=function warnings(){return this.messages.filter(function(i){return i.type==="warning"})};_createClass(Result,[{key:"content",get:function get(){return this.css}}]);return Result}();exports.default=Result;module.exports=exports["default"]},{"./warning":23}],16:[function(require,module,exports){"use strict";exports.__esModule=true;var _container=require("./container");var _container2=_interopRequireDefault(_container);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Root=function(_Container){_inherits(Root,_Container);function Root(defaults){_classCallCheck(this,Root);var _this=_possibleConstructorReturn(this,_Container.call(this,defaults));_this.type="root";if(!_this.nodes)_this.nodes=[];return _this}Root.prototype.removeChild=function removeChild(child){child=this.index(child);if(child===0&&this.nodes.length>1){this.nodes[1].raws.before=this.nodes[child].raws.before}return _Container.prototype.removeChild.call(this,child)};Root.prototype.normalize=function normalize(child,sample,type){var nodes=_Container.prototype.normalize.call(this,child);if(sample){if(type==="prepend"){if(this.nodes.length>1){sample.raws.before=this.nodes[1].raws.before}else{delete sample.raws.before}}else if(this.first!==sample){for(var _iterator=nodes,_isArray=Array.isArray(_iterator),_i=0,_iterator=_isArray?_iterator:_iterator[Symbol.iterator]();;){var _ref;if(_isArray){if(_i>=_iterator.length)break;_ref=_iterator[_i++]}else{_i=_iterator.next();if(_i.done)break;_ref=_i.value}var node=_ref;node.raws.before=sample.raws.before}}}return nodes};Root.prototype.toResult=function toResult(){var opts=arguments.length<=0||arguments[0]===undefined?{}:arguments[0];var LazyResult=require("./lazy-result");var Processor=require("./processor");var lazy=new LazyResult(new Processor,this,opts);return lazy.stringify()};Root.prototype.remove=function remove(child){(0,_warnOnce2.default)("Root#remove is deprecated. Use Root#removeChild");this.removeChild(child)};Root.prototype.prevMap=function prevMap(){(0,_warnOnce2.default)("Root#prevMap is deprecated. Use Root#source.input.map");return this.source.input.map};return Root}(_container2.default);exports.default=Root;module.exports=exports["default"]},{"./container":3,"./lazy-result":7,"./processor":14,"./warn-once":22}],17:[function(require,module,exports){"use strict";exports.__esModule=true;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _container=require("./container");var _container2=_interopRequireDefault(_container);var _warnOnce=require("./warn-once");var _warnOnce2=_interopRequireDefault(_warnOnce);var _list=require("./list");var _list2=_interopRequireDefault(_list);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return call&&(typeof call==="object"||typeof call==="function")?call:self}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}var Rule=function(_Container){_inherits(Rule,_Container);function Rule(defaults){_classCallCheck(this,Rule);var _this=_possibleConstructorReturn(this,_Container.call(this,defaults));_this.type="rule";if(!_this.nodes)_this.nodes=[];return _this}_createClass(Rule,[{key:"selectors",get:function get(){return _list2.default.comma(this.selector)},set:function set(values){var match=this.selector?this.selector.match(/,\s*/):null;var sep=match?match[0]:","+this.raw("between","beforeOpen");this.selector=values.join(sep)}},{key:"_selector",get:function get(){(0,_warnOnce2.default)("Rule#_selector is deprecated. Use Rule#raws.selector");return this.raws.selector},set:function set(val){(0,_warnOnce2.default)("Rule#_selector is deprecated. Use Rule#raws.selector");this.raws.selector=val}}]);return Rule}(_container2.default);exports.default=Rule;module.exports=exports["default"]},{"./container":3,"./list":8,"./warn-once":22}],18:[function(require,module,exports){"use strict";exports.__esModule=true;function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var defaultRaw={colon:": ",indent:" ",beforeDecl:"\n",beforeRule:"\n",beforeOpen:" ",beforeClose:"\n",beforeComment:"\n",after:"\n",emptyBody:"",commentLeft:" ",commentRight:" "};function capitalize(str){return str[0].toUpperCase()+str.slice(1)}var Stringifier=function(){function Stringifier(builder){_classCallCheck(this,Stringifier);this.builder=builder}Stringifier.prototype.stringify=function stringify(node,semicolon){this[node.type](node,semicolon)};Stringifier.prototype.root=function root(node){this.body(node);if(node.raws.after)this.builder(node.raws.after)};Stringifier.prototype.comment=function comment(node){var left=this.raw(node,"left","commentLeft");var right=this.raw(node,"right","commentRight");this.builder("/*"+left+node.text+right+"*/",node)};Stringifier.prototype.decl=function decl(node,semicolon){var between=this.raw(node,"between","colon");var string=node.prop+between+this.rawValue(node,"value");if(node.important){string+=node.raws.important||" !important"}if(semicolon)string+=";";this.builder(string,node)};Stringifier.prototype.rule=function rule(node){this.block(node,this.rawValue(node,"selector"))};Stringifier.prototype.atrule=function atrule(node,semicolon){var name="@"+node.name;var params=node.params?this.rawValue(node,"params"):"";if(typeof node.raws.afterName!=="undefined"){name+=node.raws.afterName}else if(params){name+=" "}if(node.nodes){this.block(node,name+params)}else{var end=(node.raws.between||"")+(semicolon?";":"");this.builder(name+params+end,node)}};Stringifier.prototype.body=function body(node){var last=node.nodes.length-1;while(last>0){if(node.nodes[last].type!=="comment")break;last-=1}var semicolon=this.raw(node,"semicolon");for(var i=0;i<node.nodes.length;i++){var child=node.nodes[i];var before=this.raw(child,"before");if(before)this.builder(before);this.stringify(child,last!==i||semicolon)}};Stringifier.prototype.block=function block(node,start){var between=this.raw(node,"between","beforeOpen");this.builder(start+between+"{",node,"start");var after=undefined;if(node.nodes&&node.nodes.length){this.body(node);after=this.raw(node,"after")}else{after=this.raw(node,"after","emptyBody")}if(after)this.builder(after);this.builder("}",node,"end")};Stringifier.prototype.raw=function raw(node,own,detect){var value=undefined;if(!detect)detect=own;if(own){value=node.raws[own];if(typeof value!=="undefined")return value}var parent=node.parent;if(detect==="before"){if(!parent||parent.type==="root"&&parent.first===node){return""}}if(!parent)return defaultRaw[detect];var root=node.root();if(!root.rawCache)root.rawCache={};if(typeof root.rawCache[detect]!=="undefined"){return root.rawCache[detect]}if(detect==="before"||detect==="after"){return this.beforeAfter(node,detect)}else{var method="raw"+capitalize(detect);if(this[method]){value=this[method](root,node)}else{root.walk(function(i){value=i.raws[own];if(typeof value!=="undefined")return false})}}if(typeof value==="undefined")value=defaultRaw[detect];root.rawCache[detect]=value;return value};Stringifier.prototype.rawSemicolon=function rawSemicolon(root){var value=undefined;root.walk(function(i){if(i.nodes&&i.nodes.length&&i.last.type==="decl"){value=i.raws.semicolon;if(typeof value!=="undefined")return false}});return value};Stringifier.prototype.rawEmptyBody=function rawEmptyBody(root){var value=undefined;root.walk(function(i){if(i.nodes&&i.nodes.length===0){value=i.raws.after;if(typeof value!=="undefined")return false}});return value};Stringifier.prototype.rawIndent=function rawIndent(root){if(root.raws.indent)return root.raws.indent;var value=undefined;root.walk(function(i){var p=i.parent;if(p&&p!==root&&p.parent&&p.parent===root){if(typeof i.raws.before!=="undefined"){var parts=i.raws.before.split("\n");value=parts[parts.length-1];value=value.replace(/[^\s]/g,"");return false}}});return value};Stringifier.prototype.rawBeforeComment=function rawBeforeComment(root,node){var value=undefined;root.walkComments(function(i){if(typeof i.raws.before!=="undefined"){value=i.raws.before;if(value.indexOf("\n")!==-1){value=value.replace(/[^\n]+$/,"")}return false}});if(typeof value==="undefined"){value=this.raw(node,null,"beforeDecl")}return value};Stringifier.prototype.rawBeforeDecl=function rawBeforeDecl(root,node){var value=undefined;root.walkDecls(function(i){if(typeof i.raws.before!=="undefined"){value=i.raws.before;if(value.indexOf("\n")!==-1){value=value.replace(/[^\n]+$/,"")}return false}});if(typeof value==="undefined"){value=this.raw(node,null,"beforeRule")}return value};Stringifier.prototype.rawBeforeRule=function rawBeforeRule(root){var value=undefined;root.walk(function(i){if(i.nodes&&(i.parent!==root||root.first!==i)){if(typeof i.raws.before!=="undefined"){value=i.raws.before;if(value.indexOf("\n")!==-1){value=value.replace(/[^\n]+$/,"")}return false}}});return value};Stringifier.prototype.rawBeforeClose=function rawBeforeClose(root){var value=undefined;root.walk(function(i){if(i.nodes&&i.nodes.length>0){if(typeof i.raws.after!=="undefined"){value=i.raws.after;if(value.indexOf("\n")!==-1){value=value.replace(/[^\n]+$/,"")}return false}}});return value};Stringifier.prototype.rawBeforeOpen=function rawBeforeOpen(root){var value=undefined;root.walk(function(i){if(i.type!=="decl"){value=i.raws.between;if(typeof value!=="undefined")return false}});return value};Stringifier.prototype.rawColon=function rawColon(root){var value=undefined;root.walkDecls(function(i){if(typeof i.raws.between!=="undefined"){value=i.raws.between.replace(/[^\s:]/g,"");return false}});return value};Stringifier.prototype.beforeAfter=function beforeAfter(node,detect){var value=undefined;if(node.type==="decl"){value=this.raw(node,null,"beforeDecl")}else if(node.type==="comment"){value=this.raw(node,null,"beforeComment")}else if(detect==="before"){value=this.raw(node,null,"beforeRule")}else{value=this.raw(node,null,"beforeClose")}var buf=node.parent;var depth=0;while(buf&&buf.type!=="root"){depth+=1;buf=buf.parent}if(value.indexOf("\n")!==-1){var indent=this.raw(node,null,"indent");if(indent.length){for(var step=0;step<depth;step++){value+=indent}}}return value};Stringifier.prototype.rawValue=function rawValue(node,prop){var value=node[prop];var raw=node.raws[prop];if(raw&&raw.value===value){return raw.raw}else{return value}};return Stringifier}();exports.default=Stringifier;module.exports=exports["default"]},{}],19:[function(require,module,exports){"use strict";exports.__esModule=true;exports.default=stringify;var _stringifier=require("./stringifier");var _stringifier2=_interopRequireDefault(_stringifier);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function stringify(node,builder){var str=new _stringifier2.default(builder);str.stringify(node)}module.exports=exports["default"]},{"./stringifier":18}],20:[function(require,module,exports){"use strict";exports.__esModule=true;exports.default=tokenize;var SINGLE_QUOTE=39;var DOUBLE_QUOTE=34;var BACKSLASH=92;var SLASH=47;var NEWLINE=10;var SPACE=32;var FEED=12;var TAB=9;var CR=13;var OPEN_PARENTHESES=40;var CLOSE_PARENTHESES=41;var OPEN_CURLY=123;var CLOSE_CURLY=125;var SEMICOLON=59;var ASTERICK=42;var COLON=58;var AT=64;var RE_AT_END=/[ \n\t\r\f\{\(\)'"\\;\/]/g;var RE_WORD_END=/[ \n\t\r\f\(\)\{\}:;@!'"\\]|\/(?=\*)/g;var RE_BAD_BRACKET=/.[\\\/\("'\n]/;function tokenize(input){var tokens=[];var css=input.css.valueOf();var code=undefined,next=undefined,quote=undefined,lines=undefined,last=undefined,content=undefined,escape=undefined,nextLine=undefined,nextOffset=undefined,escaped=undefined,escapePos=undefined,prev=undefined,n=undefined;var length=css.length;var offset=-1;var line=1;var pos=0;function unclosed(what){throw input.error("Unclosed "+what,line,pos-offset)}while(pos<length){code=css.charCodeAt(pos);if(code===NEWLINE||code===FEED||code===CR&&css.charCodeAt(pos+1)!==NEWLINE){offset=pos;line+=1}switch(code){case NEWLINE:case SPACE:case TAB:case CR:case FEED:next=pos;do{next+=1;code=css.charCodeAt(next);if(code===NEWLINE){offset=next;line+=1}}while(code===SPACE||code===NEWLINE||code===TAB||code===CR||code===FEED);tokens.push(["space",css.slice(pos,next)]);pos=next-1;break;case OPEN_CURLY:tokens.push(["{","{",line,pos-offset]);break;case CLOSE_CURLY:tokens.push(["}","}",line,pos-offset]);break;case COLON:tokens.push([":",":",line,pos-offset]);break;case SEMICOLON:tokens.push([";",";",line,pos-offset]);break;case OPEN_PARENTHESES:prev=tokens.length?tokens[tokens.length-1][1]:"";n=css.charCodeAt(pos+1);if(prev==="url"&&n!==SINGLE_QUOTE&&n!==DOUBLE_QUOTE&&n!==SPACE&&n!==NEWLINE&&n!==TAB&&n!==FEED&&n!==CR){next=pos;do{escaped=false;next=css.indexOf(")",next+1);if(next===-1)unclosed("bracket");escapePos=next;while(css.charCodeAt(escapePos-1)===BACKSLASH){escapePos-=1;escaped=!escaped}}while(escaped);tokens.push(["brackets",css.slice(pos,next+1),line,pos-offset,line,next-offset]);pos=next}else{next=css.indexOf(")",pos+1);content=css.slice(pos,next+1);if(next===-1||RE_BAD_BRACKET.test(content)){tokens.push(["(","(",line,pos-offset])}else{tokens.push(["brackets",content,line,pos-offset,line,next-offset]);pos=next}}break;case CLOSE_PARENTHESES:tokens.push([")",")",line,pos-offset]);break;case SINGLE_QUOTE:case DOUBLE_QUOTE:quote=code===SINGLE_QUOTE?"'":'"';next=pos;do{escaped=false;next=css.indexOf(quote,next+1);if(next===-1)unclosed("quote");escapePos=next;while(css.charCodeAt(escapePos-1)===BACKSLASH){escapePos-=1;escaped=!escaped}}while(escaped);content=css.slice(pos,next+1);lines=content.split("\n");last=lines.length-1;if(last>0){nextLine=line+last;nextOffset=next-lines[last].length}else{nextLine=line;nextOffset=offset}tokens.push(["string",css.slice(pos,next+1),line,pos-offset,nextLine,next-nextOffset]);offset=nextOffset;line=nextLine;pos=next;break;case AT:RE_AT_END.lastIndex=pos+1;RE_AT_END.test(css);if(RE_AT_END.lastIndex===0){next=css.length-1}else{next=RE_AT_END.lastIndex-2}tokens.push(["at-word",css.slice(pos,next+1),line,pos-offset,line,next-offset]);pos=next;break;case BACKSLASH:next=pos;escape=true;while(css.charCodeAt(next+1)===BACKSLASH){next+=1;escape=!escape}code=css.charCodeAt(next+1);if(escape&&code!==SLASH&&code!==SPACE&&code!==NEWLINE&&code!==TAB&&code!==CR&&code!==FEED){next+=1}tokens.push(["word",css.slice(pos,next+1),line,pos-offset,line,next-offset]);pos=next;break;default:if(code===SLASH&&css.charCodeAt(pos+1)===ASTERICK){next=css.indexOf("*/",pos+2)+1;if(next===0)unclosed("comment");content=css.slice(pos,next+1);lines=content.split("\n");last=lines.length-1;if(last>0){nextLine=line+last;nextOffset=next-lines[last].length}else{nextLine=line;nextOffset=offset}tokens.push(["comment",content,line,pos-offset,nextLine,next-nextOffset]);offset=nextOffset;line=nextLine;pos=next}else{RE_WORD_END.lastIndex=pos+1;RE_WORD_END.test(css);if(RE_WORD_END.lastIndex===0){next=css.length-1}else{next=RE_WORD_END.lastIndex-2}tokens.push(["word",css.slice(pos,next+1),line,pos-offset,line,next-offset]);pos=next}break}pos++}return tokens}module.exports=exports["default"]},{}],21:[function(require,module,exports){"use strict";exports.__esModule=true;exports.default={prefix:function prefix(prop){if(prop[0]==="-"){var sep=prop.indexOf("-",1);return prop.substr(0,sep+1)}else{return""}},unprefixed:function unprefixed(prop){if(prop[0]==="-"){var sep=prop.indexOf("-",1);return prop.substr(sep+1)}else{return prop}}};module.exports=exports["default"]},{}],22:[function(require,module,exports){"use strict";exports.__esModule=true;exports.default=warnOnce;var printed={};function warnOnce(message){if(printed[message])return;printed[message]=true;if(typeof console!=="undefined"&&console.warn)console.warn(message)}module.exports=exports["default"]},{}],23:[function(require,module,exports){"use strict";exports.__esModule=true;function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var Warning=function(){function Warning(text){var opts=arguments.length<=1||arguments[1]===undefined?{}:arguments[1];_classCallCheck(this,Warning);this.type="warning";this.text=text;if(opts.node&&opts.node.source){var pos=opts.node.positionBy(opts);this.line=pos.line;this.column=pos.column}for(var opt in opts){this[opt]=opts[opt]}}Warning.prototype.toString=function toString(){if(this.node){return this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message}else if(this.plugin){return this.plugin+": "+this.text}else{return this.text}};return Warning}();exports.default=Warning;module.exports=exports["default"]},{}],24:[function(require,module,exports){(function(global){"use strict";var _Base64=global.Base64;var version="2.1.9";var buffer;if(typeof module!=="undefined"&&module.exports){try{buffer=require("buffer").Buffer}catch(err){}}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64tab=function(bin){var t={};for(var i=0,l=bin.length;i<l;i++)t[bin.charAt(i)]=i;return t}(b64chars);var fromCharCode=String.fromCharCode;var cb_utob=function(c){if(c.length<2){var cc=c.charCodeAt(0);return cc<128?c:cc<2048?fromCharCode(192|cc>>>6)+fromCharCode(128|cc&63):fromCharCode(224|cc>>>12&15)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}else{var cc=65536+(c.charCodeAt(0)-55296)*1024+(c.charCodeAt(1)-56320);return fromCharCode(240|cc>>>18&7)+fromCharCode(128|cc>>>12&63)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}};var re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;var utob=function(u){return u.replace(re_utob,cb_utob)};var cb_encode=function(ccc){var padlen=[0,2,1][ccc.length%3],ord=ccc.charCodeAt(0)<<16|(ccc.length>1?ccc.charCodeAt(1):0)<<8|(ccc.length>2?ccc.charCodeAt(2):0),chars=[b64chars.charAt(ord>>>18),b64chars.charAt(ord>>>12&63),padlen>=2?"=":b64chars.charAt(ord>>>6&63),padlen>=1?"=":b64chars.charAt(ord&63)];return chars.join("")};var btoa=global.btoa?function(b){return global.btoa(b)}:function(b){return b.replace(/[\s\S]{1,3}/g,cb_encode)};var _encode=buffer?function(u){return(u.constructor===buffer.constructor?u:new buffer(u)).toString("base64")}:function(u){return btoa(utob(u))};var encode=function(u,urisafe){return!urisafe?_encode(String(u)):_encode(String(u)).replace(/[+\/]/g,function(m0){return m0=="+"?"-":"_"}).replace(/=/g,"")};var encodeURI=function(u){return encode(u,true)};var re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g");var cb_btou=function(cccc){switch(cccc.length){case 4:var cp=(7&cccc.charCodeAt(0))<<18|(63&cccc.charCodeAt(1))<<12|(63&cccc.charCodeAt(2))<<6|63&cccc.charCodeAt(3),offset=cp-65536;return fromCharCode((offset>>>10)+55296)+fromCharCode((offset&1023)+56320);case 3:return fromCharCode((15&cccc.charCodeAt(0))<<12|(63&cccc.charCodeAt(1))<<6|63&cccc.charCodeAt(2));default:return fromCharCode((31&cccc.charCodeAt(0))<<6|63&cccc.charCodeAt(1))}};var btou=function(b){return b.replace(re_btou,cb_btou)};var cb_decode=function(cccc){var len=cccc.length,padlen=len%4,n=(len>0?b64tab[cccc.charAt(0)]<<18:0)|(len>1?b64tab[cccc.charAt(1)]<<12:0)|(len>2?b64tab[cccc.charAt(2)]<<6:0)|(len>3?b64tab[cccc.charAt(3)]:0),chars=[fromCharCode(n>>>16),fromCharCode(n>>>8&255),fromCharCode(n&255)];chars.length-=[0,0,2,1][padlen];return chars.join("")};var atob=global.atob?function(a){return global.atob(a)}:function(a){return a.replace(/[\s\S]{1,4}/g,cb_decode)};var _decode=buffer?function(a){return(a.constructor===buffer.constructor?a:new buffer(a,"base64")).toString()}:function(a){return btou(atob(a))};var decode=function(a){return _decode(String(a).replace(/[-_]/g,function(m0){return m0=="-"?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))};var noConflict=function(){var Base64=global.Base64;global.Base64=_Base64;return Base64};global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict};if(typeof Object.defineProperty==="function"){var noEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)}));Object.defineProperty(String.prototype,"toBase64",noEnum(function(urisafe){return encode(this,urisafe)}));Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,true)}))}}if(global["Meteor"]){Base64=global.Base64}})(this)},{buffer:38}],25:[function(require,module,exports){{var util=require("./util");function ArraySet(){this._array=[];this._set={}}ArraySet.fromArray=function ArraySet_fromArray(aArray,aAllowDuplicates){var set=new ArraySet;for(var i=0,len=aArray.length;i<len;i++){set.add(aArray[i],aAllowDuplicates)}return set};ArraySet.prototype.size=function ArraySet_size(){return Object.getOwnPropertyNames(this._set).length};ArraySet.prototype.add=function ArraySet_add(aStr,aAllowDuplicates){var sStr=util.toSetString(aStr);var isDuplicate=this._set.hasOwnProperty(sStr);var idx=this._array.length;if(!isDuplicate||aAllowDuplicates){this._array.push(aStr)}if(!isDuplicate){this._set[sStr]=idx}};ArraySet.prototype.has=function ArraySet_has(aStr){var sStr=util.toSetString(aStr);return this._set.hasOwnProperty(sStr)};ArraySet.prototype.indexOf=function ArraySet_indexOf(aStr){var sStr=util.toSetString(aStr);if(this._set.hasOwnProperty(sStr)){return this._set[sStr]}throw new Error('"'+aStr+'" is not in the set.')};ArraySet.prototype.at=function ArraySet_at(aIdx){if(aIdx>=0&&aIdx<this._array.length){return this._array[aIdx]}throw new Error("No element indexed by "+aIdx)};ArraySet.prototype.toArray=function ArraySet_toArray(){return this._array.slice()};exports.ArraySet=ArraySet}},{"./util":34}],26:[function(require,module,exports){{var base64=require("./base64");var VLQ_BASE_SHIFT=5;var VLQ_BASE=1<<VLQ_BASE_SHIFT;var VLQ_BASE_MASK=VLQ_BASE-1;var VLQ_CONTINUATION_BIT=VLQ_BASE;function toVLQSigned(aValue){return aValue<0?(-aValue<<1)+1:(aValue<<1)+0}function fromVLQSigned(aValue){var isNegative=(aValue&1)===1;var shifted=aValue>>1;return isNegative?-shifted:shifted}exports.encode=function base64VLQ_encode(aValue){var encoded="";var digit;var vlq=toVLQSigned(aValue);do{digit=vlq&VLQ_BASE_MASK;vlq>>>=VLQ_BASE_SHIFT;if(vlq>0){digit|=VLQ_CONTINUATION_BIT}encoded+=base64.encode(digit)}while(vlq>0);return encoded};exports.decode=function base64VLQ_decode(aStr,aIndex,aOutParam){var strLen=aStr.length;var result=0;var shift=0;var continuation,digit;do{if(aIndex>=strLen){throw new Error("Expected more digits in base 64 VLQ value.")}digit=base64.decode(aStr.charCodeAt(aIndex++));if(digit===-1){throw new Error("Invalid base64 digit: "+aStr.charAt(aIndex-1))}continuation=!!(digit&VLQ_CONTINUATION_BIT);digit&=VLQ_BASE_MASK;result=result+(digit<<shift);shift+=VLQ_BASE_SHIFT}while(continuation);aOutParam.value=fromVLQSigned(result);aOutParam.rest=aIndex}}},{"./base64":27}],27:[function(require,module,exports){{var intToCharMap="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");exports.encode=function(number){if(0<=number&&number<intToCharMap.length){return intToCharMap[number]}throw new TypeError("Must be between 0 and 63: "+number)};exports.decode=function(charCode){var bigA=65;var bigZ=90;var littleA=97;var littleZ=122;var zero=48;var nine=57;var plus=43;var slash=47;var littleOffset=26;var numberOffset=52;if(bigA<=charCode&&charCode<=bigZ){return charCode-bigA}if(littleA<=charCode&&charCode<=littleZ){return charCode-littleA+littleOffset}if(zero<=charCode&&charCode<=nine){return charCode-zero+numberOffset}if(charCode==plus){return 62}if(charCode==slash){return 63}return-1}}},{}],28:[function(require,module,exports){{exports.GREATEST_LOWER_BOUND=1;exports.LEAST_UPPER_BOUND=2;function recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare,aBias){var mid=Math.floor((aHigh-aLow)/2)+aLow;var cmp=aCompare(aNeedle,aHaystack[mid],true);if(cmp===0){return mid}else if(cmp>0){if(aHigh-mid>1){return recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare,aBias)}if(aBias==exports.LEAST_UPPER_BOUND){return aHigh<aHaystack.length?aHigh:-1}else{return mid}}else{if(mid-aLow>1){return recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare,aBias)}if(aBias==exports.LEAST_UPPER_BOUND){return mid}else{return aLow<0?-1:aLow}}}exports.search=function search(aNeedle,aHaystack,aCompare,aBias){if(aHaystack.length===0){return-1}var index=recursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare,aBias||exports.GREATEST_LOWER_BOUND);if(index<0){return-1}while(index-1>=0){if(aCompare(aHaystack[index],aHaystack[index-1],true)!==0){break}--index}return index}}},{}],29:[function(require,module,exports){{var util=require("./util");function generatedPositionAfter(mappingA,mappingB){var lineA=mappingA.generatedLine;var lineB=mappingB.generatedLine;var columnA=mappingA.generatedColumn;var columnB=mappingB.generatedColumn;return lineB>lineA||lineB==lineA&&columnB>=columnA||util.compareByGeneratedPositionsInflated(mappingA,mappingB)<=0}function MappingList(){this._array=[];this._sorted=true;this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function MappingList_forEach(aCallback,aThisArg){this._array.forEach(aCallback,aThisArg)};MappingList.prototype.add=function MappingList_add(aMapping){if(generatedPositionAfter(this._last,aMapping)){this._last=aMapping;this._array.push(aMapping)}else{this._sorted=false;this._array.push(aMapping)}};MappingList.prototype.toArray=function MappingList_toArray(){if(!this._sorted){this._array.sort(util.compareByGeneratedPositionsInflated);this._sorted=true}return this._array};exports.MappingList=MappingList}},{"./util":34}],30:[function(require,module,exports){{function swap(ary,x,y){var temp=ary[x];ary[x]=ary[y];ary[y]=temp}function randomIntInRange(low,high){return Math.round(low+Math.random()*(high-low))}function doQuickSort(ary,comparator,p,r){if(p<r){var pivotIndex=randomIntInRange(p,r);var i=p-1;swap(ary,pivotIndex,r);var pivot=ary[r];for(var j=p;j<r;j++){if(comparator(ary[j],pivot)<=0){i+=1;swap(ary,i,j)}}swap(ary,i+1,j);var q=i+1;doQuickSort(ary,comparator,p,q-1);doQuickSort(ary,comparator,q+1,r)}}exports.quickSort=function(ary,comparator){doQuickSort(ary,comparator,0,ary.length-1)}}},{}],31:[function(require,module,exports){{var util=require("./util");var binarySearch=require("./binary-search");var ArraySet=require("./array-set").ArraySet;var base64VLQ=require("./base64-vlq");var quickSort=require("./quick-sort").quickSort;function SourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;if(typeof aSourceMap==="string"){sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,""))}return sourceMap.sections!=null?new IndexedSourceMapConsumer(sourceMap):new BasicSourceMapConsumer(sourceMap)}SourceMapConsumer.fromSourceMap=function(aSourceMap){return BasicSourceMapConsumer.fromSourceMap(aSourceMap)};SourceMapConsumer.prototype._version=3;SourceMapConsumer.prototype.__generatedMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{get:function(){if(!this.__generatedMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__generatedMappings}});SourceMapConsumer.prototype.__originalMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{get:function(){if(!this.__originalMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__originalMappings}});SourceMapConsumer.prototype._charIsMappingSeparator=function SourceMapConsumer_charIsMappingSeparator(aStr,index){var c=aStr.charAt(index);return c===";"||c===","};SourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(aStr,aSourceRoot){throw new Error("Subclasses must implement _parseMappings")};SourceMapConsumer.GENERATED_ORDER=1;SourceMapConsumer.ORIGINAL_ORDER=2;SourceMapConsumer.GREATEST_LOWER_BOUND=1;SourceMapConsumer.LEAST_UPPER_BOUND=2;SourceMapConsumer.prototype.eachMapping=function SourceMapConsumer_eachMapping(aCallback,aContext,aOrder){var context=aContext||null;var order=aOrder||SourceMapConsumer.GENERATED_ORDER;var mappings;switch(order){case SourceMapConsumer.GENERATED_ORDER:mappings=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:mappings=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var sourceRoot=this.sourceRoot;mappings.map(function(mapping){var source=mapping.source===null?null:this._sources.at(mapping.source);if(source!=null&&sourceRoot!=null){source=util.join(sourceRoot,source)}return{source:source,generatedLine:mapping.generatedLine,generatedColumn:mapping.generatedColumn,originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:mapping.name===null?null:this._names.at(mapping.name)}},this).forEach(aCallback,context)};SourceMapConsumer.prototype.allGeneratedPositionsFor=function SourceMapConsumer_allGeneratedPositionsFor(aArgs){var line=util.getArg(aArgs,"line");var needle={source:util.getArg(aArgs,"source"),originalLine:line,originalColumn:util.getArg(aArgs,"column",0)};if(this.sourceRoot!=null){needle.source=util.relative(this.sourceRoot,needle.source)}if(!this._sources.has(needle.source)){return[]}needle.source=this._sources.indexOf(needle.source);var mappings=[];var index=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions,binarySearch.LEAST_UPPER_BOUND);if(index>=0){var mapping=this._originalMappings[index];if(aArgs.column===undefined){var originalLine=mapping.originalLine;while(mapping&&mapping.originalLine===originalLine){mappings.push({line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),
lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)});mapping=this._originalMappings[++index]}}else{var originalColumn=mapping.originalColumn;while(mapping&&mapping.originalLine===line&&mapping.originalColumn==originalColumn){mappings.push({line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)});mapping=this._originalMappings[++index]}}}return mappings};exports.SourceMapConsumer=SourceMapConsumer;function BasicSourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;if(typeof aSourceMap==="string"){sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,""))}var version=util.getArg(sourceMap,"version");var sources=util.getArg(sourceMap,"sources");var names=util.getArg(sourceMap,"names",[]);var sourceRoot=util.getArg(sourceMap,"sourceRoot",null);var sourcesContent=util.getArg(sourceMap,"sourcesContent",null);var mappings=util.getArg(sourceMap,"mappings");var file=util.getArg(sourceMap,"file",null);if(version!=this._version){throw new Error("Unsupported version: "+version)}sources=sources.map(util.normalize).map(function(source){return sourceRoot&&util.isAbsolute(sourceRoot)&&util.isAbsolute(source)?util.relative(sourceRoot,source):source});this._names=ArraySet.fromArray(names,true);this._sources=ArraySet.fromArray(sources,true);this.sourceRoot=sourceRoot;this.sourcesContent=sourcesContent;this._mappings=mappings;this.file=file}BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer;BasicSourceMapConsumer.fromSourceMap=function SourceMapConsumer_fromSourceMap(aSourceMap){var smc=Object.create(BasicSourceMapConsumer.prototype);var names=smc._names=ArraySet.fromArray(aSourceMap._names.toArray(),true);var sources=smc._sources=ArraySet.fromArray(aSourceMap._sources.toArray(),true);smc.sourceRoot=aSourceMap._sourceRoot;smc.sourcesContent=aSourceMap._generateSourcesContent(smc._sources.toArray(),smc.sourceRoot);smc.file=aSourceMap._file;var generatedMappings=aSourceMap._mappings.toArray().slice();var destGeneratedMappings=smc.__generatedMappings=[];var destOriginalMappings=smc.__originalMappings=[];for(var i=0,length=generatedMappings.length;i<length;i++){var srcMapping=generatedMappings[i];var destMapping=new Mapping;destMapping.generatedLine=srcMapping.generatedLine;destMapping.generatedColumn=srcMapping.generatedColumn;if(srcMapping.source){destMapping.source=sources.indexOf(srcMapping.source);destMapping.originalLine=srcMapping.originalLine;destMapping.originalColumn=srcMapping.originalColumn;if(srcMapping.name){destMapping.name=names.indexOf(srcMapping.name)}destOriginalMappings.push(destMapping)}destGeneratedMappings.push(destMapping)}quickSort(smc.__originalMappings,util.compareByOriginalPositions);return smc};BasicSourceMapConsumer.prototype._version=3;Object.defineProperty(BasicSourceMapConsumer.prototype,"sources",{get:function(){return this._sources.toArray().map(function(s){return this.sourceRoot!=null?util.join(this.sourceRoot,s):s},this)}});function Mapping(){this.generatedLine=0;this.generatedColumn=0;this.source=null;this.originalLine=null;this.originalColumn=null;this.name=null}BasicSourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(aStr,aSourceRoot){var generatedLine=1;var previousGeneratedColumn=0;var previousOriginalLine=0;var previousOriginalColumn=0;var previousSource=0;var previousName=0;var length=aStr.length;var index=0;var cachedSegments={};var temp={};var originalMappings=[];var generatedMappings=[];var mapping,str,segment,end,value;while(index<length){if(aStr.charAt(index)===";"){generatedLine++;index++;previousGeneratedColumn=0}else if(aStr.charAt(index)===","){index++}else{mapping=new Mapping;mapping.generatedLine=generatedLine;for(end=index;end<length;end++){if(this._charIsMappingSeparator(aStr,end)){break}}str=aStr.slice(index,end);segment=cachedSegments[str];if(segment){index+=str.length}else{segment=[];while(index<end){base64VLQ.decode(aStr,index,temp);value=temp.value;index=temp.rest;segment.push(value)}if(segment.length===2){throw new Error("Found a source, but no line and column")}if(segment.length===3){throw new Error("Found a source and line, but no column")}cachedSegments[str]=segment}mapping.generatedColumn=previousGeneratedColumn+segment[0];previousGeneratedColumn=mapping.generatedColumn;if(segment.length>1){mapping.source=previousSource+segment[1];previousSource+=segment[1];mapping.originalLine=previousOriginalLine+segment[2];previousOriginalLine=mapping.originalLine;mapping.originalLine+=1;mapping.originalColumn=previousOriginalColumn+segment[3];previousOriginalColumn=mapping.originalColumn;if(segment.length>4){mapping.name=previousName+segment[4];previousName+=segment[4]}}generatedMappings.push(mapping);if(typeof mapping.originalLine==="number"){originalMappings.push(mapping)}}}quickSort(generatedMappings,util.compareByGeneratedPositionsDeflated);this.__generatedMappings=generatedMappings;quickSort(originalMappings,util.compareByOriginalPositions);this.__originalMappings=originalMappings};BasicSourceMapConsumer.prototype._findMapping=function SourceMapConsumer_findMapping(aNeedle,aMappings,aLineName,aColumnName,aComparator,aBias){if(aNeedle[aLineName]<=0){throw new TypeError("Line must be greater than or equal to 1, got "+aNeedle[aLineName])}if(aNeedle[aColumnName]<0){throw new TypeError("Column must be greater than or equal to 0, got "+aNeedle[aColumnName])}return binarySearch.search(aNeedle,aMappings,aComparator,aBias)};BasicSourceMapConsumer.prototype.computeColumnSpans=function SourceMapConsumer_computeColumnSpans(){for(var index=0;index<this._generatedMappings.length;++index){var mapping=this._generatedMappings[index];if(index+1<this._generatedMappings.length){var nextMapping=this._generatedMappings[index+1];if(mapping.generatedLine===nextMapping.generatedLine){mapping.lastGeneratedColumn=nextMapping.generatedColumn-1;continue}}mapping.lastGeneratedColumn=Infinity}};BasicSourceMapConsumer.prototype.originalPositionFor=function SourceMapConsumer_originalPositionFor(aArgs){var needle={generatedLine:util.getArg(aArgs,"line"),generatedColumn:util.getArg(aArgs,"column")};var index=this._findMapping(needle,this._generatedMappings,"generatedLine","generatedColumn",util.compareByGeneratedPositionsDeflated,util.getArg(aArgs,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(index>=0){var mapping=this._generatedMappings[index];if(mapping.generatedLine===needle.generatedLine){var source=util.getArg(mapping,"source",null);if(source!==null){source=this._sources.at(source);if(this.sourceRoot!=null){source=util.join(this.sourceRoot,source)}}var name=util.getArg(mapping,"name",null);if(name!==null){name=this._names.at(name)}return{source:source,line:util.getArg(mapping,"originalLine",null),column:util.getArg(mapping,"originalColumn",null),name:name}}}return{source:null,line:null,column:null,name:null}};BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function BasicSourceMapConsumer_hasContentsOfAllSources(){if(!this.sourcesContent){return false}return this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(sc){return sc==null})};BasicSourceMapConsumer.prototype.sourceContentFor=function SourceMapConsumer_sourceContentFor(aSource,nullOnMissing){if(!this.sourcesContent){return null}if(this.sourceRoot!=null){aSource=util.relative(this.sourceRoot,aSource)}if(this._sources.has(aSource)){return this.sourcesContent[this._sources.indexOf(aSource)]}var url;if(this.sourceRoot!=null&&(url=util.urlParse(this.sourceRoot))){var fileUriAbsPath=aSource.replace(/^file:\/\//,"");if(url.scheme=="file"&&this._sources.has(fileUriAbsPath)){return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]}if((!url.path||url.path=="/")&&this._sources.has("/"+aSource)){return this.sourcesContent[this._sources.indexOf("/"+aSource)]}}if(nullOnMissing){return null}else{throw new Error('"'+aSource+'" is not in the SourceMap.')}};BasicSourceMapConsumer.prototype.generatedPositionFor=function SourceMapConsumer_generatedPositionFor(aArgs){var source=util.getArg(aArgs,"source");if(this.sourceRoot!=null){source=util.relative(this.sourceRoot,source)}if(!this._sources.has(source)){return{line:null,column:null,lastColumn:null}}source=this._sources.indexOf(source);var needle={source:source,originalLine:util.getArg(aArgs,"line"),originalColumn:util.getArg(aArgs,"column")};var index=this._findMapping(needle,this._originalMappings,"originalLine","originalColumn",util.compareByOriginalPositions,util.getArg(aArgs,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(index>=0){var mapping=this._originalMappings[index];if(mapping.source===needle.source){return{line:util.getArg(mapping,"generatedLine",null),column:util.getArg(mapping,"generatedColumn",null),lastColumn:util.getArg(mapping,"lastGeneratedColumn",null)}}}return{line:null,column:null,lastColumn:null}};exports.BasicSourceMapConsumer=BasicSourceMapConsumer;function IndexedSourceMapConsumer(aSourceMap){var sourceMap=aSourceMap;if(typeof aSourceMap==="string"){sourceMap=JSON.parse(aSourceMap.replace(/^\)\]\}'/,""))}var version=util.getArg(sourceMap,"version");var sections=util.getArg(sourceMap,"sections");if(version!=this._version){throw new Error("Unsupported version: "+version)}this._sources=new ArraySet;this._names=new ArraySet;var lastOffset={line:-1,column:0};this._sections=sections.map(function(s){if(s.url){throw new Error("Support for url field in sections not implemented.")}var offset=util.getArg(s,"offset");var offsetLine=util.getArg(offset,"line");var offsetColumn=util.getArg(offset,"column");if(offsetLine<lastOffset.line||offsetLine===lastOffset.line&&offsetColumn<lastOffset.column){throw new Error("Section offsets must be ordered and non-overlapping.")}lastOffset=offset;return{generatedOffset:{generatedLine:offsetLine+1,generatedColumn:offsetColumn+1},consumer:new SourceMapConsumer(util.getArg(s,"map"))}})}IndexedSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);IndexedSourceMapConsumer.prototype.constructor=SourceMapConsumer;IndexedSourceMapConsumer.prototype._version=3;Object.defineProperty(IndexedSourceMapConsumer.prototype,"sources",{get:function(){var sources=[];for(var i=0;i<this._sections.length;i++){for(var j=0;j<this._sections[i].consumer.sources.length;j++){sources.push(this._sections[i].consumer.sources[j])}}return sources}});IndexedSourceMapConsumer.prototype.originalPositionFor=function IndexedSourceMapConsumer_originalPositionFor(aArgs){var needle={generatedLine:util.getArg(aArgs,"line"),generatedColumn:util.getArg(aArgs,"column")};var sectionIndex=binarySearch.search(needle,this._sections,function(needle,section){var cmp=needle.generatedLine-section.generatedOffset.generatedLine;if(cmp){return cmp}return needle.generatedColumn-section.generatedOffset.generatedColumn});var section=this._sections[sectionIndex];if(!section){return{source:null,line:null,column:null,name:null}}return section.consumer.originalPositionFor({line:needle.generatedLine-(section.generatedOffset.generatedLine-1),column:needle.generatedColumn-(section.generatedOffset.generatedLine===needle.generatedLine?section.generatedOffset.generatedColumn-1:0),bias:aArgs.bias})};IndexedSourceMapConsumer.prototype.hasContentsOfAllSources=function IndexedSourceMapConsumer_hasContentsOfAllSources(){return this._sections.every(function(s){return s.consumer.hasContentsOfAllSources()})};IndexedSourceMapConsumer.prototype.sourceContentFor=function IndexedSourceMapConsumer_sourceContentFor(aSource,nullOnMissing){for(var i=0;i<this._sections.length;i++){var section=this._sections[i];var content=section.consumer.sourceContentFor(aSource,true);if(content){return content}}if(nullOnMissing){return null}else{throw new Error('"'+aSource+'" is not in the SourceMap.')}};IndexedSourceMapConsumer.prototype.generatedPositionFor=function IndexedSourceMapConsumer_generatedPositionFor(aArgs){for(var i=0;i<this._sections.length;i++){var section=this._sections[i];if(section.consumer.sources.indexOf(util.getArg(aArgs,"source"))===-1){continue}var generatedPosition=section.consumer.generatedPositionFor(aArgs);if(generatedPosition){var ret={line:generatedPosition.line+(section.generatedOffset.generatedLine-1),column:generatedPosition.column+(section.generatedOffset.generatedLine===generatedPosition.line?section.generatedOffset.generatedColumn-1:0)};return ret}}return{line:null,column:null}};IndexedSourceMapConsumer.prototype._parseMappings=function IndexedSourceMapConsumer_parseMappings(aStr,aSourceRoot){this.__generatedMappings=[];this.__originalMappings=[];for(var i=0;i<this._sections.length;i++){var section=this._sections[i];var sectionMappings=section.consumer._generatedMappings;for(var j=0;j<sectionMappings.length;j++){var mapping=sectionMappings[j];var source=section.consumer._sources.at(mapping.source);if(section.consumer.sourceRoot!==null){source=util.join(section.consumer.sourceRoot,source)}this._sources.add(source);source=this._sources.indexOf(source);var name=section.consumer._names.at(mapping.name);this._names.add(name);name=this._names.indexOf(name);var adjustedMapping={source:source,generatedLine:mapping.generatedLine+(section.generatedOffset.generatedLine-1),generatedColumn:mapping.generatedColumn+(section.generatedOffset.generatedLine===mapping.generatedLine?section.generatedOffset.generatedColumn-1:0),originalLine:mapping.originalLine,originalColumn:mapping.originalColumn,name:name};this.__generatedMappings.push(adjustedMapping);if(typeof adjustedMapping.originalLine==="number"){this.__originalMappings.push(adjustedMapping)}}}quickSort(this.__generatedMappings,util.compareByGeneratedPositionsDeflated);quickSort(this.__originalMappings,util.compareByOriginalPositions)};exports.IndexedSourceMapConsumer=IndexedSourceMapConsumer}},{"./array-set":25,"./base64-vlq":26,"./binary-search":28,"./quick-sort":30,"./util":34}],32:[function(require,module,exports){{var base64VLQ=require("./base64-vlq");var util=require("./util");var ArraySet=require("./array-set").ArraySet;var MappingList=require("./mapping-list").MappingList;function SourceMapGenerator(aArgs){if(!aArgs){aArgs={}}this._file=util.getArg(aArgs,"file",null);this._sourceRoot=util.getArg(aArgs,"sourceRoot",null);this._skipValidation=util.getArg(aArgs,"skipValidation",false);this._sources=new ArraySet;this._names=new ArraySet;this._mappings=new MappingList;this._sourcesContents=null}SourceMapGenerator.prototype._version=3;SourceMapGenerator.fromSourceMap=function SourceMapGenerator_fromSourceMap(aSourceMapConsumer){var sourceRoot=aSourceMapConsumer.sourceRoot;var generator=new SourceMapGenerator({file:aSourceMapConsumer.file,sourceRoot:sourceRoot});aSourceMapConsumer.eachMapping(function(mapping){var newMapping={generated:{line:mapping.generatedLine,column:mapping.generatedColumn}};if(mapping.source!=null){newMapping.source=mapping.source;if(sourceRoot!=null){newMapping.source=util.relative(sourceRoot,newMapping.source)}newMapping.original={line:mapping.originalLine,column:mapping.originalColumn};if(mapping.name!=null){newMapping.name=mapping.name}}generator.addMapping(newMapping)});aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content!=null){generator.setSourceContent(sourceFile,content)}});return generator};SourceMapGenerator.prototype.addMapping=function SourceMapGenerator_addMapping(aArgs){var generated=util.getArg(aArgs,"generated");var original=util.getArg(aArgs,"original",null);var source=util.getArg(aArgs,"source",null);var name=util.getArg(aArgs,"name",null);if(!this._skipValidation){this._validateMapping(generated,original,source,name)}if(source!=null&&!this._sources.has(source)){this._sources.add(source)}if(name!=null&&!this._names.has(name)){this._names.add(name)}this._mappings.add({generatedLine:generated.line,generatedColumn:generated.column,originalLine:original!=null&&original.line,originalColumn:original!=null&&original.column,source:source,name:name})};SourceMapGenerator.prototype.setSourceContent=function SourceMapGenerator_setSourceContent(aSourceFile,aSourceContent){var source=aSourceFile;if(this._sourceRoot!=null){source=util.relative(this._sourceRoot,source)}if(aSourceContent!=null){if(!this._sourcesContents){this._sourcesContents={}}this._sourcesContents[util.toSetString(source)]=aSourceContent}else if(this._sourcesContents){delete this._sourcesContents[util.toSetString(source)];if(Object.keys(this._sourcesContents).length===0){this._sourcesContents=null}}};SourceMapGenerator.prototype.applySourceMap=function SourceMapGenerator_applySourceMap(aSourceMapConsumer,aSourceFile,aSourceMapPath){var sourceFile=aSourceFile;if(aSourceFile==null){if(aSourceMapConsumer.file==null){throw new Error("SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, "+'or the source map\'s "file" property. Both were omitted.')}sourceFile=aSourceMapConsumer.file}var sourceRoot=this._sourceRoot;if(sourceRoot!=null){sourceFile=util.relative(sourceRoot,sourceFile)}var newSources=new ArraySet;var newNames=new ArraySet;this._mappings.unsortedForEach(function(mapping){if(mapping.source===sourceFile&&mapping.originalLine!=null){var original=aSourceMapConsumer.originalPositionFor({line:mapping.originalLine,column:mapping.originalColumn});if(original.source!=null){mapping.source=original.source;if(aSourceMapPath!=null){mapping.source=util.join(aSourceMapPath,mapping.source)}if(sourceRoot!=null){mapping.source=util.relative(sourceRoot,mapping.source)}mapping.originalLine=original.line;mapping.originalColumn=original.column;if(original.name!=null){mapping.name=original.name}}}var source=mapping.source;if(source!=null&&!newSources.has(source)){newSources.add(source)}var name=mapping.name;if(name!=null&&!newNames.has(name)){newNames.add(name)}},this);this._sources=newSources;this._names=newNames;aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content!=null){if(aSourceMapPath!=null){sourceFile=util.join(aSourceMapPath,sourceFile)}if(sourceRoot!=null){sourceFile=util.relative(sourceRoot,sourceFile)}this.setSourceContent(sourceFile,content)}},this)};SourceMapGenerator.prototype._validateMapping=function SourceMapGenerator_validateMapping(aGenerated,aOriginal,aSource,aName){if(aGenerated&&"line"in aGenerated&&"column"in aGenerated&&aGenerated.line>0&&aGenerated.column>=0&&!aOriginal&&!aSource&&!aName){return}else if(aGenerated&&"line"in aGenerated&&"column"in aGenerated&&aOriginal&&"line"in aOriginal&&"column"in aOriginal&&aGenerated.line>0&&aGenerated.column>=0&&aOriginal.line>0&&aOriginal.column>=0&&aSource){return}else{throw new Error("Invalid mapping: "+JSON.stringify({generated:aGenerated,source:aSource,original:aOriginal,name:aName}))}};SourceMapGenerator.prototype._serializeMappings=function SourceMapGenerator_serializeMappings(){var previousGeneratedColumn=0;var previousGeneratedLine=1;var previousOriginalColumn=0;var previousOriginalLine=0;var previousName=0;var previousSource=0;var result="";var mapping;var nameIdx;var sourceIdx;var mappings=this._mappings.toArray();for(var i=0,len=mappings.length;i<len;i++){mapping=mappings[i];if(mapping.generatedLine!==previousGeneratedLine){previousGeneratedColumn=0;while(mapping.generatedLine!==previousGeneratedLine){result+=";";previousGeneratedLine++}}else{if(i>0){if(!util.compareByGeneratedPositionsInflated(mapping,mappings[i-1])){continue}result+=","}}result+=base64VLQ.encode(mapping.generatedColumn-previousGeneratedColumn);previousGeneratedColumn=mapping.generatedColumn;if(mapping.source!=null){sourceIdx=this._sources.indexOf(mapping.source);result+=base64VLQ.encode(sourceIdx-previousSource);previousSource=sourceIdx;result+=base64VLQ.encode(mapping.originalLine-1-previousOriginalLine);previousOriginalLine=mapping.originalLine-1;result+=base64VLQ.encode(mapping.originalColumn-previousOriginalColumn);previousOriginalColumn=mapping.originalColumn;if(mapping.name!=null){nameIdx=this._names.indexOf(mapping.name);result+=base64VLQ.encode(nameIdx-previousName);previousName=nameIdx}}}return result};SourceMapGenerator.prototype._generateSourcesContent=function SourceMapGenerator_generateSourcesContent(aSources,aSourceRoot){return aSources.map(function(source){if(!this._sourcesContents){return null}if(aSourceRoot!=null){source=util.relative(aSourceRoot,source)}var key=util.toSetString(source);return Object.prototype.hasOwnProperty.call(this._sourcesContents,key)?this._sourcesContents[key]:null},this)};SourceMapGenerator.prototype.toJSON=function SourceMapGenerator_toJSON(){var map={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null){map.file=this._file}if(this._sourceRoot!=null){map.sourceRoot=this._sourceRoot}if(this._sourcesContents){map.sourcesContent=this._generateSourcesContent(map.sources,map.sourceRoot)}return map};SourceMapGenerator.prototype.toString=function SourceMapGenerator_toString(){return JSON.stringify(this.toJSON())};exports.SourceMapGenerator=SourceMapGenerator}},{"./array-set":25,"./base64-vlq":26,"./mapping-list":29,"./util":34}],33:[function(require,module,exports){{var SourceMapGenerator=require("./source-map-generator").SourceMapGenerator;var util=require("./util");var REGEX_NEWLINE=/(\r?\n)/;var NEWLINE_CODE=10;var isSourceNode="$$$isSourceNode$$$";function SourceNode(aLine,aColumn,aSource,aChunks,aName){this.children=[];this.sourceContents={};this.line=aLine==null?null:aLine;this.column=aColumn==null?null:aColumn;this.source=aSource==null?null:aSource;this.name=aName==null?null:aName;this[isSourceNode]=true;if(aChunks!=null)this.add(aChunks)}SourceNode.fromStringWithSourceMap=function SourceNode_fromStringWithSourceMap(aGeneratedCode,aSourceMapConsumer,aRelativePath){var node=new SourceNode;var remainingLines=aGeneratedCode.split(REGEX_NEWLINE);var shiftNextLine=function(){var lineContents=remainingLines.shift();var newLine=remainingLines.shift()||"";return lineContents+newLine};var lastGeneratedLine=1,lastGeneratedColumn=0;var lastMapping=null;aSourceMapConsumer.eachMapping(function(mapping){if(lastMapping!==null){if(lastGeneratedLine<mapping.generatedLine){addMappingWithCode(lastMapping,shiftNextLine());lastGeneratedLine++;lastGeneratedColumn=0}else{var nextLine=remainingLines[0];var code=nextLine.substr(0,mapping.generatedColumn-lastGeneratedColumn);remainingLines[0]=nextLine.substr(mapping.generatedColumn-lastGeneratedColumn);lastGeneratedColumn=mapping.generatedColumn;addMappingWithCode(lastMapping,code);lastMapping=mapping;return}}while(lastGeneratedLine<mapping.generatedLine){node.add(shiftNextLine());lastGeneratedLine++}if(lastGeneratedColumn<mapping.generatedColumn){var nextLine=remainingLines[0];node.add(nextLine.substr(0,mapping.generatedColumn));remainingLines[0]=nextLine.substr(mapping.generatedColumn);lastGeneratedColumn=mapping.generatedColumn}lastMapping=mapping},this);if(remainingLines.length>0){if(lastMapping){addMappingWithCode(lastMapping,shiftNextLine())}node.add(remainingLines.join(""))}aSourceMapConsumer.sources.forEach(function(sourceFile){var content=aSourceMapConsumer.sourceContentFor(sourceFile);if(content!=null){if(aRelativePath!=null){sourceFile=util.join(aRelativePath,sourceFile)}node.setSourceContent(sourceFile,content)}});return node;function addMappingWithCode(mapping,code){if(mapping===null||mapping.source===undefined){node.add(code)}else{var source=aRelativePath?util.join(aRelativePath,mapping.source):mapping.source;node.add(new SourceNode(mapping.originalLine,mapping.originalColumn,source,code,mapping.name))}}};SourceNode.prototype.add=function SourceNode_add(aChunk){if(Array.isArray(aChunk)){aChunk.forEach(function(chunk){this.add(chunk)},this)}else if(aChunk[isSourceNode]||typeof aChunk==="string"){if(aChunk){this.children.push(aChunk)}}else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk)}return this};SourceNode.prototype.prepend=function SourceNode_prepend(aChunk){if(Array.isArray(aChunk)){for(var i=aChunk.length-1;i>=0;i--){this.prepend(aChunk[i])}}else if(aChunk[isSourceNode]||typeof aChunk==="string"){this.children.unshift(aChunk)}else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+aChunk)}return this};SourceNode.prototype.walk=function SourceNode_walk(aFn){var chunk;for(var i=0,len=this.children.length;i<len;i++){chunk=this.children[i];if(chunk[isSourceNode]){chunk.walk(aFn)}else{if(chunk!==""){aFn(chunk,{source:this.source,line:this.line,column:this.column,name:this.name})}}}};SourceNode.prototype.join=function SourceNode_join(aSep){var newChildren;var i;var len=this.children.length;if(len>0){newChildren=[];for(i=0;i<len-1;i++){newChildren.push(this.children[i]);newChildren.push(aSep)}newChildren.push(this.children[i]);this.children=newChildren}return this};SourceNode.prototype.replaceRight=function SourceNode_replaceRight(aPattern,aReplacement){var lastChild=this.children[this.children.length-1];if(lastChild[isSourceNode]){lastChild.replaceRight(aPattern,aReplacement)}else if(typeof lastChild==="string"){this.children[this.children.length-1]=lastChild.replace(aPattern,aReplacement)}else{this.children.push("".replace(aPattern,aReplacement))}return this};SourceNode.prototype.setSourceContent=function SourceNode_setSourceContent(aSourceFile,aSourceContent){this.sourceContents[util.toSetString(aSourceFile)]=aSourceContent};SourceNode.prototype.walkSourceContents=function SourceNode_walkSourceContents(aFn){for(var i=0,len=this.children.length;i<len;i++){if(this.children[i][isSourceNode]){this.children[i].walkSourceContents(aFn)}}var sources=Object.keys(this.sourceContents);for(var i=0,len=sources.length;i<len;i++){aFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]])}};SourceNode.prototype.toString=function SourceNode_toString(){var str="";this.walk(function(chunk){str+=chunk});return str};SourceNode.prototype.toStringWithSourceMap=function SourceNode_toStringWithSourceMap(aArgs){var generated={code:"",line:1,column:0};var map=new SourceMapGenerator(aArgs);var sourceMappingActive=false;var lastOriginalSource=null;var lastOriginalLine=null;var lastOriginalColumn=null;var lastOriginalName=null;this.walk(function(chunk,original){generated.code+=chunk;if(original.source!==null&&original.line!==null&&original.column!==null){if(lastOriginalSource!==original.source||lastOriginalLine!==original.line||lastOriginalColumn!==original.column||lastOriginalName!==original.name){map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name})}lastOriginalSource=original.source;lastOriginalLine=original.line;lastOriginalColumn=original.column;lastOriginalName=original.name;sourceMappingActive=true}else if(sourceMappingActive){map.addMapping({generated:{line:generated.line,column:generated.column}});lastOriginalSource=null;sourceMappingActive=false}for(var idx=0,length=chunk.length;idx<length;idx++){if(chunk.charCodeAt(idx)===NEWLINE_CODE){generated.line++;generated.column=0;if(idx+1===length){lastOriginalSource=null;sourceMappingActive=false}else if(sourceMappingActive){map.addMapping({source:original.source,original:{line:original.line,column:original.column},generated:{line:generated.line,column:generated.column},name:original.name})}}else{generated.column++}}});this.walkSourceContents(function(sourceFile,sourceContent){map.setSourceContent(sourceFile,sourceContent)});return{code:generated.code,map:map}};exports.SourceNode=SourceNode}},{"./source-map-generator":32,"./util":34}],34:[function(require,module,exports){{function getArg(aArgs,aName,aDefaultValue){if(aName in aArgs){return aArgs[aName]}else if(arguments.length===3){return aDefaultValue}else{throw new Error('"'+aName+'" is a required argument.')}}exports.getArg=getArg;var urlRegexp=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;var dataUrlRegexp=/^data:.+\,.+$/;function urlParse(aUrl){var match=aUrl.match(urlRegexp);if(!match){return null}return{scheme:match[1],auth:match[2],host:match[3],port:match[4],path:match[5]}}exports.urlParse=urlParse;function urlGenerate(aParsedUrl){var url="";if(aParsedUrl.scheme){url+=aParsedUrl.scheme+":"}url+="//";if(aParsedUrl.auth){url+=aParsedUrl.auth+"@"}if(aParsedUrl.host){url+=aParsedUrl.host}if(aParsedUrl.port){url+=":"+aParsedUrl.port}if(aParsedUrl.path){url+=aParsedUrl.path}return url}exports.urlGenerate=urlGenerate;function normalize(aPath){var path=aPath;var url=urlParse(aPath);if(url){if(!url.path){return aPath}path=url.path}var isAbsolute=exports.isAbsolute(path);var parts=path.split(/\/+/);for(var part,up=0,i=parts.length-1;i>=0;i--){part=parts[i];if(part==="."){parts.splice(i,1)}else if(part===".."){up++}else if(up>0){if(part===""){parts.splice(i+1,up);up=0}else{parts.splice(i,2);up--}}}path=parts.join("/");if(path===""){path=isAbsolute?"/":"."}if(url){url.path=path;return urlGenerate(url)}return path}exports.normalize=normalize;function join(aRoot,aPath){if(aRoot===""){aRoot="."}if(aPath===""){aPath="."}var aPathUrl=urlParse(aPath);var aRootUrl=urlParse(aRoot);if(aRootUrl){aRoot=aRootUrl.path||"/"}if(aPathUrl&&!aPathUrl.scheme){if(aRootUrl){aPathUrl.scheme=aRootUrl.scheme}return urlGenerate(aPathUrl)}if(aPathUrl||aPath.match(dataUrlRegexp)){return aPath}if(aRootUrl&&!aRootUrl.host&&!aRootUrl.path){aRootUrl.host=aPath;return urlGenerate(aRootUrl)}var joined=aPath.charAt(0)==="/"?aPath:normalize(aRoot.replace(/\/+$/,"")+"/"+aPath);if(aRootUrl){aRootUrl.path=joined;return urlGenerate(aRootUrl)}return joined}exports.join=join;exports.isAbsolute=function(aPath){return aPath.charAt(0)==="/"||!!aPath.match(urlRegexp)};function relative(aRoot,aPath){if(aRoot===""){aRoot="."}aRoot=aRoot.replace(/\/$/,"");var level=0;while(aPath.indexOf(aRoot+"/")!==0){var index=aRoot.lastIndexOf("/");if(index<0){return aPath}aRoot=aRoot.slice(0,index);if(aRoot.match(/^([^\/]+:\/)?\/*$/)){return aPath}++level}return Array(level+1).join("../")+aPath.substr(aRoot.length+1)}exports.relative=relative;function toSetString(aStr){return"$"+aStr}exports.toSetString=toSetString;function fromSetString(aStr){return aStr.substr(1)}exports.fromSetString=fromSetString;function compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){var cmp=mappingA.source-mappingB.source;if(cmp!==0){return cmp}cmp=mappingA.originalLine-mappingB.originalLine;if(cmp!==0){return cmp}cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp!==0||onlyCompareOriginal){return cmp}cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp!==0){return cmp}cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp!==0){return cmp}return mappingA.name-mappingB.name}exports.compareByOriginalPositions=compareByOriginalPositions;function compareByGeneratedPositionsDeflated(mappingA,mappingB,onlyCompareGenerated){var cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp!==0){return cmp}cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp!==0||onlyCompareGenerated){return cmp}cmp=mappingA.source-mappingB.source;if(cmp!==0){return cmp}cmp=mappingA.originalLine-mappingB.originalLine;if(cmp!==0){return cmp}cmp=mappingA.originalColumn-mappingB.originalColumn;if(cmp!==0){return cmp}return mappingA.name-mappingB.name}exports.compareByGeneratedPositionsDeflated=compareByGeneratedPositionsDeflated;function strcmp(aStr1,aStr2){if(aStr1===aStr2){return 0}if(aStr1>aStr2){return 1}return-1}function compareByGeneratedPositionsInflated(mappingA,mappingB){var cmp=mappingA.generatedLine-mappingB.generatedLine;if(cmp!==0){return cmp}cmp=mappingA.generatedColumn-mappingB.generatedColumn;if(cmp!==0){return cmp}cmp=strcmp(mappingA.source,mappingB.source);if(cmp!==0){return cmp}cmp=mappingA.originalLine-mappingB.originalLine;if(cmp!==0){return cmp}cmp=mappingA.originalColumn-mappingB.originalColumn;
if(cmp!==0){return cmp}return strcmp(mappingA.name,mappingB.name)}exports.compareByGeneratedPositionsInflated=compareByGeneratedPositionsInflated}},{}],35:[function(require,module,exports){exports.SourceMapGenerator=require("./lib/source-map-generator").SourceMapGenerator;exports.SourceMapConsumer=require("./lib/source-map-consumer").SourceMapConsumer;exports.SourceNode=require("./lib/source-node").SourceNode},{"./lib/source-map-consumer":31,"./lib/source-map-generator":32,"./lib/source-node":33}],36:[function(require,module,exports){"use strict";module.exports=false},{}],37:[function(require,module,exports){},{}],38:[function(require,module,exports){var base64=require("base64-js");var ieee754=require("ieee754");exports.Buffer=Buffer;exports.SlowBuffer=Buffer;exports.INSPECT_MAX_BYTES=50;Buffer.poolSize=8192;var TYPED_ARRAY_SUPPORT=function(){try{var buf=new ArrayBuffer(0);var arr=new Uint8Array(buf);arr.foo=function(){return 42};return 42===arr.foo()&&typeof arr.subarray==="function"&&new Uint8Array(1).subarray(1,1).byteLength===0}catch(e){return false}}();function Buffer(subject,encoding,noZero){if(!(this instanceof Buffer))return new Buffer(subject,encoding,noZero);var type=typeof subject;var length;if(type==="number")length=subject>0?subject>>>0:0;else if(type==="string"){if(encoding==="base64")subject=base64clean(subject);length=Buffer.byteLength(subject,encoding)}else if(type==="object"&&subject!==null){if(subject.type==="Buffer"&&isArray(subject.data))subject=subject.data;length=+subject.length>0?Math.floor(+subject.length):0}else throw new Error("First argument needs to be a number, array or string.");var buf;if(TYPED_ARRAY_SUPPORT){buf=Buffer._augment(new Uint8Array(length))}else{buf=this;buf.length=length;buf._isBuffer=true}var i;if(TYPED_ARRAY_SUPPORT&&typeof subject.byteLength==="number"){buf._set(subject)}else if(isArrayish(subject)){if(Buffer.isBuffer(subject)){for(i=0;i<length;i++)buf[i]=subject.readUInt8(i)}else{for(i=0;i<length;i++)buf[i]=(subject[i]%256+256)%256}}else if(type==="string"){buf.write(subject,0,encoding)}else if(type==="number"&&!TYPED_ARRAY_SUPPORT&&!noZero){for(i=0;i<length;i++){buf[i]=0}}return buf}Buffer.isEncoding=function(encoding){switch(String(encoding).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return true;default:return false}};Buffer.isBuffer=function(b){return!!(b!=null&&b._isBuffer)};Buffer.byteLength=function(str,encoding){var ret;str=str.toString();switch(encoding||"utf8"){case"hex":ret=str.length/2;break;case"utf8":case"utf-8":ret=utf8ToBytes(str).length;break;case"ascii":case"binary":case"raw":ret=str.length;break;case"base64":ret=base64ToBytes(str).length;break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":ret=str.length*2;break;default:throw new Error("Unknown encoding")}return ret};Buffer.concat=function(list,totalLength){assert(isArray(list),"Usage: Buffer.concat(list[, length])");if(list.length===0){return new Buffer(0)}else if(list.length===1){return list[0]}var i;if(totalLength===undefined){totalLength=0;for(i=0;i<list.length;i++){totalLength+=list[i].length}}var buf=new Buffer(totalLength);var pos=0;for(i=0;i<list.length;i++){var item=list[i];item.copy(buf,pos);pos+=item.length}return buf};Buffer.compare=function(a,b){assert(Buffer.isBuffer(a)&&Buffer.isBuffer(b),"Arguments must be Buffers");var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i<len&&a[i]===b[i];i++){}if(i!==len){x=a[i];y=b[i]}if(x<y){return-1}if(y<x){return 1}return 0};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;var remaining=buf.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}var strLen=string.length;assert(strLen%2===0,"Invalid hex string");if(length>strLen/2){length=strLen/2}for(var i=0;i<length;i++){var byte=parseInt(string.substr(i*2,2),16);assert(!isNaN(byte),"Invalid hex string");buf[offset+i]=byte}return i}function utf8Write(buf,string,offset,length){var charsWritten=blitBuffer(utf8ToBytes(string),buf,offset,length);return charsWritten}function asciiWrite(buf,string,offset,length){var charsWritten=blitBuffer(asciiToBytes(string),buf,offset,length);return charsWritten}function binaryWrite(buf,string,offset,length){return asciiWrite(buf,string,offset,length)}function base64Write(buf,string,offset,length){var charsWritten=blitBuffer(base64ToBytes(string),buf,offset,length);return charsWritten}function utf16leWrite(buf,string,offset,length){var charsWritten=blitBuffer(utf16leToBytes(string),buf,offset,length);return charsWritten}Buffer.prototype.write=function(string,offset,length,encoding){if(isFinite(offset)){if(!isFinite(length)){encoding=length;length=undefined}}else{var swap=encoding;encoding=offset;offset=length;length=swap}offset=Number(offset)||0;var remaining=this.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}encoding=String(encoding||"utf8").toLowerCase();var ret;switch(encoding){case"hex":ret=hexWrite(this,string,offset,length);break;case"utf8":case"utf-8":ret=utf8Write(this,string,offset,length);break;case"ascii":ret=asciiWrite(this,string,offset,length);break;case"binary":ret=binaryWrite(this,string,offset,length);break;case"base64":ret=base64Write(this,string,offset,length);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":ret=utf16leWrite(this,string,offset,length);break;default:throw new Error("Unknown encoding")}return ret};Buffer.prototype.toString=function(encoding,start,end){var self=this;encoding=String(encoding||"utf8").toLowerCase();start=Number(start)||0;end=end===undefined?self.length:Number(end);if(end===start)return"";var ret;switch(encoding){case"hex":ret=hexSlice(self,start,end);break;case"utf8":case"utf-8":ret=utf8Slice(self,start,end);break;case"ascii":ret=asciiSlice(self,start,end);break;case"binary":ret=binarySlice(self,start,end);break;case"base64":ret=base64Slice(self,start,end);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":ret=utf16leSlice(self,start,end);break;default:throw new Error("Unknown encoding")}return ret};Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};Buffer.prototype.equals=function(b){assert(Buffer.isBuffer(b),"Argument must be a Buffer");return Buffer.compare(this,b)===0};Buffer.prototype.compare=function(b){assert(Buffer.isBuffer(b),"Argument must be a Buffer");return Buffer.compare(this,b)};Buffer.prototype.copy=function(target,target_start,start,end){var source=this;if(!start)start=0;if(!end&&end!==0)end=this.length;if(!target_start)target_start=0;if(end===start)return;if(target.length===0||source.length===0)return;assert(end>=start,"sourceEnd < sourceStart");assert(target_start>=0&&target_start<target.length,"targetStart out of bounds");assert(start>=0&&start<source.length,"sourceStart out of bounds");assert(end>=0&&end<=source.length,"sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-target_start<end-start)end=target.length-target_start+start;var len=end-start;if(len<100||!TYPED_ARRAY_SUPPORT){for(var i=0;i<len;i++){target[i+target_start]=this[i+start]}}else{target._set(this.subarray(start,start+len),target_start)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){var res="";var tmp="";end=Math.min(buf.length,end);for(var i=start;i<end;i++){if(buf[i]<=127){res+=decodeUtf8Char(tmp)+String.fromCharCode(buf[i]);tmp=""}else{tmp+="%"+buf[i].toString(16)}}return res+decodeUtf8Char(tmp)}function asciiSlice(buf,start,end){var ret="";end=Math.min(buf.length,end);for(var i=start;i<end;i++){ret+=String.fromCharCode(buf[i])}return ret}function binarySlice(buf,start,end){return asciiSlice(buf,start,end)}function hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;var out="";for(var i=start;i<end;i++){out+=toHex(buf[i])}return out}function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var res="";for(var i=0;i<bytes.length;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}return res}Buffer.prototype.slice=function(start,end){var len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0}else if(start>len){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(end<start)end=start;if(TYPED_ARRAY_SUPPORT){return Buffer._augment(this.subarray(start,end))}else{var sliceLen=end-start;var newBuf=new Buffer(sliceLen,undefined,true);for(var i=0;i<sliceLen;i++){newBuf[i]=this[i+start]}return newBuf}};Buffer.prototype.get=function(offset){console.log(".get() is deprecated. Access using array indexes instead.");return this.readUInt8(offset)};Buffer.prototype.set=function(v,offset){console.log(".set() is deprecated. Access using array indexes instead.");return this.writeUInt8(v,offset)};Buffer.prototype.readUInt8=function(offset,noAssert){if(!noAssert){assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"Trying to read beyond buffer length")}if(offset>=this.length)return;return this[offset]};function readUInt16(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val;if(littleEndian){val=buf[offset];if(offset+1<len)val|=buf[offset+1]<<8}else{val=buf[offset]<<8;if(offset+1<len)val|=buf[offset+1]}return val}Buffer.prototype.readUInt16LE=function(offset,noAssert){return readUInt16(this,offset,true,noAssert)};Buffer.prototype.readUInt16BE=function(offset,noAssert){return readUInt16(this,offset,false,noAssert)};function readUInt32(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val;if(littleEndian){if(offset+2<len)val=buf[offset+2]<<16;if(offset+1<len)val|=buf[offset+1]<<8;val|=buf[offset];if(offset+3<len)val=val+(buf[offset+3]<<24>>>0)}else{if(offset+1<len)val=buf[offset+1]<<16;if(offset+2<len)val|=buf[offset+2]<<8;if(offset+3<len)val|=buf[offset+3];val=val+(buf[offset]<<24>>>0)}return val}Buffer.prototype.readUInt32LE=function(offset,noAssert){return readUInt32(this,offset,true,noAssert)};Buffer.prototype.readUInt32BE=function(offset,noAssert){return readUInt32(this,offset,false,noAssert)};Buffer.prototype.readInt8=function(offset,noAssert){if(!noAssert){assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"Trying to read beyond buffer length")}if(offset>=this.length)return;var neg=this[offset]&128;if(neg)return(255-this[offset]+1)*-1;else return this[offset]};function readInt16(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val=readUInt16(buf,offset,littleEndian,true);var neg=val&32768;if(neg)return(65535-val+1)*-1;else return val}Buffer.prototype.readInt16LE=function(offset,noAssert){return readInt16(this,offset,true,noAssert)};Buffer.prototype.readInt16BE=function(offset,noAssert){return readInt16(this,offset,false,noAssert)};function readInt32(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to read beyond buffer length")}var len=buf.length;if(offset>=len)return;var val=readUInt32(buf,offset,littleEndian,true);var neg=val&2147483648;if(neg)return(4294967295-val+1)*-1;else return val}Buffer.prototype.readInt32LE=function(offset,noAssert){return readInt32(this,offset,true,noAssert)};Buffer.prototype.readInt32BE=function(offset,noAssert){return readInt32(this,offset,false,noAssert)};function readFloat(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset+3<buf.length,"Trying to read beyond buffer length")}return ieee754.read(buf,offset,littleEndian,23,4)}Buffer.prototype.readFloatLE=function(offset,noAssert){return readFloat(this,offset,true,noAssert)};Buffer.prototype.readFloatBE=function(offset,noAssert){return readFloat(this,offset,false,noAssert)};function readDouble(buf,offset,littleEndian,noAssert){if(!noAssert){assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset+7<buf.length,"Trying to read beyond buffer length")}return ieee754.read(buf,offset,littleEndian,52,8)}Buffer.prototype.readDoubleLE=function(offset,noAssert){return readDouble(this,offset,true,noAssert)};Buffer.prototype.readDoubleBE=function(offset,noAssert){return readDouble(this,offset,false,noAssert)};Buffer.prototype.writeUInt8=function(value,offset,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"trying to write beyond buffer length");verifuint(value,255)}if(offset>=this.length)return;this[offset]=value;return offset+1};function writeUInt16(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"trying to write beyond buffer length");verifuint(value,65535)}var len=buf.length;if(offset>=len)return;for(var i=0,j=Math.min(len-offset,2);i<j;i++){buf[offset+i]=(value&255<<8*(littleEndian?i:1-i))>>>(littleEndian?i:1-i)*8}return offset+2}Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){return writeUInt16(this,value,offset,true,noAssert)};Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){return writeUInt16(this,value,offset,false,noAssert)};function writeUInt32(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"trying to write beyond buffer length");verifuint(value,4294967295)}var len=buf.length;if(offset>=len)return;for(var i=0,j=Math.min(len-offset,4);i<j;i++){buf[offset+i]=value>>>(littleEndian?i:3-i)*8&255}return offset+4}Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){return writeUInt32(this,value,offset,true,noAssert)};Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){return writeUInt32(this,value,offset,false,noAssert)};Buffer.prototype.writeInt8=function(value,offset,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset<this.length,"Trying to write beyond buffer length");verifsint(value,127,-128)}if(offset>=this.length)return;if(value>=0)this.writeUInt8(value,offset,noAssert);else this.writeUInt8(255+value+1,offset,noAssert);return offset+1};function writeInt16(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+1<buf.length,"Trying to write beyond buffer length");verifsint(value,32767,-32768)}var len=buf.length;if(offset>=len)return;if(value>=0)writeUInt16(buf,value,offset,littleEndian,noAssert);else writeUInt16(buf,65535+value+1,offset,littleEndian,noAssert);return offset+2}Buffer.prototype.writeInt16LE=function(value,offset,noAssert){return writeInt16(this,value,offset,true,noAssert)};Buffer.prototype.writeInt16BE=function(value,offset,noAssert){return writeInt16(this,value,offset,false,noAssert)};function writeInt32(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to write beyond buffer length");verifsint(value,2147483647,-2147483648)}var len=buf.length;if(offset>=len)return;if(value>=0)writeUInt32(buf,value,offset,littleEndian,noAssert);else writeUInt32(buf,4294967295+value+1,offset,littleEndian,noAssert);return offset+4}Buffer.prototype.writeInt32LE=function(value,offset,noAssert){return writeInt32(this,value,offset,true,noAssert)};Buffer.prototype.writeInt32BE=function(value,offset,noAssert){return writeInt32(this,value,offset,false,noAssert)};function writeFloat(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+3<buf.length,"Trying to write beyond buffer length");verifIEEE754(value,3.4028234663852886e38,-3.4028234663852886e38)}var len=buf.length;if(offset>=len)return;ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(!noAssert){assert(value!==undefined&&value!==null,"missing value");assert(typeof littleEndian==="boolean","missing or invalid endian");assert(offset!==undefined&&offset!==null,"missing offset");assert(offset+7<buf.length,"Trying to write beyond buffer length");verifIEEE754(value,1.7976931348623157e308,-1.7976931348623157e308)}var len=buf.length;if(offset>=len)return;ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.fill=function(value,start,end){if(!value)value=0;if(!start)start=0;if(!end)end=this.length;assert(end>=start,"end < start");if(end===start)return;if(this.length===0)return;assert(start>=0&&start<this.length,"start out of bounds");assert(end>=0&&end<=this.length,"end out of bounds");var i;if(typeof value==="number"){for(i=start;i<end;i++){this[i]=value}}else{var bytes=utf8ToBytes(value.toString());var len=bytes.length;for(i=start;i<end;i++){this[i]=bytes[i%len]}}return this};Buffer.prototype.inspect=function(){var out=[];var len=this.length;for(var i=0;i<len;i++){out[i]=toHex(this[i]);if(i===exports.INSPECT_MAX_BYTES){out[i+1]="...";break}}return"<Buffer "+out.join(" ")+">"};Buffer.prototype.toArrayBuffer=function(){if(typeof Uint8Array!=="undefined"){if(TYPED_ARRAY_SUPPORT){return new Buffer(this).buffer}else{var buf=new Uint8Array(this.length);for(var i=0,len=buf.length;i<len;i+=1){buf[i]=this[i]}return buf.buffer}}else{throw new Error("Buffer.toArrayBuffer not supported in this browser")}};var BP=Buffer.prototype;Buffer._augment=function(arr){arr._isBuffer=true;arr._get=arr.get;arr._set=arr.set;arr.get=BP.get;arr.set=BP.set;arr.write=BP.write;arr.toString=BP.toString;arr.toLocaleString=BP.toString;arr.toJSON=BP.toJSON;arr.equals=BP.equals;arr.compare=BP.compare;arr.copy=BP.copy;arr.slice=BP.slice;arr.readUInt8=BP.readUInt8;arr.readUInt16LE=BP.readUInt16LE;arr.readUInt16BE=BP.readUInt16BE;arr.readUInt32LE=BP.readUInt32LE;arr.readUInt32BE=BP.readUInt32BE;arr.readInt8=BP.readInt8;arr.readInt16LE=BP.readInt16LE;arr.readInt16BE=BP.readInt16BE;arr.readInt32LE=BP.readInt32LE;arr.readInt32BE=BP.readInt32BE;arr.readFloatLE=BP.readFloatLE;arr.readFloatBE=BP.readFloatBE;arr.readDoubleLE=BP.readDoubleLE;arr.readDoubleBE=BP.readDoubleBE;arr.writeUInt8=BP.writeUInt8;arr.writeUInt16LE=BP.writeUInt16LE;arr.writeUInt16BE=BP.writeUInt16BE;arr.writeUInt32LE=BP.writeUInt32LE;arr.writeUInt32BE=BP.writeUInt32BE;arr.writeInt8=BP.writeInt8;arr.writeInt16LE=BP.writeInt16LE;arr.writeInt16BE=BP.writeInt16BE;arr.writeInt32LE=BP.writeInt32LE;arr.writeInt32BE=BP.writeInt32BE;arr.writeFloatLE=BP.writeFloatLE;arr.writeFloatBE=BP.writeFloatBE;arr.writeDoubleLE=BP.writeDoubleLE;arr.writeDoubleBE=BP.writeDoubleBE;arr.fill=BP.fill;arr.inspect=BP.inspect;arr.toArrayBuffer=BP.toArrayBuffer;return arr};var INVALID_BASE64_RE=/[^+\/0-9A-z]/g;function base64clean(str){str=stringtrim(str).replace(INVALID_BASE64_RE,"");while(str.length%4!==0){str=str+"="}return str}function stringtrim(str){if(str.trim)return str.trim();return str.replace(/^\s+|\s+$/g,"")}function isArray(subject){return(Array.isArray||function(subject){return Object.prototype.toString.call(subject)==="[object Array]"})(subject)}function isArrayish(subject){return isArray(subject)||Buffer.isBuffer(subject)||subject&&typeof subject==="object"&&typeof subject.length==="number"}function toHex(n){if(n<16)return"0"+n.toString(16);return n.toString(16)}function utf8ToBytes(str){var byteArray=[];for(var i=0;i<str.length;i++){var b=str.charCodeAt(i);if(b<=127){byteArray.push(b)}else{var start=i;if(b>=55296&&b<=57343)i++;var h=encodeURIComponent(str.slice(start,i+1)).substr(1).split("%");for(var j=0;j<h.length;j++){byteArray.push(parseInt(h[j],16))}}}return byteArray}function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;i++){byteArray.push(str.charCodeAt(i)&255)}return byteArray}function utf16leToBytes(str){var c,hi,lo;var byteArray=[];for(var i=0;i<str.length;i++){c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(str)}function blitBuffer(src,dst,offset,length){for(var i=0;i<length;i++){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function decodeUtf8Char(str){try{return decodeURIComponent(str)}catch(err){return String.fromCharCode(65533)}}function verifuint(value,max){assert(typeof value==="number","cannot write a non-number as a number");assert(value>=0,"specified a negative value for writing an unsigned value");assert(value<=max,"value is larger than maximum value for type");assert(Math.floor(value)===value,"value has a fractional component")}function verifsint(value,max,min){assert(typeof value==="number","cannot write a non-number as a number");assert(value<=max,"value larger than maximum allowed value");assert(value>=min,"value smaller than minimum allowed value");assert(Math.floor(value)===value,"value has a fractional component")}function verifIEEE754(value,max,min){assert(typeof value==="number","cannot write a non-number as a number");assert(value<=max,"value larger than maximum allowed value");assert(value>=min,"value smaller than minimum allowed value")}function assert(test,message){if(!test)throw new Error(message||"Failed assertion")}},{"base64-js":39,ieee754:40}],39:[function(require,module,exports){var lookup="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";(function(exports){"use strict";var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;var PLUS="+".charCodeAt(0);var SLASH="/".charCodeAt(0);var NUMBER="0".charCodeAt(0);var LOWER="a".charCodeAt(0);var UPPER="A".charCodeAt(0);function decode(elt){var code=elt.charCodeAt(0);if(code===PLUS)return 62;if(code===SLASH)return 63;if(code<NUMBER)return-1;if(code<NUMBER+10)return code-NUMBER+26+26;if(code<UPPER+26)return code-UPPER;if(code<LOWER+26)return code-LOWER+26}function b64ToByteArray(b64){var i,j,l,tmp,placeHolders,arr;if(b64.length%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}var len=b64.length;placeHolders="="===b64.charAt(len-2)?2:"="===b64.charAt(len-1)?1:0;arr=new Arr(b64.length*3/4-placeHolders);l=placeHolders>0?b64.length-4:b64.length;var L=0;function push(v){arr[L++]=v}for(i=0,j=0;i<l;i+=4,j+=3){tmp=decode(b64.charAt(i))<<18|decode(b64.charAt(i+1))<<12|decode(b64.charAt(i+2))<<6|decode(b64.charAt(i+3));push((tmp&16711680)>>16);push((tmp&65280)>>8);push(tmp&255)}if(placeHolders===2){tmp=decode(b64.charAt(i))<<2|decode(b64.charAt(i+1))>>4;push(tmp&255)}else if(placeHolders===1){tmp=decode(b64.charAt(i))<<10|decode(b64.charAt(i+1))<<4|decode(b64.charAt(i+2))>>2;push(tmp>>8&255);push(tmp&255)}return arr}function uint8ToBase64(uint8){var i,extraBytes=uint8.length%3,output="",temp,length;function encode(num){return lookup.charAt(num)}function tripletToBase64(num){return encode(num>>18&63)+encode(num>>12&63)+encode(num>>6&63)+encode(num&63)}for(i=0,length=uint8.length-extraBytes;i<length;i+=3){temp=(uint8[i]<<16)+(uint8[i+1]<<8)+uint8[i+2];output+=tripletToBase64(temp)}switch(extraBytes){case 1:temp=uint8[uint8.length-1];output+=encode(temp>>2);output+=encode(temp<<4&63);output+="==";break;case 2:temp=(uint8[uint8.length-2]<<8)+uint8[uint8.length-1];output+=encode(temp>>10);output+=encode(temp>>4&63);output+=encode(temp<<2&63);output+="=";break}return output}exports.toByteArray=b64ToByteArray;exports.fromByteArray=uint8ToBase64})(typeof exports==="undefined"?this.base64js={}:exports)},{}],40:[function(require,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m,eLen=nBytes*8-mLen-1,eMax=(1<<eLen)-1,eBias=eMax>>1,nBits=-7,i=isLE?nBytes-1:0,d=isLE?-1:1,s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8);m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8);if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c,eLen=nBytes*8-mLen-1,eMax=(1<<eLen)-1,eBias=eMax>>1,rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0,i=isLE?0:nBytes-1,d=isLE?1:-1,s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8);e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=s*128}},{}],41:[function(require,module,exports){(function(process){function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){continue}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==="/";path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.isAbsolute=function(path){return path.charAt(0)==="/"};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=="string"){throw new TypeError("Arguments to path.join must be strings")}return p}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")};exports.sep="/";exports.delimiter=":";exports.dirname=function(path){var result=splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir};exports.basename=function(path,ext){var f=splitPath(path)[2];if(ext&&f.substr(-1*ext.length)===ext){f=f.substr(0,f.length-ext.length)}return f};exports.extname=function(path){return splitPath(path)[3]};function filter(xs,f){if(xs.filter)return xs.filter(f);var res=[];for(var i=0;i<xs.length;i++){if(f(xs[i],i,xs))res.push(xs[i])}return res}var substr="ab".substr(-1)==="b"?function(str,start,len){return str.substr(start,len)}:function(str,start,len){if(start<0)start=str.length+start;return str.substr(start,len)}}).call(this,require("_process"))},{_process:42}],42:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}if(canPost){var queue=[];window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],postcss:[function(require,module,exports){"use strict";exports.__esModule=true;var _declaration=require("./declaration");var _declaration2=_interopRequireDefault(_declaration);var _processor=require("./processor");var _processor2=_interopRequireDefault(_processor);var _stringify=require("./stringify");var _stringify2=_interopRequireDefault(_stringify);var _comment=require("./comment");var _comment2=_interopRequireDefault(_comment);var _atRule=require("./at-rule");var _atRule2=_interopRequireDefault(_atRule);var _vendor=require("./vendor");var _vendor2=_interopRequireDefault(_vendor);var _parse=require("./parse");var _parse2=_interopRequireDefault(_parse);var _list=require("./list");var _list2=_interopRequireDefault(_list);var _rule=require("./rule");var _rule2=_interopRequireDefault(_rule);var _root=require("./root");var _root2=_interopRequireDefault(_root);function _interopRequireDefault(obj){
return obj&&obj.__esModule?obj:{"default":obj}}var postcss=function postcss(){for(var _len=arguments.length,plugins=Array(_len),_key=0;_key<_len;_key++){plugins[_key]=arguments[_key]}if(plugins.length===1&&Array.isArray(plugins[0])){plugins=plugins[0]}return new _processor2.default(plugins)};postcss.plugin=function(name,initializer){var creator=function creator(){var transformer=initializer.apply(undefined,arguments);transformer.postcssPlugin=name;transformer.postcssVersion=(new _processor2.default).version;return transformer};creator.postcss=creator();creator.process=function(css,opts){return postcss([creator(opts)]).process(css,opts)};return creator};postcss.stringify=_stringify2.default;postcss.vendor=_vendor2.default;postcss.parse=_parse2.default;postcss.list=_list2.default;postcss.comment=function(defaults){return new _comment2.default(defaults)};postcss.atRule=function(defaults){return new _atRule2.default(defaults)};postcss.decl=function(defaults){return new _declaration2.default(defaults)};postcss.rule=function(defaults){return new _rule2.default(defaults)};postcss.root=function(defaults){return new _root2.default(defaults)};exports.default=postcss;module.exports=exports["default"]},{"./at-rule":1,"./comment":2,"./declaration":5,"./list":8,"./parse":11,"./processor":14,"./root":16,"./rule":17,"./stringify":19,"./vendor":21}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default={customProperties:["css-variables"],initial:["css-all","css-initial-value"],rem:["rem"],pseudoElements:["css-gencontent"],colorRgba:["css3-colors"]}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default={customProperties:function customProperties(options){return require("postcss-custom-properties")(options)},calc:function calc(options){return require("postcss-calc")(options)},nesting:function nesting(options){return require("postcss-nesting")(options)},customMedia:function customMedia(options){return require("postcss-custom-media")(options)},mediaQueriesRange:function mediaQueriesRange(options){return require("postcss-media-minmax")(options)},customSelectors:function customSelectors(options){return require("postcss-custom-selectors")(options)},colorRebeccapurple:function colorRebeccapurple(options){return require("postcss-color-rebeccapurple")(options)},colorHwb:function colorHwb(options){return require("postcss-color-hwb")(options)},colorGray:function colorGray(options){return require("postcss-color-gray")(options)},colorHexAlpha:function colorHexAlpha(options){return require("postcss-color-hex-alpha")(options)},colorFunction:function colorFunction(options){return require("postcss-color-function")(options)},fontVariant:function fontVariant(options){return require("postcss-font-variant")(options)},filter:function filter(options){return require("pleeease-filters")(options)},initial:function initial(options){return require("postcss-initial")(options)},rem:function rem(options){return require("pixrem")(options)},pseudoElements:function pseudoElements(options){return require("postcss-pseudoelements")(options)},pseudoClassMatches:function pseudoClassMatches(options){return require("postcss-selector-matches")(options)},pseudoClassNot:function pseudoClassNot(options){return require("postcss-selector-not")(options)},pseudoClassAnyLink:function pseudoClassAnyLink(options){return require("postcss-pseudo-class-any-link")(options)},colorRgba:function colorRgba(options){return require("postcss-color-rgba-fallback")(options)},autoprefixer:function autoprefixer(options){return require("autoprefixer")(options)}}},{autoprefixer:6,pixrem:503,"pleeease-filters":509,"postcss-calc":511,"postcss-color-function":516,"postcss-color-gray":534,"postcss-color-hex-alpha":543,"postcss-color-hwb":550,"postcss-color-rebeccapurple":559,"postcss-color-rgba-fallback":565,"postcss-custom-media":572,"postcss-custom-properties":573,"postcss-custom-selectors":575,"postcss-font-variant":576,"postcss-initial":577,"postcss-media-minmax":589,"postcss-nesting":590,"postcss-pseudo-class-any-link":591,"postcss-pseudoelements":614,"postcss-selector-matches":615,"postcss-selector-not":618}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.spotted=undefined;var _postcss=require("postcss");var _postcss2=_interopRequireDefault(_postcss);var _chalk=require("chalk");var _chalk2=_interopRequireDefault(_chalk);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}var msg=function msg(name){return"Warning: postcss-cssnext found a duplicate plugin ('"+name+"') "+"in your postcss plugins. "+("This might be inefficient. You should remove '"+name+"' from your ")+"postcss plugin list since it's already included by postcss-cssnext."};var shouldGlobalWarn=true;var globalWarning="Note: If, for a really specific reason, postcss-cssnext warnings are "+"irrelevant for your use case, and you really know what you are doing, "+"you can disable this warnings by setting 'warnForDuplicates' option of "+"postcss-cssnext to 'false'.";var spotted=exports.spotted=[];var warnForDuplicates=_postcss2.default.plugin("postcss-warn-for-duplicates",function(options){return function(style,result){var keys=options.keys;var messenger=options.console;var pluginNames=[];result.processor.plugins.forEach(function(plugin){var name=plugin.postcssPlugin;if(pluginNames.indexOf(name)>-1&&keys.indexOf(name)>-1&&spotted.indexOf(name)===-1){messenger.log(_chalk2.default.yellow.bold(msg(name)));spotted.push(name)}else{pluginNames.push(name)}});if(spotted.length>0&&shouldGlobalWarn){shouldGlobalWarn=false;messenger.log(globalWarning)}}});exports.default=warnForDuplicates},{chalk:495,postcss:632}],4:[function(require,module,exports){(function(){var add,backdropFilter,bckgrndImgOpts,boxdecorbreak,crispedges,cursorsGrab,cursorsNewer,devdaptation,elementFunction,feature,filterFunction,flexbox,fullscreen,gradients,grid,logicalProps,prefix,readOnly,resolution,result,sort,textAlignLast,textSizeAdjust,textSpacing,userSelectNone,writingMode,slice=[].slice;sort=function(array){return array.sort(function(a,b){var d;a=a.split(" ");b=b.split(" ");if(a[0]>b[0]){return 1}else if(a[0]<b[0]){return-1}else{d=parseFloat(a[1])-parseFloat(b[1]);if(d>0){return 1}else if(d<0){return-1}else{return 0}}})};feature=function(data,opts,callback){var browser,match,need,ref,ref1,support,version,versions;if(!callback){ref=[opts,{}],callback=ref[0],opts=ref[1]}match=opts.match||/\sx($|\s)/;need=[];ref1=data.stats;for(browser in ref1){versions=ref1[browser];for(version in versions){support=versions[version];if(support.match(match)){need.push(browser+" "+version)}}}return callback(sort(need))};result={};prefix=function(){var data,i,j,k,len,name,names,results;names=2<=arguments.length?slice.call(arguments,0,j=arguments.length-1):(j=0,[]),data=arguments[j++];results=[];for(k=0,len=names.length;k<len;k++){name=names[k];result[name]={};results.push(function(){var results1;results1=[];for(i in data){results1.push(result[name][i]=data[i])}return results1}())}return results};add=function(){var data,j,k,len,name,names,results;names=2<=arguments.length?slice.call(arguments,0,j=arguments.length-1):(j=0,[]),data=arguments[j++];results=[];for(k=0,len=names.length;k<len;k++){name=names[k];results.push(result[name].browsers=sort(result[name].browsers.concat(data.browsers)))}return results};module.exports=result;feature(require("caniuse-db/features-json/border-radius.json"),function(browsers){return prefix("border-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius",{mistakes:["-khtml-","-ms-","-o-"],browsers:browsers})});feature(require("caniuse-db/features-json/css-boxshadow.json"),function(browsers){return prefix("box-shadow",{mistakes:["-khtml-"],browsers:browsers})});feature(require("caniuse-db/features-json/css-animation.json"),function(browsers){return prefix("animation","animation-name","animation-duration","animation-delay","animation-direction","animation-fill-mode","animation-iteration-count","animation-play-state","animation-timing-function","@keyframes",{mistakes:["-khtml-","-ms-"],browsers:browsers})});feature(require("caniuse-db/features-json/css-transitions.json"),function(browsers){return prefix("transition","transition-property","transition-duration","transition-delay","transition-timing-function",{mistakes:["-khtml-","-ms-"],browsers:browsers})});feature(require("caniuse-db/features-json/transforms2d.json"),function(browsers){return prefix("transform","transform-origin",{browsers:browsers})});feature(require("caniuse-db/features-json/transforms3d.json"),function(browsers){prefix("perspective","perspective-origin",{browsers:browsers});return prefix("transform-style","backface-visibility",{mistakes:["-ms-","-o-"],browsers:browsers})});gradients=require("caniuse-db/features-json/css-gradients.json");feature(gradients,{match:/y\sx/},function(browsers){return prefix("linear-gradient","repeating-linear-gradient","radial-gradient","repeating-radial-gradient",{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],mistakes:["-ms-"],browsers:browsers})});feature(gradients,{match:/a\sx/},function(browsers){browsers=browsers.map(function(i){if(/op/.test(i)){return i}else{return i+" old"}});return add("linear-gradient","repeating-linear-gradient","radial-gradient","repeating-radial-gradient",{browsers:browsers})});feature(require("caniuse-db/features-json/css3-boxsizing.json"),function(browsers){return prefix("box-sizing",{browsers:browsers})});feature(require("caniuse-db/features-json/css-filters.json"),function(browsers){return prefix("filter",{browsers:browsers})});filterFunction=require("caniuse-db/features-json/css-filter-function.json");feature(filterFunction,function(browsers){return prefix("filter-function",{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],browsers:browsers})});backdropFilter=require("caniuse-db/features-json/css-backdrop-filter.json");feature(backdropFilter,function(browsers){return prefix("backdrop-filter",{browsers:browsers})});elementFunction=require("caniuse-db/features-json/css-element-function.json");feature(elementFunction,function(browsers){return prefix("element",{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],browsers:browsers})});feature(require("caniuse-db/features-json/multicolumn.json"),function(browsers){prefix("columns","column-width","column-gap","column-rule","column-rule-color","column-rule-width",{browsers:browsers});return prefix("column-count","column-rule-style","column-span","column-fill","break-before","break-after","break-inside",{browsers:browsers})});userSelectNone=require("caniuse-db/features-json/user-select-none.json");feature(userSelectNone,function(browsers){return prefix("user-select",{mistakes:["-khtml-"],browsers:browsers})});flexbox=require("caniuse-db/features-json/flexbox.json");feature(flexbox,{match:/a\sx/},function(browsers){browsers=browsers.map(function(i){if(/ie|firefox/.test(i)){return i}else{return i+" 2009"}});prefix("display-flex","inline-flex",{props:["display"],browsers:browsers});prefix("flex","flex-grow","flex-shrink","flex-basis",{browsers:browsers});return prefix("flex-direction","flex-wrap","flex-flow","justify-content","order","align-items","align-self","align-content",{browsers:browsers})});feature(flexbox,{match:/y\sx/},function(browsers){add("display-flex","inline-flex",{browsers:browsers});add("flex","flex-grow","flex-shrink","flex-basis",{browsers:browsers});return add("flex-direction","flex-wrap","flex-flow","justify-content","order","align-items","align-self","align-content",{browsers:browsers})});feature(require("caniuse-db/features-json/calc.json"),function(browsers){return prefix("calc",{props:["*"],browsers:browsers})});bckgrndImgOpts=require("caniuse-db/features-json/background-img-opts.json");feature(bckgrndImgOpts,function(browsers){return prefix("background-clip","background-origin","background-size",{browsers:browsers})});feature(require("caniuse-db/features-json/font-feature.json"),function(browsers){return prefix("font-feature-settings","font-variant-ligatures","font-language-override","font-kerning",{browsers:browsers})});feature(require("caniuse-db/features-json/border-image.json"),function(browsers){return prefix("border-image",{browsers:browsers})});feature(require("caniuse-db/features-json/css-selection.json"),function(browsers){return prefix("::selection",{selector:true,browsers:browsers})});feature(require("caniuse-db/features-json/css-placeholder.json"),function(browsers){browsers=browsers.map(function(i){var name,ref,version;ref=i.split(" "),name=ref[0],version=ref[1];if(name==="firefox"&&parseFloat(version)<=18){return i+" old"}else{return i}});return prefix("::placeholder",{selector:true,browsers:browsers})});feature(require("caniuse-db/features-json/css-hyphens.json"),function(browsers){return prefix("hyphens",{browsers:browsers})});fullscreen=require("caniuse-db/features-json/fullscreen.json");feature(fullscreen,function(browsers){return prefix(":fullscreen",{selector:true,browsers:browsers})});feature(fullscreen,{match:/x(\s#2|$)/},function(browsers){return prefix("::backdrop",{selector:true,browsers:browsers})});feature(require("caniuse-db/features-json/css3-tabsize.json"),function(browsers){return prefix("tab-size",{browsers:browsers})});feature(require("caniuse-db/features-json/intrinsic-width.json"),function(browsers){return prefix("max-content","min-content","fit-content","fill","fill-available",{props:["width","min-width","max-width","height","min-height","max-height","inline-size","min-inline-size","max-inline-size","block-size","min-block-size","max-block-size"],browsers:browsers})});cursorsNewer=require("caniuse-db/features-json/css3-cursors-newer.json");feature(cursorsNewer,function(browsers){return prefix("zoom-in","zoom-out",{props:["cursor"],browsers:browsers})});cursorsGrab=require("caniuse-db/features-json/css3-cursors-grab.json");feature(cursorsGrab,function(browsers){return prefix("grab","grabbing",{props:["cursor"],browsers:browsers})});feature(require("caniuse-db/features-json/css-sticky.json"),function(browsers){return prefix("sticky",{props:["position"],browsers:browsers})});feature(require("caniuse-db/features-json/pointer.json"),function(browsers){return prefix("touch-action",{browsers:browsers})});feature(require("caniuse-db/features-json/text-decoration.json"),function(browsers){return prefix("text-decoration-style","text-decoration-line","text-decoration-color",{browsers:browsers})});textSizeAdjust=require("caniuse-db/features-json/text-size-adjust.json");feature(textSizeAdjust,function(browsers){return prefix("text-size-adjust",{browsers:browsers})});feature(require("caniuse-db/features-json/css-masks.json"),function(browsers){prefix("mask-clip","mask-composite","mask-image","mask-origin","mask-repeat","mask-border-repeat","mask-border-source",{browsers:browsers});return prefix("clip-path","mask","mask-position","mask-size","mask-border","mask-border-outset","mask-border-width","mask-border-slice",{browsers:browsers})});boxdecorbreak=require("caniuse-db/features-json/css-boxdecorationbreak.json");feature(boxdecorbreak,function(browsers){return prefix("box-decoration-break",{browsers:browsers})});feature(require("caniuse-db/features-json/object-fit.json"),function(browsers){return prefix("object-fit","object-position",{browsers:browsers})});feature(require("caniuse-db/features-json/css-shapes.json"),function(browsers){return prefix("shape-margin","shape-outside","shape-image-threshold",{browsers:browsers})});feature(require("caniuse-db/features-json/text-overflow.json"),function(browsers){return prefix("text-overflow",{browsers:browsers})});feature(require("caniuse-db/features-json/text-emphasis.json"),function(browsers){return prefix("text-emphasis",{browsers:browsers})});devdaptation=require("caniuse-db/features-json/css-deviceadaptation.json");feature(devdaptation,function(browsers){return prefix("@viewport",{browsers:browsers})});resolution=require("caniuse-db/features-json/css-media-resolution.json");feature(resolution,{match:/( x($| )|a #3)/},function(browsers){return prefix("@resolution",{browsers:browsers})});textAlignLast=require("caniuse-db/features-json/css-text-align-last.json");feature(textAlignLast,function(browsers){return prefix("text-align-last",{browsers:browsers})});crispedges=require("caniuse-db/features-json/css-crisp-edges.json");feature(crispedges,{match:/y x/},function(browsers){return prefix("pixelated",{props:["image-rendering"],browsers:browsers})});feature(crispedges,{match:/a x #2/},function(browsers){return prefix("image-rendering",{browsers:browsers})});logicalProps=require("caniuse-db/features-json/css-logical-props.json");feature(logicalProps,function(browsers){return prefix("border-inline-start","border-inline-end","margin-inline-start","margin-inline-end","padding-inline-start","padding-inline-end",{browsers:browsers})});feature(logicalProps,{match:/x\s#2/},function(browsers){return prefix("border-block-start","border-block-end","margin-block-start","margin-block-end","padding-block-start","padding-block-end",{browsers:browsers})});feature(require("caniuse-db/features-json/css-appearance.json"),function(browsers){return prefix("appearance",{browsers:browsers})});feature(require("caniuse-db/features-json/css-snappoints.json"),function(browsers){return prefix("scroll-snap-type","scroll-snap-coordinate","scroll-snap-destination","scroll-snap-points-x","scroll-snap-points-y",{browsers:browsers})});feature(require("caniuse-db/features-json/css-regions.json"),function(browsers){return prefix("flow-into","flow-from","region-fragment",{browsers:browsers})});feature(require("caniuse-db/features-json/css-image-set.json"),function(browsers){return prefix("image-set",{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],browsers:browsers})});writingMode=require("caniuse-db/features-json/css-writing-mode.json");feature(writingMode,{match:/a|x/},function(browsers){return prefix("writing-mode",{browsers:browsers})});feature(require("caniuse-db/features-json/css-cross-fade.json"),function(browsers){return prefix("cross-fade",{props:["background","background-image","border-image","mask","list-style","list-style-image","content","mask-image"],browsers:browsers})});readOnly=require("caniuse-db/features-json/css-read-only-write.json");feature(readOnly,function(browsers){return prefix(":read-only",":read-write",{selector:true,browsers:browsers})});feature(require("caniuse-db/features-json/text-emphasis.json"),function(browsers){return prefix("text-emphasis","text-emphasis-position","text-emphasis-style","text-emphasis-color",{browsers:browsers})});grid=require("caniuse-db/features-json/css-grid.json");feature(grid,function(browsers){prefix("display-grid","inline-grid",{props:["display"],browsers:browsers});return prefix("grid-template-columns","grid-template-rows","grid-row-start","grid-column-start","grid-row-end","grid-column-end","grid-row","grid-column",{browsers:browsers})});feature(grid,{match:/y x/},function(browsers){return prefix("grid-template-areas","grid-template","grid-auto-columns","grid-auto-rows","grid-auto-flow","grid","grid-area","grid-row-gap","grid-column-gap","grid-gap",{browsers:browsers})});feature(grid,{match:/a x/},function(browsers){return prefix("justify-items","grid-row-align",{browsers:browsers})});textSpacing=require("caniuse-db/features-json/css-text-spacing.json");feature(textSpacing,function(browsers){return prefix("text-spacing",{browsers:browsers})})}).call(this)},{"caniuse-db/features-json/background-img-opts.json":65,"caniuse-db/features-json/border-image.json":66,"caniuse-db/features-json/border-radius.json":67,"caniuse-db/features-json/calc.json":68,"caniuse-db/features-json/css-animation.json":69,"caniuse-db/features-json/css-appearance.json":70,"caniuse-db/features-json/css-backdrop-filter.json":71,"caniuse-db/features-json/css-boxdecorationbreak.json":72,"caniuse-db/features-json/css-boxshadow.json":73,"caniuse-db/features-json/css-crisp-edges.json":74,"caniuse-db/features-json/css-cross-fade.json":75,"caniuse-db/features-json/css-deviceadaptation.json":76,"caniuse-db/features-json/css-element-function.json":77,"caniuse-db/features-json/css-filter-function.json":79,"caniuse-db/features-json/css-filters.json":80,"caniuse-db/features-json/css-gradients.json":81,"caniuse-db/features-json/css-grid.json":82,"caniuse-db/features-json/css-hyphens.json":83,"caniuse-db/features-json/css-image-set.json":84,"caniuse-db/features-json/css-logical-props.json":85,"caniuse-db/features-json/css-masks.json":86,"caniuse-db/features-json/css-media-resolution.json":87,"caniuse-db/features-json/css-placeholder.json":88,"caniuse-db/features-json/css-read-only-write.json":89,"caniuse-db/features-json/css-regions.json":90,"caniuse-db/features-json/css-selection.json":91,"caniuse-db/features-json/css-shapes.json":92,"caniuse-db/features-json/css-snappoints.json":93,"caniuse-db/features-json/css-sticky.json":94,"caniuse-db/features-json/css-text-align-last.json":95,"caniuse-db/features-json/css-text-spacing.json":96,"caniuse-db/features-json/css-transitions.json":97,"caniuse-db/features-json/css-writing-mode.json":98,"caniuse-db/features-json/css3-boxsizing.json":99,"caniuse-db/features-json/css3-cursors-grab.json":100,"caniuse-db/features-json/css3-cursors-newer.json":101,"caniuse-db/features-json/css3-tabsize.json":102,"caniuse-db/features-json/flexbox.json":103,"caniuse-db/features-json/font-feature.json":104,"caniuse-db/features-json/fullscreen.json":105,"caniuse-db/features-json/intrinsic-width.json":106,"caniuse-db/features-json/multicolumn.json":107,"caniuse-db/features-json/object-fit.json":108,"caniuse-db/features-json/pointer.json":109,"caniuse-db/features-json/text-decoration.json":110,"caniuse-db/features-json/text-emphasis.json":111,"caniuse-db/features-json/text-overflow.json":112,"caniuse-db/features-json/text-size-adjust.json":113,"caniuse-db/features-json/transforms2d.json":114,"caniuse-db/features-json/transforms3d.json":115,"caniuse-db/features-json/user-select-none.json":116}],5:[function(require,module,exports){(function(){var AtRule,Prefixer,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Prefixer=require("./prefixer");AtRule=function(superClass){extend(AtRule,superClass);function AtRule(){return AtRule.__super__.constructor.apply(this,arguments)}AtRule.prototype.add=function(rule,prefix){var already,cloned,prefixed;prefixed=prefix+rule.name;already=rule.parent.some(function(i){return i.name===prefixed&&i.params===rule.params});if(already){return}cloned=this.clone(rule,{name:prefixed});return rule.parent.insertBefore(rule,cloned)};AtRule.prototype.process=function(node){var j,len,parent,prefix,ref,results;parent=this.parentPrefix(node);ref=this.prefixes;results=[];for(j=0,len=ref.length;j<len;j++){prefix=ref[j];if(parent&&parent!==prefix){continue}results.push(this.add(node,prefix))}return results};return AtRule}(Prefixer);module.exports=AtRule}).call(this)},{"./prefixer":54}],6:[function(require,module,exports){(function(){var Browsers,Prefixes,browserslist,cache,isPlainObject,postcss,timeCapsule,slice=[].slice;browserslist=require("browserslist");postcss=require("postcss");Browsers=require("./browsers");Prefixes=require("./prefixes");isPlainObject=function(obj){return Object.prototype.toString.apply(obj)==="[object Object]"};cache={};timeCapsule=function(result,prefixes){if(prefixes.browsers.selected.length===0){return}if(prefixes.add.selectors.length>0){return}if(Object.keys(prefixes.add).length>2){return}return result.warn("Greetings, space traveller. "+"We are in the golden age of prefix-less CSS, "+"where Autoprefixer is no longer needed for your stylesheet.")};module.exports=postcss.plugin("autoprefixer",function(){var loadPrefixes,options,plugin,reqs;reqs=1<=arguments.length?slice.call(arguments,0):[];if(reqs.length===1&&isPlainObject(reqs[0])){options=reqs[0];reqs=void 0}else if(reqs.length===0||reqs.length===1&&reqs[0]==null){reqs=void 0}else if(reqs.length<=2&&(reqs[0]instanceof Array||reqs[0]==null)){options=reqs[1];reqs=reqs[0]}else if(typeof reqs[reqs.length-1]==="object"){options=reqs.pop()}options||(options={});if(options.browsers!=null){reqs=options.browsers}loadPrefixes=function(opts){var browsers,key,stats;stats=options.stats;browsers=new Browsers(module.exports.data.browsers,reqs,opts,stats);key=browsers.selected.join(", ")+JSON.stringify(options);return cache[key]||(cache[key]=new Prefixes(module.exports.data.prefixes,browsers,options))};plugin=function(css,result){var prefixes,ref;prefixes=loadPrefixes({from:(ref=css.source)!=null?ref.input.file:void 0});timeCapsule(result,prefixes);if(options.remove!==false){prefixes.processor.remove(css)}if(options.add!==false){return prefixes.processor.add(css,result)}};plugin.options=options;plugin.info=function(opts){return require("./info")(loadPrefixes(opts))};return plugin});module.exports.data={browsers:require("caniuse-db/data.json").agents,prefixes:require("../data/prefixes")};module.exports.defaults=browserslist.defaults;module.exports.info=function(){return module.exports().info()}}).call(this)},{"../data/prefixes":4,"./browsers":8,"./info":51,"./prefixes":55,browserslist:63,"caniuse-db/data.json":64,postcss:632}],7:[function(require,module,exports){(function(){var brackets,last;last=function(array){return array[array.length-1]};brackets={parse:function(str){var current,j,len,stack,sym;current=[""];stack=[current];for(j=0,len=str.length;j<len;j++){sym=str[j];if(sym==="("){current=[""];last(stack).push(current);stack.push(current)}else if(sym===")"){stack.pop();current=last(stack);current.push("")}else{current[current.length-1]+=sym}}return stack[0]},stringify:function(ast){var i,j,len,result;result="";for(j=0,len=ast.length;j<len;j++){i=ast[j];if(typeof i==="object"){result+="("+brackets.stringify(i)+")"}else{result+=i}}return result}};module.exports=brackets}).call(this)},{}],8:[function(require,module,exports){(function(){var Browsers,browserslist,utils;browserslist=require("browserslist");utils=require("./utils");Browsers=function(){Browsers.prefixes=function(){var data,i,name;if(this.prefixesCache){return this.prefixesCache}data=require("caniuse-db/data.json").agents;return this.prefixesCache=utils.uniq(function(){var results;results=[];for(name in data){i=data[name];results.push("-"+i.prefix+"-")}return results}()).sort(function(a,b){return b.length-a.length})};Browsers.withPrefix=function(value){if(!this.prefixesRegexp){this.prefixesRegexp=RegExp(""+this.prefixes().join("|"))}return this.prefixesRegexp.test(value)};function Browsers(data1,requirements,options,stats){this.data=data1;this.options=options;this.stats=stats;this.selected=this.parse(requirements)}Browsers.prototype.parse=function(requirements){var ref;return browserslist(requirements,{path:(ref=this.options)!=null?ref.from:void 0,stats:this.stats})};Browsers.prototype.browsers=function(criteria){var browser,data,ref,selected,versions;selected=[];ref=this.data;for(browser in ref){data=ref[browser];versions=criteria(data).map(function(version){return browser+" "+version});selected=selected.concat(versions)}return selected};Browsers.prototype.prefix=function(browser){var data,name,prefix,ref,version;ref=browser.split(" "),name=ref[0],version=ref[1];data=this.data[name];if(data.prefix_exceptions){prefix=data.prefix_exceptions[version]}prefix||(prefix=data.prefix);return"-"+prefix+"-"};Browsers.prototype.isSelected=function(browser){return this.selected.indexOf(browser)!==-1};return Browsers}();module.exports=Browsers}).call(this)},{"./utils":61,browserslist:63,"caniuse-db/data.json":64}],9:[function(require,module,exports){(function(){var Browsers,Declaration,Prefixer,utils,vendor,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Prefixer=require("./prefixer");Browsers=require("./browsers");vendor=require("postcss/lib/vendor");utils=require("./utils");Declaration=function(superClass){extend(Declaration,superClass);function Declaration(){return Declaration.__super__.constructor.apply(this,arguments)}Declaration.prototype.check=function(decl){return true};Declaration.prototype.prefixed=function(prop,prefix){return prefix+prop};Declaration.prototype.normalize=function(prop){return prop};Declaration.prototype.otherPrefixes=function(value,prefix){var j,len,other,ref;ref=Browsers.prefixes();for(j=0,len=ref.length;j<len;j++){other=ref[j];if(other===prefix){continue}if(value.indexOf(other)!==-1){return true}}return false};Declaration.prototype.set=function(decl,prefix){decl.prop=this.prefixed(decl.prop,prefix);return decl};Declaration.prototype.needCascade=function(decl){return decl._autoprefixerCascade||(decl._autoprefixerCascade=this.all.options.cascade!==false&&decl.raw("before").indexOf("\n")!==-1)};Declaration.prototype.maxPrefixed=function(prefixes,decl){var j,len,max,prefix;if(decl._autoprefixerMax){return decl._autoprefixerMax}max=0;for(j=0,len=prefixes.length;j<len;j++){prefix=prefixes[j];prefix=utils.removeNote(prefix);if(prefix.length>max){max=prefix.length}}return decl._autoprefixerMax=max};Declaration.prototype.calcBefore=function(prefixes,decl,prefix){var before,diff,i,j,max,ref;if(prefix==null){prefix=""}before=decl.raw("before");max=this.maxPrefixed(prefixes,decl);diff=max-utils.removeNote(prefix).length;for(i=j=0,ref=diff;0<=ref?j<ref:j>ref;i=0<=ref?++j:--j){before+=" "}return before};Declaration.prototype.restoreBefore=function(decl){var lines,min;lines=decl.raw("before").split("\n");min=lines[lines.length-1];this.all.group(decl).up(function(prefixed){var array,last;array=prefixed.raw("before").split("\n");last=array[array.length-1];if(last.length<min.length){return min=last}});lines[lines.length-1]=min;return decl.raws.before=lines.join("\n")};Declaration.prototype.insert=function(decl,prefix,prefixes){var already,cloned;cloned=this.set(this.clone(decl),prefix);if(!cloned){return}already=decl.parent.some(function(i){return i.prop===cloned.prop&&i.value===cloned.value});if(already){return}if(this.needCascade(decl)){cloned.raws.before=this.calcBefore(prefixes,decl,prefix)}return decl.parent.insertBefore(decl,cloned)};Declaration.prototype.isAlready=function(decl,prefixed){var already;already=this.all.group(decl).up(function(i){return i.prop===prefixed});already||(already=this.all.group(decl).down(function(i){return i.prop===prefixed}));return already};Declaration.prototype.add=function(decl,prefix,prefixes){var prefixed;prefixed=this.prefixed(decl.prop,prefix);if(this.isAlready(decl,prefixed)||this.otherPrefixes(decl.value,prefix)){return}return this.insert(decl,prefix,prefixes)};Declaration.prototype.process=function(decl){var prefixes;if(this.needCascade(decl)){prefixes=Declaration.__super__.process.apply(this,arguments);
if(prefixes!=null?prefixes.length:void 0){this.restoreBefore(decl);return decl.raws.before=this.calcBefore(prefixes,decl)}}else{return Declaration.__super__.process.apply(this,arguments)}};Declaration.prototype.old=function(prop,prefix){return[this.prefixed(prop,prefix)]};return Declaration}(Prefixer);module.exports=Declaration}).call(this)},{"./browsers":8,"./prefixer":54,"./utils":61,"postcss/lib/vendor":641}],10:[function(require,module,exports){(function(){var AlignContent,Declaration,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");AlignContent=function(superClass){extend(AlignContent,superClass);function AlignContent(){return AlignContent.__super__.constructor.apply(this,arguments)}AlignContent.names=["align-content","flex-line-pack"];AlignContent.oldValues={"flex-end":"end","flex-start":"start","space-between":"justify","space-around":"distribute"};AlignContent.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012){return prefix+"flex-line-pack"}else{return AlignContent.__super__.prefixed.apply(this,arguments)}};AlignContent.prototype.normalize=function(prop){return"align-content"};AlignContent.prototype.set=function(decl,prefix){var spec;spec=flexSpec(prefix)[0];if(spec===2012){decl.value=AlignContent.oldValues[decl.value]||decl.value;return AlignContent.__super__.set.call(this,decl,prefix)}else if(spec==="final"){return AlignContent.__super__.set.apply(this,arguments)}};return AlignContent}(Declaration);module.exports=AlignContent}).call(this)},{"../declaration":9,"./flex-spec":29}],11:[function(require,module,exports){(function(){var AlignItems,Declaration,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");AlignItems=function(superClass){extend(AlignItems,superClass);function AlignItems(){return AlignItems.__super__.constructor.apply(this,arguments)}AlignItems.names=["align-items","flex-align","box-align"];AlignItems.oldValues={"flex-end":"end","flex-start":"start"};AlignItems.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){return prefix+"box-align"}else if(spec===2012){return prefix+"flex-align"}else{return AlignItems.__super__.prefixed.apply(this,arguments)}};AlignItems.prototype.normalize=function(prop){return"align-items"};AlignItems.prototype.set=function(decl,prefix){var spec;spec=flexSpec(prefix)[0];if(spec===2009||spec===2012){decl.value=AlignItems.oldValues[decl.value]||decl.value;return AlignItems.__super__.set.call(this,decl,prefix)}else{return AlignItems.__super__.set.apply(this,arguments)}};return AlignItems}(Declaration);module.exports=AlignItems}).call(this)},{"../declaration":9,"./flex-spec":29}],12:[function(require,module,exports){(function(){var AlignSelf,Declaration,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");AlignSelf=function(superClass){extend(AlignSelf,superClass);function AlignSelf(){return AlignSelf.__super__.constructor.apply(this,arguments)}AlignSelf.names=["align-self","flex-item-align"];AlignSelf.oldValues={"flex-end":"end","flex-start":"start"};AlignSelf.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012){return prefix+"flex-item-align"}else{return AlignSelf.__super__.prefixed.apply(this,arguments)}};AlignSelf.prototype.normalize=function(prop){return"align-self"};AlignSelf.prototype.set=function(decl,prefix){var spec;spec=flexSpec(prefix)[0];if(spec===2012){decl.value=AlignSelf.oldValues[decl.value]||decl.value;return AlignSelf.__super__.set.call(this,decl,prefix)}else if(spec==="final"){return AlignSelf.__super__.set.apply(this,arguments)}};return AlignSelf}(Declaration);module.exports=AlignSelf}).call(this)},{"../declaration":9,"./flex-spec":29}],13:[function(require,module,exports){(function(){var BackgroundSize,Declaration,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");BackgroundSize=function(superClass){extend(BackgroundSize,superClass);function BackgroundSize(){return BackgroundSize.__super__.constructor.apply(this,arguments)}BackgroundSize.names=["background-size"];BackgroundSize.prototype.set=function(decl,prefix){var value;value=decl.value.toLowerCase();if(prefix==="-webkit-"&&value.indexOf(" ")===-1&&value!=="contain"&&value!=="cover"){decl.value=decl.value+" "+decl.value}return BackgroundSize.__super__.set.call(this,decl,prefix)};return BackgroundSize}(Declaration);module.exports=BackgroundSize}).call(this)},{"../declaration":9}],14:[function(require,module,exports){(function(){var BlockLogical,Declaration,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");BlockLogical=function(superClass){extend(BlockLogical,superClass);function BlockLogical(){return BlockLogical.__super__.constructor.apply(this,arguments)}BlockLogical.names=["border-block-start","border-block-end","margin-block-start","margin-block-end","padding-block-start","padding-block-end","border-before","border-after","margin-before","margin-after","padding-before","padding-after"];BlockLogical.prototype.prefixed=function(prop,prefix){return prefix+(prop.indexOf("-start")!==-1?prop.replace("-block-start","-before"):prop.replace("-block-end","-after"))};BlockLogical.prototype.normalize=function(prop){if(prop.indexOf("-before")!==-1){return prop.replace("-before","-block-start")}else{return prop.replace("-after","-block-end")}};return BlockLogical}(Declaration);module.exports=BlockLogical}).call(this)},{"../declaration":9}],15:[function(require,module,exports){(function(){var BorderImage,Declaration,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");BorderImage=function(superClass){extend(BorderImage,superClass);function BorderImage(){return BorderImage.__super__.constructor.apply(this,arguments)}BorderImage.names=["border-image"];BorderImage.prototype.set=function(decl,prefix){decl.value=decl.value.replace(/\s+fill(\s)/,"$1");return BorderImage.__super__.set.call(this,decl,prefix)};return BorderImage}(Declaration);module.exports=BorderImage}).call(this)},{"../declaration":9}],16:[function(require,module,exports){(function(){var BorderRadius,Declaration,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");BorderRadius=function(superClass){var hor,i,j,len,len1,mozilla,normal,ref,ref1,ver;extend(BorderRadius,superClass);function BorderRadius(){return BorderRadius.__super__.constructor.apply(this,arguments)}BorderRadius.names=["border-radius"];BorderRadius.toMozilla={};BorderRadius.toNormal={};ref=["top","bottom"];for(i=0,len=ref.length;i<len;i++){ver=ref[i];ref1=["left","right"];for(j=0,len1=ref1.length;j<len1;j++){hor=ref1[j];normal="border-"+ver+"-"+hor+"-radius";mozilla="border-radius-"+ver+hor;BorderRadius.names.push(normal);BorderRadius.names.push(mozilla);BorderRadius.toMozilla[normal]=mozilla;BorderRadius.toNormal[mozilla]=normal}}BorderRadius.prototype.prefixed=function(prop,prefix){if(prefix==="-moz-"){return prefix+(BorderRadius.toMozilla[prop]||prop)}else{return BorderRadius.__super__.prefixed.apply(this,arguments)}};BorderRadius.prototype.normalize=function(prop){return BorderRadius.toNormal[prop]||prop};return BorderRadius}(Declaration);module.exports=BorderRadius}).call(this)},{"../declaration":9}],17:[function(require,module,exports){(function(){var BreakProps,Declaration,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");BreakProps=function(superClass){extend(BreakProps,superClass);function BreakProps(){return BreakProps.__super__.constructor.apply(this,arguments)}BreakProps.names=["break-inside","page-break-inside","column-break-inside","break-before","page-break-before","column-break-before","break-after","page-break-after","column-break-after"];BreakProps.prototype.prefixed=function(prop,prefix){if(prefix==="-webkit-"){return"-webkit-column-"+prop}else if(prefix==="-moz-"){return"page-"+prop}else{return BreakProps.__super__.prefixed.apply(this,arguments)}};BreakProps.prototype.normalize=function(prop){if(prop.indexOf("inside")!==-1){return"break-inside"}else if(prop.indexOf("before")!==-1){return"break-before"}else if(prop.indexOf("after")!==-1){return"break-after"}};BreakProps.prototype.set=function(decl,prefix){var v;v=decl.value;if(decl.prop==="break-inside"&&v==="avoid-column"||v==="avoid-page"){decl.value="avoid"}return BreakProps.__super__.set.apply(this,arguments)};BreakProps.prototype.insert=function(decl,prefix,prefixes){if(decl.prop!=="break-inside"){return BreakProps.__super__.insert.apply(this,arguments)}else if(decl.value==="avoid-region"){}else if(decl.value==="avoid-page"&&prefix==="-webkit-"){}else{return BreakProps.__super__.insert.apply(this,arguments)}};return BreakProps}(Declaration);module.exports=BreakProps}).call(this)},{"../declaration":9}],18:[function(require,module,exports){(function(){var CrossFade,OldValue,Value,list,utils,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;OldValue=require("../old-value");Value=require("../value");utils=require("../utils");list=require("postcss/lib/list");CrossFade=function(superClass){extend(CrossFade,superClass);function CrossFade(){return CrossFade.__super__.constructor.apply(this,arguments)}CrossFade.names=["cross-fade"];CrossFade.prototype.replace=function(string,prefix){return list.space(string).map(function(_this){return function(value){var after,args,close,match;if(value.slice(0,+_this.name.length+1||9e9)!==_this.name+"("){return value}close=value.lastIndexOf(")");after=value.slice(close+1);args=value.slice(_this.name.length+1,+(close-1)+1||9e9);if(prefix==="-webkit-"){match=args.match(/\d*.?\d+%?/);if(match){args=args.slice(match[0].length).trim();args+=", "+match[0]}else{args+=", 0.5"}}return prefix+_this.name+"("+args+")"+after}}(this)).join(" ")};return CrossFade}(Value);module.exports=CrossFade}).call(this)},{"../old-value":53,"../utils":61,"../value":62,"postcss/lib/list":627}],19:[function(require,module,exports){(function(){var DisplayFlex,OldValue,Value,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");OldValue=require("../old-value");Value=require("../value");DisplayFlex=function(superClass){extend(DisplayFlex,superClass);DisplayFlex.names=["display-flex","inline-flex"];function DisplayFlex(name,prefixes){DisplayFlex.__super__.constructor.apply(this,arguments);if(name==="display-flex"){this.name="flex"}}DisplayFlex.prototype.check=function(decl){return decl.prop==="display"&&decl.value===this.name};DisplayFlex.prototype.prefixed=function(prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];return prefix+(spec===2009?this.name==="flex"?"box":"inline-box":spec===2012?this.name==="flex"?"flexbox":"inline-flexbox":spec==="final"?this.name:void 0)};DisplayFlex.prototype.replace=function(string,prefix){return this.prefixed(prefix)};DisplayFlex.prototype.old=function(prefix){var prefixed;prefixed=this.prefixed(prefix);if(prefixed){return new OldValue(this.name,prefixed)}};return DisplayFlex}(Value);module.exports=DisplayFlex}).call(this)},{"../old-value":53,"../value":62,"./flex-spec":29}],20:[function(require,module,exports){(function(){var DisplayGrid,OldValue,Value,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");OldValue=require("../old-value");Value=require("../value");DisplayGrid=function(superClass){extend(DisplayGrid,superClass);DisplayGrid.names=["display-grid","inline-grid"];function DisplayGrid(name,prefixes){DisplayGrid.__super__.constructor.apply(this,arguments);if(name==="display-grid"){this.name="grid"}}DisplayGrid.prototype.check=function(decl){return decl.prop==="display"&&decl.value===this.name};return DisplayGrid}(Value);module.exports=DisplayGrid}).call(this)},{"../old-value":53,"../value":62,"./flex-spec":29}],21:[function(require,module,exports){(function(){var Fill,OldValue,Value,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;OldValue=require("../old-value");Value=require("../value");Fill=function(superClass){extend(Fill,superClass);function Fill(){return Fill.__super__.constructor.apply(this,arguments)}Fill.names=["fill","fill-available"];Fill.prototype.replace=function(string,prefix){if(prefix==="-moz-"){return string.replace(this.regexp(),"$1-moz-available$3")}else if(prefix==="-webkit-"){return string.replace(this.regexp(),"$1-webkit-fill-available$3")}else{return Fill.__super__.replace.apply(this,arguments)}};Fill.prototype.old=function(prefix){if(prefix==="-moz-"){return new OldValue(this.name,"-moz-available")}else if(prefix==="-webkit-"){return new OldValue(this.name,"-webkit-fill-available")}else{return Fill.__super__.old.apply(this,arguments)}};return Fill}(Value);module.exports=Fill}).call(this)},{"../old-value":53,"../value":62}],22:[function(require,module,exports){(function(){var FilterValue,OldFilterValue,OldValue,Value,utils,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;OldValue=require("../old-value");Value=require("../value");utils=require("../utils");OldFilterValue=function(superClass){extend(OldFilterValue,superClass);function OldFilterValue(){return OldFilterValue.__super__.constructor.apply(this,arguments)}OldFilterValue.prototype.clean=function(decl){return decl.value=utils.editList(decl.value,function(_this){return function(props){if(props.every(function(i){return i.indexOf(_this.unprefixed)!==0})){return props}return props.filter(function(i){return i.indexOf(_this.prefixed)===-1})}}(this))};return OldFilterValue}(OldValue);FilterValue=function(superClass){extend(FilterValue,superClass);FilterValue.names=["filter","filter-function"];function FilterValue(name,prefixes){FilterValue.__super__.constructor.apply(this,arguments);if(name==="filter-function"){this.name="filter"}}FilterValue.prototype.replace=function(value,prefix){if(prefix==="-webkit-"&&value.indexOf("filter(")===-1){if(value.indexOf("-webkit-filter")===-1){return FilterValue.__super__.replace.apply(this,arguments)+", "+value}else{return value}}else{return FilterValue.__super__.replace.apply(this,arguments)}};FilterValue.prototype.old=function(prefix){return new OldFilterValue(this.name,prefix+this.name)};return FilterValue}(Value);module.exports=FilterValue}).call(this)},{"../old-value":53,"../utils":61,"../value":62}],23:[function(require,module,exports){(function(){var Declaration,Filter,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");Filter=function(superClass){extend(Filter,superClass);function Filter(){return Filter.__super__.constructor.apply(this,arguments)}Filter.names=["filter"];Filter.prototype.check=function(decl){var v;v=decl.value;return v.toLowerCase().indexOf("alpha(")===-1&&v.indexOf("DXImageTransform.Microsoft")===-1&&v.indexOf("data:image/svg+xml")===-1};return Filter}(Declaration);module.exports=Filter}).call(this)},{"../declaration":9}],24:[function(require,module,exports){(function(){var Declaration,FlexBasis,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");FlexBasis=function(superClass){extend(FlexBasis,superClass);function FlexBasis(){return FlexBasis.__super__.constructor.apply(this,arguments)}FlexBasis.names=["flex-basis","flex-preferred-size"];FlexBasis.prototype.normalize=function(){return"flex-basis"};FlexBasis.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012){return prefix+"flex-preferred-size"}else{return FlexBasis.__super__.prefixed.apply(this,arguments)}};FlexBasis.prototype.set=function(decl,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012||spec==="final"){return FlexBasis.__super__.set.apply(this,arguments)}};return FlexBasis}(Declaration);module.exports=FlexBasis}).call(this)},{"../declaration":9,"./flex-spec":29}],25:[function(require,module,exports){(function(){var Declaration,FlexDirection,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");FlexDirection=function(superClass){extend(FlexDirection,superClass);function FlexDirection(){return FlexDirection.__super__.constructor.apply(this,arguments)}FlexDirection.names=["flex-direction","box-direction","box-orient"];FlexDirection.prototype.normalize=function(prop){return"flex-direction"};FlexDirection.prototype.insert=function(decl,prefix,prefixes){var already,cloned,dir,orient,ref,spec,value;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){already=decl.parent.some(function(i){return i.prop===prefix+"box-orient"||i.prop===prefix+"box-direction"});if(already){return}value=decl.value;orient=value.indexOf("row")!==-1?"horizontal":"vertical";dir=value.indexOf("reverse")!==-1?"reverse":"normal";cloned=this.clone(decl);cloned.prop=prefix+"box-orient";cloned.value=orient;if(this.needCascade(decl)){cloned.raws.before=this.calcBefore(prefixes,decl,prefix)}decl.parent.insertBefore(decl,cloned);cloned=this.clone(decl);cloned.prop=prefix+"box-direction";cloned.value=dir;if(this.needCascade(decl)){cloned.raws.before=this.calcBefore(prefixes,decl,prefix)}return decl.parent.insertBefore(decl,cloned)}else{return FlexDirection.__super__.insert.apply(this,arguments)}};FlexDirection.prototype.old=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){return[prefix+"box-orient",prefix+"box-direction"]}else{return FlexDirection.__super__.old.apply(this,arguments)}};return FlexDirection}(Declaration);module.exports=FlexDirection}).call(this)},{"../declaration":9,"./flex-spec":29}],26:[function(require,module,exports){(function(){var Declaration,FlexFlow,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");FlexFlow=function(superClass){extend(FlexFlow,superClass);function FlexFlow(){return FlexFlow.__super__.constructor.apply(this,arguments)}FlexFlow.names=["flex-flow"];FlexFlow.prototype.set=function(decl,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012){return FlexFlow.__super__.set.apply(this,arguments)}else if(spec==="final"){return FlexFlow.__super__.set.apply(this,arguments)}};return FlexFlow}(Declaration);module.exports=FlexFlow}).call(this)},{"../declaration":9,"./flex-spec":29}],27:[function(require,module,exports){(function(){var Declaration,Flex,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");Flex=function(superClass){extend(Flex,superClass);function Flex(){return Flex.__super__.constructor.apply(this,arguments)}Flex.names=["flex-grow","flex-positive"];Flex.prototype.normalize=function(){return"flex"};Flex.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){return prefix+"box-flex"}else if(spec===2012){return prefix+"flex-positive"}else{return Flex.__super__.prefixed.apply(this,arguments)}};return Flex}(Declaration);module.exports=Flex}).call(this)},{"../declaration":9,"./flex-spec":29}],28:[function(require,module,exports){(function(){var Declaration,FlexShrink,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");FlexShrink=function(superClass){extend(FlexShrink,superClass);function FlexShrink(){return FlexShrink.__super__.constructor.apply(this,arguments)}FlexShrink.names=["flex-shrink","flex-negative"];FlexShrink.prototype.normalize=function(){return"flex-shrink"};FlexShrink.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012){return prefix+"flex-negative"}else{return FlexShrink.__super__.prefixed.apply(this,arguments)}};FlexShrink.prototype.set=function(decl,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2012||spec==="final"){return FlexShrink.__super__.set.apply(this,arguments)}};return FlexShrink}(Declaration);module.exports=FlexShrink}).call(this)},{"../declaration":9,"./flex-spec":29}],29:[function(require,module,exports){(function(){module.exports=function(prefix){var spec;spec=prefix==="-webkit- 2009"||prefix==="-moz-"?2009:prefix==="-ms-"?2012:prefix==="-webkit-"?"final":void 0;if(prefix==="-webkit- 2009"){prefix="-webkit-"}return[spec,prefix]}}).call(this)},{}],30:[function(require,module,exports){(function(){var FlexValues,OldValue,Value,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;OldValue=require("../old-value");Value=require("../value");FlexValues=function(superClass){extend(FlexValues,superClass);function FlexValues(){return FlexValues.__super__.constructor.apply(this,arguments)}FlexValues.names=["flex","flex-grow","flex-shrink","flex-basis"];FlexValues.prototype.prefixed=function(prefix){return this.all.prefixed(this.name,prefix)};FlexValues.prototype.replace=function(string,prefix){return string.replace(this.regexp(),"$1"+this.prefixed(prefix)+"$3")};FlexValues.prototype.old=function(prefix){return new OldValue(this.name,this.prefixed(prefix))};return FlexValues}(Value);module.exports=FlexValues}).call(this)},{"../old-value":53,"../value":62}],31:[function(require,module,exports){(function(){var Declaration,FlexWrap,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");FlexWrap=function(superClass){extend(FlexWrap,superClass);function FlexWrap(){return FlexWrap.__super__.constructor.apply(this,arguments)}FlexWrap.names=["flex-wrap"];FlexWrap.prototype.set=function(decl,prefix){var spec;spec=flexSpec(prefix)[0];if(spec!==2009){return FlexWrap.__super__.set.apply(this,arguments)}};return FlexWrap}(Declaration);module.exports=FlexWrap}).call(this)},{"../declaration":9,"./flex-spec":29}],32:[function(require,module,exports){(function(){var Declaration,Flex,flexSpec,list,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");list=require("postcss/lib/list");Flex=function(superClass){extend(Flex,superClass);function Flex(){return Flex.__super__.constructor.apply(this,arguments)}Flex.names=["flex","box-flex"];Flex.oldValues={auto:"1",none:"0"};Flex.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){return prefix+"box-flex"}else{return Flex.__super__.prefixed.apply(this,arguments)}};Flex.prototype.normalize=function(){return"flex"};Flex.prototype.set=function(decl,prefix){var spec;spec=flexSpec(prefix)[0];if(spec===2009){decl.value=list.space(decl.value)[0];decl.value=Flex.oldValues[decl.value]||decl.value;return Flex.__super__.set.call(this,decl,prefix)}else{return Flex.__super__.set.apply(this,arguments)}};return Flex}(Declaration);module.exports=Flex}).call(this)},{"../declaration":9,"./flex-spec":29,"postcss/lib/list":627}],33:[function(require,module,exports){(function(){var Fullscreen,Selector,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Selector=require("../selector");Fullscreen=function(superClass){extend(Fullscreen,superClass);function Fullscreen(){return Fullscreen.__super__.constructor.apply(this,arguments)}Fullscreen.names=[":fullscreen"];Fullscreen.prototype.prefixed=function(prefix){if("-webkit-"===prefix){return":-webkit-full-screen"}else if("-moz-"===prefix){return":-moz-full-screen"}else{return":"+prefix+"fullscreen"}};return Fullscreen}(Selector);module.exports=Fullscreen}).call(this)},{"../selector":58}],34:[function(require,module,exports){(function(){var Gradient,OldValue,Value,isDirection,list,parser,range,utils,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty,slice=[].slice;OldValue=require("../old-value");Value=require("../value");utils=require("../utils");parser=require("postcss-value-parser");range=require("normalize-range");list=require("postcss/lib/list");isDirection=/top|left|right|bottom/gi;Gradient=function(superClass){extend(Gradient,superClass);function Gradient(){return Gradient.__super__.constructor.apply(this,arguments)}Gradient.names=["linear-gradient","repeating-linear-gradient","radial-gradient","repeating-radial-gradient"];Gradient.prototype.replace=function(string,prefix){var ast,changes,j,len,node,ref;ast=parser(string);ref=ast.nodes;for(j=0,len=ref.length;j<len;j++){node=ref[j];if(node.type==="function"&&node.value===this.name){node.nodes=this.newDirection(node.nodes);node.nodes=this.normalize(node.nodes);if(prefix==="-webkit- old"){changes=this.oldWebkit(node);if(!changes){return}}else{node.nodes=this.convertDirection(node.nodes);node.value=prefix+node.value}}}return ast.toString()};Gradient.prototype.directions={top:"bottom",left:"right",bottom:"top",right:"left"};Gradient.prototype.oldDirections={top:"left bottom, left top",left:"right top, left top",bottom:"left top, left bottom",right:"left top, right top","top right":"left bottom, right top","top left":"right bottom, left top","right top":"left bottom, right top","right bottom":"left top, right bottom","bottom right":"left top, right bottom","bottom left":"right top, left bottom","left top":"right bottom, left top","left bottom":"right top, left bottom"};Gradient.prototype.replaceFirst=function(){var params,prefix,words;params=arguments[0],words=2<=arguments.length?slice.call(arguments,1):[];prefix=words.map(function(i){if(i===" "){return{type:"space",value:i}}else{return{type:"word",value:i}}});return prefix.concat(params.slice(1))};Gradient.prototype.normalizeUnit=function(str,full){var deg,num;num=parseFloat(str);deg=num/full*360;return deg+"deg"};Gradient.prototype.normalize=function(nodes){var num;if(!nodes[0]){return nodes}if(/-?\d+(.\d+)?grad/.test(nodes[0].value)){nodes[0].value=this.normalizeUnit(nodes[0].value,400)}else if(/-?\d+(.\d+)?rad/.test(nodes[0].value)){nodes[0].value=this.normalizeUnit(nodes[0].value,2)}else if(/-?\d+(.\d+)?turn/.test(nodes[0].value)){nodes[0].value=this.normalizeUnit(nodes[0].value,1)}else if(nodes[0].value.indexOf("deg")!==-1){num=parseFloat(nodes[0].value);num=range.wrap(0,360,num);nodes[0].value=num+"deg"}if(nodes[0].value==="0deg"){nodes=this.replaceFirst(nodes,"to"," ","top")}else if(nodes[0].value==="90deg"){nodes=this.replaceFirst(nodes,"to"," ","right")}else if(nodes[0].value==="180deg"){nodes=this.replaceFirst(nodes,"to"," ","bottom")}else if(nodes[0].value==="270deg"){nodes=this.replaceFirst(nodes,"to"," ","left");
}return nodes};Gradient.prototype.newDirection=function(params){var i,j,ref;if(params[0].value==="to"){return params}if(!isDirection.test(params[0].value)){return params}params.unshift({type:"word",value:"to"},{type:"space",value:" "});for(i=j=2,ref=params.length;2<=ref?j<ref:j>ref;i=2<=ref?++j:--j){if(params[i].type==="div"){break}if(params[i].type==="word"){params[i].value=this.revertDirection(params[i].value)}}return params};Gradient.prototype.convertDirection=function(params){if(params.length>0){if(params[0].value==="to"){this.fixDirection(params)}else if(params[0].value.indexOf("deg")!==-1){this.fixAngle(params)}else if(params[2].value==="at"){this.fixRadial(params)}}return params};Gradient.prototype.fixDirection=function(params){var i,j,ref,results;params.splice(0,2);results=[];for(i=j=0,ref=params.length;0<=ref?j<ref:j>ref;i=0<=ref?++j:--j){if(params[i].type==="div"){break}if(params[i].type==="word"){results.push(params[i].value=this.revertDirection(params[i].value))}else{results.push(void 0)}}return results};Gradient.prototype.fixAngle=function(params){var first;first=params[0].value;first=parseFloat(first);first=Math.abs(450-first)%360;first=this.roundFloat(first,3);return params[0].value=first+"deg"};Gradient.prototype.fixRadial=function(params){var first,i,j,ref,second;first=params[0];second=[];for(i=j=4,ref=params.length;4<=ref?j<ref:j>ref;i=4<=ref?++j:--j){if(params[i].type==="div"){break}else{second.push(params[i])}}return params.splice.apply(params,[0,i].concat(slice.call(second),[params[i+2]],[first]))};Gradient.prototype.revertDirection=function(word){return this.directions[word.toLowerCase()]||word};Gradient.prototype.roundFloat=function(float,digits){return parseFloat(float.toFixed(digits))};Gradient.prototype.oldWebkit=function(node){var i,j,k,len,len1,nodes,param,params,string;nodes=node.nodes;string=parser.stringify(node.nodes);if(this.name!=="linear-gradient"){return false}if(nodes[0]&&nodes[0].value.indexOf("deg")!==-1){return false}if(string.indexOf("px")!==-1){return false}if(string.indexOf("-corner")!==-1){return false}if(string.indexOf("-side")!==-1){return false}params=[[]];for(j=0,len=nodes.length;j<len;j++){i=nodes[j];params[params.length-1].push(i);if(i.type==="div"&&i.value===","){params.push([])}}this.oldDirection(params);this.colorStops(params);node.nodes=[];for(k=0,len1=params.length;k<len1;k++){param=params[k];node.nodes=node.nodes.concat(param)}node.nodes.unshift({type:"word",value:"linear"},this.cloneDiv(node.nodes));node.value="-webkit-gradient";return true};Gradient.prototype.oldDirection=function(params){var div,j,len,node,old,ref,words;div=this.cloneDiv(params[0]);if(params[0][0].value!=="to"){return params.unshift([{type:"word",value:this.oldDirections.bottom},div])}else{words=[];ref=params[0].slice(2);for(j=0,len=ref.length;j<len;j++){node=ref[j];if(node.type==="word"){words.push(node.value.toLowerCase())}}words=words.join(" ");old=this.oldDirections[words]||words;return params[0]=[{type:"word",value:old},div]}};Gradient.prototype.cloneDiv=function(params){var i,j,len;for(j=0,len=params.length;j<len;j++){i=params[j];if(i.type==="div"&&i.value===","){return i}}return{type:"div",value:",",after:" "}};Gradient.prototype.colorStops=function(params){var color,div,i,j,len,param,pos,results,stop;results=[];for(i=j=0,len=params.length;j<len;i=++j){param=params[i];if(i===0){continue}color=parser.stringify(param[0]);if(param[1]&&param[1].type==="word"){pos=param[1].value}else if(param[2]&&param[2].type==="word"){pos=param[2].value}stop=i===1&&(!pos||pos==="0%")?"from("+color+")":i===params.length-1&&(!pos||pos==="100%")?"to("+color+")":pos?"color-stop("+pos+", "+color+")":"color-stop("+color+")";div=param[param.length-1];params[i]=[{type:"word",value:stop}];if(div.type==="div"&&div.value===","){results.push(params[i].push(div))}else{results.push(void 0)}}return results};Gradient.prototype.old=function(prefix){var regexp,string,type;if(prefix==="-webkit-"){type=this.name==="linear-gradient"?"linear":"radial";string="-gradient";regexp=utils.regexp("-webkit-("+type+"-gradient|gradient\\(\\s*"+type+")",false);return new OldValue(this.name,prefix+this.name,string,regexp)}else{return Gradient.__super__.old.apply(this,arguments)}};Gradient.prototype.add=function(decl,prefix){var p;p=decl.prop;if(p.indexOf("mask")!==-1){if(prefix==="-webkit-"||prefix==="-webkit- old"){return Gradient.__super__.add.apply(this,arguments)}}else if(p==="list-style"||p==="list-style-image"||p==="content"){if(prefix==="-webkit-"||prefix==="-webkit- old"){return Gradient.__super__.add.apply(this,arguments)}}else{return Gradient.__super__.add.apply(this,arguments)}};return Gradient}(Value);module.exports=Gradient}).call(this)},{"../old-value":53,"../utils":61,"../value":62,"normalize-range":117,"postcss-value-parser":119,"postcss/lib/list":627}],35:[function(require,module,exports){(function(){var Declaration,GridEnd,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");GridEnd=function(superClass){extend(GridEnd,superClass);function GridEnd(){return GridEnd.__super__.constructor.apply(this,arguments)}GridEnd.names=["grid-row-end","grid-column-end","grid-row-span","grid-column-span"];GridEnd.prototype.check=function(decl){return decl.value.indexOf("span")!==-1};GridEnd.prototype.normalize=function(prop){return prop.replace(/(-span|-end)/,"")};GridEnd.prototype.prefixed=function(prop,prefix){if(prefix==="-ms-"){return prefix+prop.replace("-end","-span")}else{return GridEnd.__super__.prefixed.call(this,prop,prefix)}};GridEnd.prototype.set=function(decl,prefix){if(prefix==="-ms-"){decl.value=decl.value.replace(/span\s/i,"")}return GridEnd.__super__.set.call(this,decl,prefix)};return GridEnd}(Declaration);module.exports=GridEnd}).call(this)},{"../declaration":9}],36:[function(require,module,exports){(function(){var Declaration,GridRowAlign,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");GridRowAlign=function(superClass){extend(GridRowAlign,superClass);function GridRowAlign(){return GridRowAlign.__super__.constructor.apply(this,arguments)}GridRowAlign.names=["grid-row-align"];GridRowAlign.prototype.prefixed=function(prop,prefix){return prefix+"grid-row-align"};GridRowAlign.prototype.normalize=function(prop){return"align-items"};return GridRowAlign}(Declaration);module.exports=GridRowAlign}).call(this)},{"../declaration":9}],37:[function(require,module,exports){(function(){var Declaration,GridStart,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");GridStart=function(superClass){extend(GridStart,superClass);function GridStart(){return GridStart.__super__.constructor.apply(this,arguments)}GridStart.names=["grid-row-start","grid-column-start","grid-row","grid-column"];GridStart.prototype.check=function(decl){return decl.value.indexOf("/")===-1||decl.value.indexOf("span")!==-1};GridStart.prototype.normalize=function(prop){return prop.replace("-start","")};GridStart.prototype.prefixed=function(prop,prefix){if(prefix==="-ms-"){return prefix+prop.replace("-start","")}else{return GridStart.__super__.prefixed.call(this,prop,prefix)}};GridStart.prototype.insert=function(decl,prefix,prefixes){var parts;parts=this.splitValue(decl,prefix);if(parts.length===2){decl.cloneBefore({prop:"-ms-"+decl.prop+"-span",value:parts[1]})}return GridStart.__super__.insert.call(this,decl,prefix,prefixes)};GridStart.prototype.set=function(decl,prefix){var parts;parts=this.splitValue(decl,prefix);if(parts.length===2){decl.value=parts[0]}return GridStart.__super__.set.call(this,decl,prefix)};GridStart.prototype.splitValue=function(decl,prefix){var parts;if(prefix==="-ms-"&&decl.prop.indexOf("-start")===-1){parts=decl.value.split(/\s*\/\s*span\s+/);if(parts.length===2){return parts}}return false};return GridStart}(Declaration);module.exports=GridStart}).call(this)},{"../declaration":9}],38:[function(require,module,exports){(function(){var Declaration,GridTemplate,parser,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;parser=require("postcss-value-parser");Declaration=require("../declaration");GridTemplate=function(superClass){extend(GridTemplate,superClass);function GridTemplate(){return GridTemplate.__super__.constructor.apply(this,arguments)}GridTemplate.names=["grid-template-rows","grid-template-columns","grid-rows","grid-columns"];GridTemplate.prototype.prefixed=function(prop,prefix){if(prefix==="-ms-"){return prefix+prop.replace("template-","")}else{return GridTemplate.__super__.prefixed.call(this,prop,prefix)}};GridTemplate.prototype.normalize=function(prop){return prop.replace(/^grid-(rows|columns)/,"grid-template-$1")};GridTemplate.prototype.walkRepeat=function(node){var count,first,fixed,i,j,len,ref;fixed=[];ref=node.nodes;for(j=0,len=ref.length;j<len;j++){i=ref[j];if(i.nodes){this.walkRepeat(i)}fixed.push(i);if(i.type==="function"&&i.value==="repeat"){first=i.nodes.shift();if(first){count=first.value;i.nodes.shift();i.value="";fixed.push({type:"word",value:"["+count+"]"})}}}return node.nodes=fixed};GridTemplate.prototype.changeRepeat=function(value){var ast;ast=parser(value);this.walkRepeat(ast);return ast.toString()};GridTemplate.prototype.set=function(decl,prefix){if(prefix==="-ms-"&&decl.value.indexOf("repeat(")!==-1){decl.value=this.changeRepeat(decl.value)}return GridTemplate.__super__.set.call(this,decl,prefix)};return GridTemplate}(Declaration);module.exports=GridTemplate}).call(this)},{"../declaration":9,"postcss-value-parser":119}],39:[function(require,module,exports){(function(){var Declaration,ImageRendering,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");ImageRendering=function(superClass){extend(ImageRendering,superClass);function ImageRendering(){return ImageRendering.__super__.constructor.apply(this,arguments)}ImageRendering.names=["image-rendering","interpolation-mode"];ImageRendering.prototype.check=function(decl){return decl.value==="pixelated"};ImageRendering.prototype.prefixed=function(prop,prefix){if(prefix==="-ms-"){return"-ms-interpolation-mode"}else{return ImageRendering.__super__.prefixed.apply(this,arguments)}};ImageRendering.prototype.set=function(decl,prefix){if(prefix==="-ms-"){decl.prop="-ms-interpolation-mode";decl.value="nearest-neighbor";return decl}else{return ImageRendering.__super__.set.apply(this,arguments)}};ImageRendering.prototype.normalize=function(prop){return"image-rendering"};ImageRendering.prototype.process=function(node,result){return ImageRendering.__super__.process.apply(this,arguments)};return ImageRendering}(Declaration);module.exports=ImageRendering}).call(this)},{"../declaration":9}],40:[function(require,module,exports){(function(){var ImageSet,Value,list,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;list=require("postcss/lib/list");Value=require("../value");ImageSet=function(superClass){extend(ImageSet,superClass);function ImageSet(){return ImageSet.__super__.constructor.apply(this,arguments)}ImageSet.names=["image-set"];ImageSet.prototype.replace=function(string,prefix){if(prefix==="-webkit-"){return ImageSet.__super__.replace.apply(this,arguments).replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi,"url($1)$2")}else{return ImageSet.__super__.replace.apply(this,arguments)}};return ImageSet}(Value);module.exports=ImageSet}).call(this)},{"../value":62,"postcss/lib/list":627}],41:[function(require,module,exports){(function(){var Declaration,InlineLogical,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");InlineLogical=function(superClass){extend(InlineLogical,superClass);function InlineLogical(){return InlineLogical.__super__.constructor.apply(this,arguments)}InlineLogical.names=["border-inline-start","border-inline-end","margin-inline-start","margin-inline-end","padding-inline-start","padding-inline-end","border-start","border-end","margin-start","margin-end","padding-start","padding-end"];InlineLogical.prototype.prefixed=function(prop,prefix){return prefix+prop.replace("-inline","")};InlineLogical.prototype.normalize=function(prop){return prop.replace(/(margin|padding|border)-(start|end)/,"$1-inline-$2")};return InlineLogical}(Declaration);module.exports=InlineLogical}).call(this)},{"../declaration":9}],42:[function(require,module,exports){(function(){var Declaration,JustifyContent,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");JustifyContent=function(superClass){extend(JustifyContent,superClass);function JustifyContent(){return JustifyContent.__super__.constructor.apply(this,arguments)}JustifyContent.names=["justify-content","flex-pack","box-pack"];JustifyContent.oldValues={"flex-end":"end","flex-start":"start","space-between":"justify","space-around":"distribute"};JustifyContent.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){return prefix+"box-pack"}else if(spec===2012){return prefix+"flex-pack"}else{return JustifyContent.__super__.prefixed.apply(this,arguments)}};JustifyContent.prototype.normalize=function(prop){return"justify-content"};JustifyContent.prototype.set=function(decl,prefix){var spec,value;spec=flexSpec(prefix)[0];if(spec===2009||spec===2012){value=JustifyContent.oldValues[decl.value]||decl.value;decl.value=value;if(spec!==2009||value!=="distribute"){return JustifyContent.__super__.set.call(this,decl,prefix)}}else if(spec==="final"){return JustifyContent.__super__.set.apply(this,arguments)}};return JustifyContent}(Declaration);module.exports=JustifyContent}).call(this)},{"../declaration":9,"./flex-spec":29}],43:[function(require,module,exports){(function(){var Declaration,JustifyItems,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");JustifyItems=function(superClass){extend(JustifyItems,superClass);function JustifyItems(){return JustifyItems.__super__.constructor.apply(this,arguments)}JustifyItems.names=["justify-items","grid-column-align"];JustifyItems.prototype.prefixed=function(prop,prefix){return prefix+(prefix==="-ms-"?"grid-column-align":prop)};JustifyItems.prototype.normalize=function(prop){return"justify-items"};return JustifyItems}(Declaration);module.exports=JustifyItems}).call(this)},{"../declaration":9}],44:[function(require,module,exports){(function(){var Declaration,MaskBorder,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");MaskBorder=function(superClass){extend(MaskBorder,superClass);function MaskBorder(){return MaskBorder.__super__.constructor.apply(this,arguments)}MaskBorder.names=["mask-border","mask-border-source","mask-border-slice","mask-border-width","mask-border-outset","mask-border-repeat","mask-box-image","mask-box-image-source","mask-box-image-slice","mask-box-image-width","mask-box-image-outset","mask-box-image-repeat"];MaskBorder.prototype.normalize=function(){return this.name.replace("box-image","border")};MaskBorder.prototype.prefixed=function(prop,prefix){if(prefix==="-webkit-"){return MaskBorder.__super__.prefixed.apply(this,arguments).replace("border","box-image")}else{return MaskBorder.__super__.prefixed.apply(this,arguments)}};return MaskBorder}(Declaration);module.exports=MaskBorder}).call(this)},{"../declaration":9}],45:[function(require,module,exports){(function(){var Declaration,Order,flexSpec,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;flexSpec=require("./flex-spec");Declaration=require("../declaration");Order=function(superClass){extend(Order,superClass);function Order(){return Order.__super__.constructor.apply(this,arguments)}Order.names=["order","flex-order","box-ordinal-group"];Order.prototype.prefixed=function(prop,prefix){var ref,spec;ref=flexSpec(prefix),spec=ref[0],prefix=ref[1];if(spec===2009){return prefix+"box-ordinal-group"}else if(spec===2012){return prefix+"flex-order"}else{return Order.__super__.prefixed.apply(this,arguments)}};Order.prototype.normalize=function(prop){return"order"};Order.prototype.set=function(decl,prefix){var spec;spec=flexSpec(prefix)[0];if(spec===2009){decl.value=(parseInt(decl.value)+1).toString();return Order.__super__.set.call(this,decl,prefix)}else{return Order.__super__.set.apply(this,arguments)}};return Order}(Declaration);module.exports=Order}).call(this)},{"../declaration":9,"./flex-spec":29}],46:[function(require,module,exports){(function(){var OldValue,Pixelated,Value,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;OldValue=require("../old-value");Value=require("../value");Pixelated=function(superClass){extend(Pixelated,superClass);function Pixelated(){return Pixelated.__super__.constructor.apply(this,arguments)}Pixelated.names=["pixelated"];Pixelated.prototype.replace=function(string,prefix){if(prefix==="-webkit-"){return string.replace(this.regexp(),"$1-webkit-optimize-contrast")}else if(prefix==="-moz-"){return string.replace(this.regexp(),"$1-moz-crisp-edges")}else{return Pixelated.__super__.replace.apply(this,arguments)}};Pixelated.prototype.old=function(prefix){if(prefix==="-webkit-"){return new OldValue(this.name,"-webkit-optimize-contrast")}else if(prefix==="-moz-"){return new OldValue(this.name,"-moz-crisp-edges")}else{return Pixelated.__super__.old.apply(this,arguments)}};return Pixelated}(Value);module.exports=Pixelated}).call(this)},{"../old-value":53,"../value":62}],47:[function(require,module,exports){(function(){var Placeholder,Selector,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Selector=require("../selector");Placeholder=function(superClass){extend(Placeholder,superClass);function Placeholder(){return Placeholder.__super__.constructor.apply(this,arguments)}Placeholder.names=[":placeholder-shown","::placeholder"];Placeholder.prototype.possible=function(){return Placeholder.__super__.possible.apply(this,arguments).concat("-moz- old")};Placeholder.prototype.prefixed=function(prefix){if("-webkit-"===prefix){return"::-webkit-input-placeholder"}else if("-ms-"===prefix){return":-ms-input-placeholder"}else if("-moz- old"===prefix){return":-moz-placeholder"}else{return"::"+prefix+"placeholder"}};return Placeholder}(Selector);module.exports=Placeholder}).call(this)},{"../selector":58}],48:[function(require,module,exports){(function(){var Declaration,TextEmphasisPosition,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");TextEmphasisPosition=function(superClass){extend(TextEmphasisPosition,superClass);function TextEmphasisPosition(){return TextEmphasisPosition.__super__.constructor.apply(this,arguments)}TextEmphasisPosition.names=["text-emphasis-position"];TextEmphasisPosition.prototype.set=function(decl,prefix){if(prefix==="-webkit-"){decl.value=decl.value.replace(/\s*(right|left)\s*/i,"");return TextEmphasisPosition.__super__.set.call(this,decl,prefix)}else{return TextEmphasisPosition.__super__.set.apply(this,arguments)}};return TextEmphasisPosition}(Declaration);module.exports=TextEmphasisPosition}).call(this)},{"../declaration":9}],49:[function(require,module,exports){(function(){var Declaration,TransformDecl,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");TransformDecl=function(superClass){extend(TransformDecl,superClass);function TransformDecl(){return TransformDecl.__super__.constructor.apply(this,arguments)}TransformDecl.names=["transform","transform-origin"];TransformDecl.functions3d=["matrix3d","translate3d","translateZ","scale3d","scaleZ","rotate3d","rotateX","rotateY","perspective"];TransformDecl.prototype.keyframeParents=function(decl){var parent;parent=decl.parent;while(parent){if(parent.type==="atrule"&&parent.name==="keyframes"){return true}parent=parent.parent}return false};TransformDecl.prototype.contain3d=function(decl){var func,i,len,ref;if(decl.prop==="transform-origin"){return false}ref=TransformDecl.functions3d;for(i=0,len=ref.length;i<len;i++){func=ref[i];if(decl.value.indexOf(func+"(")!==-1){return true}}return false};TransformDecl.prototype.set=function(decl,prefix){decl=TransformDecl.__super__.set.apply(this,arguments);if(prefix==="-ms-"){decl.value=decl.value.replace(/rotateZ/gi,"rotate")}return decl};TransformDecl.prototype.insert=function(decl,prefix,prefixes){if(prefix==="-ms-"){if(!this.contain3d(decl)&&!this.keyframeParents(decl)){return TransformDecl.__super__.insert.apply(this,arguments)}}else if(prefix==="-o-"){if(!this.contain3d(decl)){return TransformDecl.__super__.insert.apply(this,arguments)}}else{return TransformDecl.__super__.insert.apply(this,arguments)}};return TransformDecl}(Declaration);module.exports=TransformDecl}).call(this)},{"../declaration":9}],50:[function(require,module,exports){(function(){var Declaration,WritingMode,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Declaration=require("../declaration");WritingMode=function(superClass){extend(WritingMode,superClass);function WritingMode(){return WritingMode.__super__.constructor.apply(this,arguments)}WritingMode.names=["writing-mode"];WritingMode.msValues={"horizontal-tb":"lr-tb","vertical-rl":"tb-rl","vertical-lr":"tb-lr"};WritingMode.prototype.set=function(decl,prefix){if(prefix==="-ms-"){decl.value=WritingMode.msValues[decl.value]||decl.value;return WritingMode.__super__.set.call(this,decl,prefix)}else{return WritingMode.__super__.set.apply(this,arguments)}};return WritingMode}(Declaration);module.exports=WritingMode}).call(this)},{"../declaration":9}],51:[function(require,module,exports){(function(){var browserslist,capitalize,names,prefix;browserslist=require("browserslist");capitalize=function(str){return str.slice(0,1).toUpperCase()+str.slice(1)};names={ie:"IE",ie_mob:"IE Mobile",ios_saf:"iOS",op_mini:"Opera Mini",op_mob:"Opera Mobile",and_chr:"Chrome for Android",and_ff:"Firefox for Android",and_uc:"UC for Android"};prefix=function(name,prefixes){var out;out=" "+name+": ";out+=prefixes.map(function(i){return i.replace(/^-(.*)-$/g,"$1")}).join(", ");out+="\n";return out};module.exports=function(prefixes){var atrules,browser,coverage,data,j,k,l,len,len1,len2,list,name,out,props,ref,ref1,ref2,ref3,ref4,ref5,round,selector,selectors,string,value,values,version,versions;if(prefixes.browsers.selected.length===0){return"No browsers selected"}versions=[];ref=prefixes.browsers.selected;for(j=0,len=ref.length;j<len;j++){browser=ref[j];ref1=browser.split(" "),name=ref1[0],version=ref1[1];name=names[name]||capitalize(name);if(versions[name]){versions[name].push(version)}else{versions[name]=[version]}}out="Browsers:\n";for(browser in versions){list=versions[browser];list=list.sort(function(a,b){return parseFloat(b)-parseFloat(a)});out+=" "+browser+": "+list.join(", ")+"\n"}coverage=browserslist.coverage(prefixes.browsers.selected);round=Math.round(coverage*100)/100;out+="\nThese browsers account for "+round+"% of all users globally\n";atrules="";ref2=prefixes.add;for(name in ref2){data=ref2[name];if(name[0]==="@"&&data.prefixes){atrules+=prefix(name,data.prefixes)}}if(atrules!==""){out+="\nAt-Rules:\n"+atrules}selectors="";ref3=prefixes.add.selectors;for(k=0,len1=ref3.length;k<len1;k++){selector=ref3[k];if(selector.prefixes){selectors+=prefix(selector.name,selector.prefixes)}}if(selectors!==""){out+="\nSelectors:\n"+selectors}values="";props="";ref4=prefixes.add;for(name in ref4){data=ref4[name];if(name[0]!=="@"&&data.prefixes){props+=prefix(name,data.prefixes)}if(!data.values){continue}ref5=data.values;for(l=0,len2=ref5.length;l<len2;l++){value=ref5[l];string=prefix(value.name,value.prefixes);if(values.indexOf(string)===-1){values+=string}}}if(props!==""){out+="\nProperties:\n"+props}if(values!==""){out+="\nValues:\n"+values}if(atrules===""&&selectors===""&&props===""&&values===""){out+="\nAwesome! Your browsers don't require any vendor prefixes."+"\nNow you can remove Autoprefixer from build steps."}return out}}).call(this)},{browserslist:63}],52:[function(require,module,exports){(function(){var OldSelector;OldSelector=function(){function OldSelector(selector,prefix1){var i,len,prefix,ref;this.prefix=prefix1;this.prefixed=selector.prefixed(this.prefix);this.regexp=selector.regexp(this.prefix);this.prefixeds=[];ref=selector.possible();for(i=0,len=ref.length;i<len;i++){prefix=ref[i];this.prefixeds.push([selector.prefixed(prefix),selector.regexp(prefix)])}this.unprefixed=selector.name;this.nameRegexp=selector.regexp()}OldSelector.prototype.isHack=function(rule){var before,i,index,len,ref,ref1,regexp,rules,some,string;index=rule.parent.index(rule)+1;rules=rule.parent.nodes;while(index<rules.length){before=rules[index].selector;if(!before){return true}if(before.indexOf(this.unprefixed)!==-1&&before.match(this.nameRegexp)){return false}some=false;ref=this.prefixeds;for(i=0,len=ref.length;i<len;i++){ref1=ref[i],string=ref1[0],regexp=ref1[1];if(before.indexOf(string)!==-1&&before.match(regexp)){some=true;break}}if(!some){return true}index+=1}return true};OldSelector.prototype.check=function(rule){if(rule.selector.indexOf(this.prefixed)===-1){return false}if(!rule.selector.match(this.regexp)){return false}if(this.isHack(rule)){return false}return true};return OldSelector}();module.exports=OldSelector}).call(this)},{}],53:[function(require,module,exports){(function(){var OldValue,utils;utils=require("./utils");OldValue=function(){function OldValue(unprefixed,prefixed,string,regexp){this.unprefixed=unprefixed;this.prefixed=prefixed;this.string=string;this.regexp=regexp;this.regexp||(this.regexp=utils.regexp(this.prefixed));this.string||(this.string=this.prefixed)}OldValue.prototype.check=function(value){if(value.indexOf(this.string)!==-1){return!!value.match(this.regexp)}else{return false}};return OldValue}();module.exports=OldValue}).call(this)},{"./utils":61}],54:[function(require,module,exports){(function(){var Browsers,Prefixer,clone,utils,vendor,hasProp={}.hasOwnProperty;Browsers=require("./browsers");utils=require("./utils");vendor=require("postcss/lib/vendor");clone=function(obj,parent){var cloned,i,value;cloned=new obj.constructor;for(i in obj){if(!hasProp.call(obj,i))continue;value=obj[i];if(i==="parent"&&typeof value==="object"){if(parent){cloned[i]=parent}}else if(i==="source"){cloned[i]=value}else if(value instanceof Array){cloned[i]=value.map(function(i){return clone(i,cloned)})}else if(i!=="_autoprefixerPrefix"&&i!=="_autoprefixerValues"){if(typeof value==="object"){value=clone(value,cloned)}cloned[i]=value}}return cloned};Prefixer=function(){Prefixer.hack=function(klass){var j,len,name,ref,results;this.hacks||(this.hacks={});ref=klass.names;results=[];for(j=0,len=ref.length;j<len;j++){name=ref[j];results.push(this.hacks[name]=klass)}return results};Prefixer.load=function(name,prefixes,all){var klass,ref;klass=(ref=this.hacks)!=null?ref[name]:void 0;if(klass){return new klass(name,prefixes,all)}else{return new this(name,prefixes,all)}};Prefixer.clone=function(node,overrides){var cloned,name;cloned=clone(node);for(name in overrides){cloned[name]=overrides[name]}return cloned};function Prefixer(name1,prefixes1,all1){this.name=name1;this.prefixes=prefixes1;this.all=all1}Prefixer.prototype.parentPrefix=function(node){var prefix;prefix=node._autoprefixerPrefix!=null?node._autoprefixerPrefix:node.type==="decl"&&node.prop[0]==="-"?vendor.prefix(node.prop):node.type==="root"?false:node.type==="rule"&&node.selector.indexOf(":-")!==-1?node.selector.match(/:(-\w+-)/)[1]:node.type==="atrule"&&node.name[0]==="-"?vendor.prefix(node.name):this.parentPrefix(node.parent);if(Browsers.prefixes().indexOf(prefix)===-1){prefix=false}return node._autoprefixerPrefix=prefix};Prefixer.prototype.process=function(node){var added,j,k,len,len1,parent,prefix,prefixes,ref;if(!this.check(node)){return}parent=this.parentPrefix(node);prefixes=[];ref=this.prefixes;for(j=0,len=ref.length;j<len;j++){prefix=ref[j];if(parent&&parent!==utils.removeNote(prefix)){continue}prefixes.push(prefix)}added=[];for(k=0,len1=prefixes.length;k<len1;k++){prefix=prefixes[k];if(this.add(node,prefix,added.concat([prefix]))){added.push(prefix)}}return added};Prefixer.prototype.clone=function(node,overrides){return Prefixer.clone(node,overrides)};return Prefixer}();module.exports=Prefixer}).call(this)},{"./browsers":8,"./utils":61,"postcss/lib/vendor":641}],55:[function(require,module,exports){(function(){var AtRule,Browsers,Declaration,Prefixes,Processor,Resolution,Selector,Supports,Transition,Value,declsCache,utils,vendor;Declaration=require("./declaration");Resolution=require("./resolution");Transition=require("./transition");
Processor=require("./processor");Supports=require("./supports");Browsers=require("./browsers");Selector=require("./selector");AtRule=require("./at-rule");Value=require("./value");utils=require("./utils");vendor=require("postcss/lib/vendor");Selector.hack(require("./hacks/fullscreen"));Selector.hack(require("./hacks/placeholder"));Declaration.hack(require("./hacks/flex"));Declaration.hack(require("./hacks/order"));Declaration.hack(require("./hacks/filter"));Declaration.hack(require("./hacks/grid-end"));Declaration.hack(require("./hacks/flex-flow"));Declaration.hack(require("./hacks/flex-grow"));Declaration.hack(require("./hacks/flex-wrap"));Declaration.hack(require("./hacks/grid-start"));Declaration.hack(require("./hacks/align-self"));Declaration.hack(require("./hacks/flex-basis"));Declaration.hack(require("./hacks/mask-border"));Declaration.hack(require("./hacks/align-items"));Declaration.hack(require("./hacks/flex-shrink"));Declaration.hack(require("./hacks/break-props"));Declaration.hack(require("./hacks/writing-mode"));Declaration.hack(require("./hacks/border-image"));Declaration.hack(require("./hacks/justify-items"));Declaration.hack(require("./hacks/align-content"));Declaration.hack(require("./hacks/border-radius"));Declaration.hack(require("./hacks/block-logical"));Declaration.hack(require("./hacks/grid-template"));Declaration.hack(require("./hacks/inline-logical"));Declaration.hack(require("./hacks/grid-row-align"));Declaration.hack(require("./hacks/transform-decl"));Declaration.hack(require("./hacks/flex-direction"));Declaration.hack(require("./hacks/image-rendering"));Declaration.hack(require("./hacks/justify-content"));Declaration.hack(require("./hacks/background-size"));Declaration.hack(require("./hacks/text-emphasis-position"));Value.hack(require("./hacks/fill"));Value.hack(require("./hacks/gradient"));Value.hack(require("./hacks/pixelated"));Value.hack(require("./hacks/image-set"));Value.hack(require("./hacks/cross-fade"));Value.hack(require("./hacks/flex-values"));Value.hack(require("./hacks/display-flex"));Value.hack(require("./hacks/display-grid"));Value.hack(require("./hacks/filter-value"));declsCache={};Prefixes=function(){function Prefixes(data1,browsers,options){var ref;this.data=data1;this.browsers=browsers;this.options=options!=null?options:{};ref=this.preprocess(this.select(this.data)),this.add=ref[0],this.remove=ref[1];this.transition=new Transition(this);this.processor=new Processor(this)}Prefixes.prototype.cleaner=function(){var empty;if(!this.cleanerCache){if(this.browsers.selected.length){empty=new Browsers(this.browsers.data,[]);this.cleanerCache=new Prefixes(this.data,empty,this.options)}else{return this}}return this.cleanerCache};Prefixes.prototype.select=function(list){var add,all,data,name,notes,selected;selected={add:{},remove:{}};for(name in list){data=list[name];add=data.browsers.map(function(i){var params;params=i.split(" ");return{browser:params[0]+" "+params[1],note:params[2]}});notes=add.filter(function(i){return i.note}).map(function(_this){return function(i){return _this.browsers.prefix(i.browser)+" "+i.note}}(this));notes=utils.uniq(notes);add=add.filter(function(_this){return function(i){return _this.browsers.isSelected(i.browser)}}(this)).map(function(_this){return function(i){var prefix;prefix=_this.browsers.prefix(i.browser);if(i.note){return prefix+" "+i.note}else{return prefix}}}(this));add=this.sort(utils.uniq(add));if(this.options.flexbox==="no-2009"){add=add.filter(function(i){return i.indexOf("2009")===-1})}all=data.browsers.map(function(_this){return function(i){return _this.browsers.prefix(i)}}(this));if(data.mistakes){all=all.concat(data.mistakes)}all=all.concat(notes);all=utils.uniq(all);if(add.length){selected.add[name]=add;if(add.length<all.length){selected.remove[name]=all.filter(function(i){return add.indexOf(i)===-1})}}else{selected.remove[name]=all}}return selected};Prefixes.prototype.sort=function(prefixes){return prefixes.sort(function(a,b){var aLength,bLength;aLength=utils.removeNote(a).length;bLength=utils.removeNote(b).length;if(aLength===bLength){return b.length-a.length}else{return bLength-aLength}})};Prefixes.prototype.preprocess=function(selected){var add,j,k,l,len,len1,len2,len3,len4,len5,len6,m,n,name,o,old,olds,p,prefix,prefixed,prefixes,prop,props,ref,ref1,ref2,remove,selector,value,values;add={selectors:[],"@supports":new Supports(Prefixes,this)};ref=selected.add;for(name in ref){prefixes=ref[name];if(name==="@keyframes"||name==="@viewport"){add[name]=new AtRule(name,prefixes,this)}else if(name==="@resolution"){add[name]=new Resolution(name,prefixes,this)}else if(this.data[name].selector){add.selectors.push(Selector.load(name,prefixes,this))}else{props=this.data[name].props;if(props){value=Value.load(name,prefixes,this);for(j=0,len=props.length;j<len;j++){prop=props[j];if(!add[prop]){add[prop]={values:[]}}add[prop].values.push(value)}}else{values=((ref1=add[name])!=null?ref1.values:void 0)||[];add[name]=Declaration.load(name,prefixes,this);add[name].values=values}}}remove={selectors:[]};ref2=selected.remove;for(name in ref2){prefixes=ref2[name];if(this.data[name].selector){selector=Selector.load(name,prefixes);for(k=0,len1=prefixes.length;k<len1;k++){prefix=prefixes[k];remove.selectors.push(selector.old(prefix))}}else if(name==="@keyframes"||name==="@viewport"){for(l=0,len2=prefixes.length;l<len2;l++){prefix=prefixes[l];prefixed="@"+prefix+name.slice(1);remove[prefixed]={remove:true}}}else if(name==="@resolution"){remove[name]=new Resolution(name,prefixes,this)}else{props=this.data[name].props;if(props){value=Value.load(name,[],this);for(m=0,len3=prefixes.length;m<len3;m++){prefix=prefixes[m];old=value.old(prefix);if(old){for(n=0,len4=props.length;n<len4;n++){prop=props[n];if(!remove[prop]){remove[prop]={}}if(!remove[prop].values){remove[prop].values=[]}remove[prop].values.push(old)}}}}else{for(o=0,len5=prefixes.length;o<len5;o++){prefix=prefixes[o];prop=vendor.unprefixed(name);olds=this.decl(name).old(name,prefix);for(p=0,len6=olds.length;p<len6;p++){prefixed=olds[p];if(!remove[prefixed]){remove[prefixed]={}}remove[prefixed].remove=true}}}}}return[add,remove]};Prefixes.prototype.decl=function(prop){var decl;decl=declsCache[prop];if(decl){return decl}else{return declsCache[prop]=Declaration.load(prop)}};Prefixes.prototype.unprefixed=function(prop){return this.normalize(vendor.unprefixed(prop))};Prefixes.prototype.normalize=function(prop){return this.decl(prop).normalize(prop)};Prefixes.prototype.prefixed=function(prop,prefix){prop=vendor.unprefixed(prop);return this.decl(prop).prefixed(prop,prefix)};Prefixes.prototype.values=function(type,prop){var data,global,ref,ref1,values;data=this[type];global=(ref=data["*"])!=null?ref.values:void 0;values=(ref1=data[prop])!=null?ref1.values:void 0;if(global&&values){return utils.uniq(global.concat(values))}else{return global||values||[]}};Prefixes.prototype.group=function(decl){var checker,index,length,rule,unprefixed;rule=decl.parent;index=rule.index(decl);length=rule.nodes.length;unprefixed=this.unprefixed(decl.prop);checker=function(_this){return function(step,callback){var other;index+=step;while(index>=0&&index<length){other=rule.nodes[index];if(other.type==="decl"){if(step===-1&&other.prop===unprefixed){if(!Browsers.withPrefix(other.value)){break}}if(_this.unprefixed(other.prop)!==unprefixed){break}else if(callback(other)===true){return true}if(step===+1&&other.prop===unprefixed){if(!Browsers.withPrefix(other.value)){break}}}index+=step}return false}}(this);return{up:function(callback){return checker(-1,callback)},down:function(callback){return checker(+1,callback)}}};return Prefixes}();module.exports=Prefixes}).call(this)},{"./at-rule":5,"./browsers":8,"./declaration":9,"./hacks/align-content":10,"./hacks/align-items":11,"./hacks/align-self":12,"./hacks/background-size":13,"./hacks/block-logical":14,"./hacks/border-image":15,"./hacks/border-radius":16,"./hacks/break-props":17,"./hacks/cross-fade":18,"./hacks/display-flex":19,"./hacks/display-grid":20,"./hacks/fill":21,"./hacks/filter":23,"./hacks/filter-value":22,"./hacks/flex":32,"./hacks/flex-basis":24,"./hacks/flex-direction":25,"./hacks/flex-flow":26,"./hacks/flex-grow":27,"./hacks/flex-shrink":28,"./hacks/flex-values":30,"./hacks/flex-wrap":31,"./hacks/fullscreen":33,"./hacks/gradient":34,"./hacks/grid-end":35,"./hacks/grid-row-align":36,"./hacks/grid-start":37,"./hacks/grid-template":38,"./hacks/image-rendering":39,"./hacks/image-set":40,"./hacks/inline-logical":41,"./hacks/justify-content":42,"./hacks/justify-items":43,"./hacks/mask-border":44,"./hacks/order":45,"./hacks/pixelated":46,"./hacks/placeholder":47,"./hacks/text-emphasis-position":48,"./hacks/transform-decl":49,"./hacks/writing-mode":50,"./processor":56,"./resolution":57,"./selector":58,"./supports":59,"./transition":60,"./utils":61,"./value":62,"postcss/lib/vendor":641}],56:[function(require,module,exports){(function(){var OLD_DIRECTION,Processor,Value,utils,vendor;vendor=require("postcss/lib/vendor");Value=require("./value");utils=require("./utils");OLD_DIRECTION=/(^|[^-])(linear|radial)-gradient\(\s*(top|left|right|bottom)/i;Processor=function(){function Processor(prefixes){this.prefixes=prefixes}Processor.prototype.add=function(css,result){var keyframes,resolution,supports,viewport;resolution=this.prefixes.add["@resolution"];keyframes=this.prefixes.add["@keyframes"];viewport=this.prefixes.add["@viewport"];supports=this.prefixes.add["@supports"];css.walkAtRules(function(_this){return function(rule){if(rule.name==="keyframes"){if(!_this.disabled(rule)){return keyframes!=null?keyframes.process(rule):void 0}}else if(rule.name==="viewport"){if(!_this.disabled(rule)){return viewport!=null?viewport.process(rule):void 0}}else if(rule.name==="supports"){if(_this.prefixes.options.supports!==false&&!_this.disabled(rule)){return supports.process(rule)}}else if(rule.name==="media"&&rule.params.indexOf("-resolution")!==-1){if(!_this.disabled(rule)){return resolution!=null?resolution.process(rule):void 0}}}}(this));css.walkRules(function(_this){return function(rule){var j,len,ref,results,selector;if(_this.disabled(rule)){return}ref=_this.prefixes.add.selectors;results=[];for(j=0,len=ref.length;j<len;j++){selector=ref[j];results.push(selector.process(rule,result))}return results}}(this));css.walkDecls(function(_this){return function(decl){var display,prefixer;if(_this.disabled(decl)){return}if(decl.prop==="display"&&decl.value==="box"){result.warn("You should write display: flex by final spec "+"instead of display: box",{node:decl});return}if(decl.value.indexOf("linear-gradient")!==-1){if(OLD_DIRECTION.test(decl.value)){result.warn("Gradient has outdated direction syntax. "+"New syntax is like `to left` instead of `right`.",{node:decl})}}if(decl.prop==="text-emphasis-position"){if(decl.value==="under"||decl.value==="over"){result.warn("You should use 2 values for text-emphasis-position "+"For example, `under left` instead of just `under`.",{node:decl})}}if(decl.value.indexOf("fill-available")!==-1){result.warn("Replace fill-available to fill, "+"because spec had been changed",{node:decl})}if(_this.prefixes.options.flexbox!==false){if(decl.prop==="grid-row-end"&&decl.value.indexOf("span")===-1){result.warn("IE supports only grid-row-end with span. "+"You should add grid: false option to Autoprefixer "+"and use some JS grid polyfill for full spec support",{node:decl})}if(decl.prop==="grid-row"){if(decl.value.indexOf("/")!==-1&&decl.value.indexOf("span")===-1){result.warn("IE supports only grid-row with / and span. "+"You should add grid: false option to Autoprefixer "+"and use some JS grid polyfill for full spec support",{node:decl})}}}if(decl.prop==="transition"||decl.prop==="transition-property"){return _this.prefixes.transition.add(decl,result)}else if(decl.prop==="align-items"){display=_this.displayType(decl);if(display!=="grid"&&_this.prefixes.options.flexbox!==false){prefixer=_this.prefixes.add["align-items"];if(prefixer&&prefixer.prefixes){prefixer.process(decl)}}if(display!=="flex"&&_this.prefixes.options.grid!==false){prefixer=_this.prefixes.add["grid-row-align"];if(prefixer&&prefixer.prefixes){return prefixer.process(decl)}}}else{prefixer=_this.prefixes.add[decl.prop];if(prefixer&&prefixer.prefixes){return prefixer.process(decl)}}}}(this));return css.walkDecls(function(_this){return function(decl){var j,len,ref,unprefixed,value;if(_this.disabled(decl)){return}unprefixed=_this.prefixes.unprefixed(decl.prop);ref=_this.prefixes.values("add",unprefixed);for(j=0,len=ref.length;j<len;j++){value=ref[j];value.process(decl,result)}return Value.save(_this.prefixes,decl)}}(this))};Processor.prototype.remove=function(css){var checker,j,len,ref,resolution;resolution=this.prefixes.remove["@resolution"];css.walkAtRules(function(_this){return function(rule,i){if(_this.prefixes.remove["@"+rule.name]){if(!_this.disabled(rule)){return rule.parent.removeChild(i)}}else if(rule.name==="media"&&rule.params.indexOf("-resolution")!==-1){return resolution!=null?resolution.clean(rule):void 0}}}(this));ref=this.prefixes.remove.selectors;for(j=0,len=ref.length;j<len;j++){checker=ref[j];css.walkRules(function(_this){return function(rule,i){if(checker.check(rule)){if(!_this.disabled(rule)){return rule.parent.removeChild(i)}}}}(this))}return css.walkDecls(function(_this){return function(decl,i){var k,len1,notHack,ref1,ref2,rule,unprefixed;if(_this.disabled(decl)){return}rule=decl.parent;unprefixed=_this.prefixes.unprefixed(decl.prop);if(decl.prop==="transition"||decl.prop==="transition-property"){_this.prefixes.transition.remove(decl)}if((ref1=_this.prefixes.remove[decl.prop])!=null?ref1.remove:void 0){notHack=_this.prefixes.group(decl).down(function(other){return _this.prefixes.normalize(other.prop)===unprefixed});if(notHack&&!_this.withHackValue(decl)){if(decl.raw("before").indexOf("\n")>-1){_this.reduceSpaces(decl)}rule.removeChild(i);return}}ref2=_this.prefixes.values("remove",unprefixed);for(k=0,len1=ref2.length;k<len1;k++){checker=ref2[k];if(checker.check(decl.value)){unprefixed=checker.unprefixed;notHack=_this.prefixes.group(decl).down(function(other){return other.value.indexOf(unprefixed)!==-1});if(notHack){rule.removeChild(i);return}else if(checker.clean){checker.clean(decl);return}}}}}(this))};Processor.prototype.withHackValue=function(decl){return decl.prop==="-webkit-background-clip"&&decl.value==="text"};Processor.prototype.disabled=function(node){var other,status;if(this.prefixes.options.grid===false&&node.type==="decl"){if(node.prop==="display"&&node.value.indexOf("grid")!==-1){return true}if(node.prop.indexOf("grid")!==-1||node.prop==="justify-items"){return true}}if(this.prefixes.options.flexbox===false&&node.type==="decl"){if(node.prop==="display"&&node.value.indexOf("flex")!==-1){return true}other=["order","justify-content","align-self","align-content"];if(node.prop.indexOf("flex")!==-1||other.indexOf(node.prop)!==-1){return true}}if(node._autoprefixerDisabled!=null){return node._autoprefixerDisabled}else if(node.nodes){status=void 0;node.each(function(i){if(i.type!=="comment"){return}if(/(!\s*)?autoprefixer:\s*off/i.test(i.text)){status=false;return false}else if(/(!\s*)?autoprefixer:\s*on/i.test(i.text)){status=true;return false}});return node._autoprefixerDisabled=status!=null?!status:node.parent?this.disabled(node.parent):false}else if(node.parent){return node._autoprefixerDisabled=this.disabled(node.parent)}else{return false}};Processor.prototype.reduceSpaces=function(decl){var diff,parts,prevMin,stop;stop=false;this.prefixes.group(decl).up(function(other){return stop=true});if(stop){return}parts=decl.raw("before").split("\n");prevMin=parts[parts.length-1].length;diff=false;return this.prefixes.group(decl).down(function(other){var last;parts=other.raw("before").split("\n");last=parts.length-1;if(parts[last].length>prevMin){if(diff===false){diff=parts[last].length-prevMin}parts[last]=parts[last].slice(0,-diff);return other.raws.before=parts.join("\n")}})};Processor.prototype.displayType=function(decl){var i,j,len,ref;ref=decl.parent.nodes;for(j=0,len=ref.length;j<len;j++){i=ref[j];if(i.prop==="display"){if(i.value.indexOf("flex")!==-1){return"flex"}else if(i.value.indexOf("grid")!==-1){return"grid"}}}return false};return Processor}();module.exports=Processor}).call(this)},{"./utils":61,"./value":62,"postcss/lib/vendor":641}],57:[function(require,module,exports){(function(){var Prefixer,Resolution,n2f,regexp,split,utils,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Prefixer=require("./prefixer");utils=require("./utils");n2f=require("num2fraction");regexp=/(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi)/gi;split=/(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi)/i;Resolution=function(superClass){extend(Resolution,superClass);function Resolution(){return Resolution.__super__.constructor.apply(this,arguments)}Resolution.prototype.prefixName=function(prefix,name){return name=prefix==="-moz-"?name+"--moz-device-pixel-ratio":prefix+name+"-device-pixel-ratio"};Resolution.prototype.prefixQuery=function(prefix,name,colon,value,units){if(units==="dpi"){value=Number(value/96)}if(prefix==="-o-"){value=n2f(value)}return this.prefixName(prefix,name)+colon+value};Resolution.prototype.clean=function(rule){var j,len,prefix,ref;if(!this.bad){this.bad=[];ref=this.prefixes;for(j=0,len=ref.length;j<len;j++){prefix=ref[j];this.bad.push(this.prefixName(prefix,"min"));this.bad.push(this.prefixName(prefix,"max"))}}return rule.params=utils.editList(rule.params,function(_this){return function(queries){return queries.filter(function(query){return _this.bad.every(function(i){return query.indexOf(i)===-1})})}}(this))};Resolution.prototype.process=function(rule){var parent,prefixes;parent=this.parentPrefix(rule);prefixes=parent?[parent]:this.prefixes;return rule.params=utils.editList(rule.params,function(_this){return function(origin,prefixed){var j,k,len,len1,prefix,processed,query;for(j=0,len=origin.length;j<len;j++){query=origin[j];if(query.indexOf("min-resolution")===-1&&query.indexOf("max-resolution")===-1){prefixed.push(query);continue}for(k=0,len1=prefixes.length;k<len1;k++){prefix=prefixes[k];if(prefix==="-moz-"&&rule.params.indexOf("dpi")!==-1){continue}else{processed=query.replace(regexp,function(str){var parts;parts=str.match(split);return _this.prefixQuery(prefix,parts[1],parts[2],parts[3],parts[4])});prefixed.push(processed)}}prefixed.push(query)}return utils.uniq(prefixed)}}(this))};return Resolution}(Prefixer);module.exports=Resolution}).call(this)},{"./prefixer":54,"./utils":61,num2fraction:118}],58:[function(require,module,exports){(function(){var Browsers,OldSelector,Prefixer,Selector,utils,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;OldSelector=require("./old-selector");Prefixer=require("./prefixer");Browsers=require("./browsers");utils=require("./utils");Selector=function(superClass){extend(Selector,superClass);function Selector(name1,prefixes,all){this.name=name1;this.prefixes=prefixes;this.all=all;this.regexpCache={}}Selector.prototype.check=function(rule){if(rule.selector.indexOf(this.name)!==-1){return!!rule.selector.match(this.regexp())}else{return false}};Selector.prototype.prefixed=function(prefix){return this.name.replace(/^([^\w]*)/,"$1"+prefix)};Selector.prototype.regexp=function(prefix){var name;if(this.regexpCache[prefix]){return this.regexpCache[prefix]}name=prefix?this.prefixed(prefix):this.name;return this.regexpCache[prefix]=RegExp("(^|[^:\"'=])"+utils.escapeRegexp(name),"gi")};Selector.prototype.possible=function(){return Browsers.prefixes()};Selector.prototype.prefixeds=function(rule){var i,len,prefix,prefixeds,ref;if(rule._autoprefixerPrefixeds){return rule._autoprefixerPrefixeds}prefixeds={};ref=this.possible();for(i=0,len=ref.length;i<len;i++){prefix=ref[i];prefixeds[prefix]=this.replace(rule.selector,prefix)}return rule._autoprefixerPrefixeds=prefixeds};Selector.prototype.already=function(rule,prefixeds,prefix){var before,index,key,prefixed,some;index=rule.parent.index(rule)-1;while(index>=0){before=rule.parent.nodes[index];if(before.type!=="rule"){return false}some=false;for(key in prefixeds){prefixed=prefixeds[key];if(before.selector===prefixed){if(prefix===key){return true}else{some=true;break}}}if(!some){return false}index-=1}return false};Selector.prototype.replace=function(selector,prefix){return selector.replace(this.regexp(),"$1"+this.prefixed(prefix))};Selector.prototype.add=function(rule,prefix){var cloned,prefixeds;prefixeds=this.prefixeds(rule);if(this.already(rule,prefixeds,prefix)){return}cloned=this.clone(rule,{selector:prefixeds[prefix]});return rule.parent.insertBefore(rule,cloned)};Selector.prototype.old=function(prefix){return new OldSelector(this,prefix)};return Selector}(Prefixer);module.exports=Selector}).call(this)},{"./browsers":8,"./old-selector":52,"./prefixer":54,"./utils":61}],59:[function(require,module,exports){(function(){var Browsers,Supports,Value,brackets,browser,data,postcss,ref,support,supported,utils,version,versions;Browsers=require("./browsers");brackets=require("./brackets");Value=require("./value");utils=require("./utils");postcss=require("postcss");supported=[];data=require("caniuse-db/features-json/css-featurequeries.json");ref=data.stats;for(browser in ref){versions=ref[browser];for(version in versions){support=versions[version];if(/y/.test(support)){supported.push(browser+" "+version)}}}Supports=function(){function Supports(Prefixes,all1){this.Prefixes=Prefixes;this.all=all1}Supports.prototype.prefixer=function(){var browsers,filtered;if(this.prefixerCache){return this.prefixerCache}filtered=this.all.browsers.selected.filter(function(_this){return function(i){return supported.indexOf(i)!==-1}}(this));browsers=new Browsers(this.all.browsers.data,filtered,this.all.options);return this.prefixerCache=new this.Prefixes(this.all.data,browsers,this.all.options)};Supports.prototype.parse=function(str){var prop,ref1,value;ref1=str.split(":"),prop=ref1[0],value=ref1[1];value||(value="");return[prop.trim(),value.trim()]};Supports.prototype.virtual=function(str){var prop,ref1,rule,value;ref1=this.parse(str),prop=ref1[0],value=ref1[1];rule=postcss.parse("a{}").first;rule.append({prop:prop,value:value,raws:{before:""}});return rule};Supports.prototype.prefixed=function(str){var decl,j,k,len,len1,prefixer,prop,ref1,ref2,rule,value;rule=this.virtual(str);prop=rule.first.prop;prefixer=this.prefixer().add[prop];if(prefixer!=null){if(typeof prefixer.process==="function"){prefixer.process(rule.first)}}ref1=rule.nodes;for(j=0,len=ref1.length;j<len;j++){decl=ref1[j];ref2=this.prefixer().values("add",prop);for(k=0,len1=ref2.length;k<len1;k++){value=ref2[k];value.process(decl)}Value.save(this.all,decl)}return rule.nodes};Supports.prototype.isNot=function(node){return typeof node==="string"&&/not\s*/i.test(node)};Supports.prototype.isOr=function(node){return typeof node==="string"&&/\s*or\s*/i.test(node)};Supports.prototype.isProp=function(node){return typeof node==="object"&&node.length===1&&typeof node[0]==="string"};Supports.prototype.isHack=function(all,unprefixed){var check;check=new RegExp("(\\(|\\s)"+utils.escapeRegexp(unprefixed)+":");return!check.test(all)};Supports.prototype.toRemove=function(str,all){var checker,j,len,prop,ref1,ref2,ref3,unprefixed,value;ref1=this.parse(str),prop=ref1[0],value=ref1[1];unprefixed=this.all.unprefixed(prop);if(((ref2=this.all.cleaner().remove[prop])!=null?ref2.remove:void 0)&&!this.isHack(all,unprefixed)){return true}ref3=this.all.cleaner().values("remove",unprefixed);for(j=0,len=ref3.length;j<len;j++){checker=ref3[j];if(checker.check(value)){return true}}return false};Supports.prototype.remove=function(nodes,all){var i;i=0;while(i<nodes.length){if(!this.isNot(nodes[i-1])&&this.isProp(nodes[i])&&this.isOr(nodes[i+1])){if(this.toRemove(nodes[i][0],all)){nodes.splice(i,2)}else{i+=2}}else{if(typeof nodes[i]==="object"){nodes[i]=this.remove(nodes[i],all)}i+=1}}return nodes};Supports.prototype.cleanBrackets=function(nodes){return nodes.map(function(_this){return function(i){if(typeof i==="object"){if(i.length===1&&typeof i[0]==="object"){return _this.cleanBrackets(i[0])}else{return _this.cleanBrackets(i)}}else{return i}}}(this))};Supports.prototype.convert=function(progress){var i,j,len,result;result=[""];for(j=0,len=progress.length;j<len;j++){i=progress[j];result.push([i.prop+": "+i.value]);result.push(" or ")}result[result.length-1]="";return result};Supports.prototype.normalize=function(nodes){if(typeof nodes==="object"){nodes=nodes.filter(function(i){return i!==""});if(typeof nodes[0]==="string"&&nodes[0].indexOf(":")!==-1){return[brackets.stringify(nodes)]}else{return nodes.map(function(_this){return function(i){return _this.normalize(i)}}(this))}}else{return nodes}};Supports.prototype.add=function(nodes,all){return nodes.map(function(_this){return function(i){var prefixed;if(_this.isProp(i)){prefixed=_this.prefixed(i[0]);if(prefixed.length>1){return _this.convert(prefixed)}else{return i}}else if(typeof i==="object"){return _this.add(i,all)}else{return i}}}(this))};Supports.prototype.process=function(rule){var ast;ast=brackets.parse(rule.params);ast=this.normalize(ast);ast=this.remove(ast,rule.params);ast=this.add(ast,rule.params);ast=this.cleanBrackets(ast);return rule.params=brackets.stringify(ast)};return Supports}();module.exports=Supports}).call(this)},{"./brackets":7,"./browsers":8,"./utils":61,"./value":62,"caniuse-db/features-json/css-featurequeries.json":78,postcss:632}],60:[function(require,module,exports){(function(){var Transition,list,parser,vendor;parser=require("postcss-value-parser");vendor=require("postcss/lib/vendor");list=require("postcss/lib/list");Transition=function(){function Transition(prefixes){this.prefixes=prefixes}Transition.prototype.props=["transition","transition-property"];Transition.prototype.add=function(decl,result){var added,clean,declPrefixes,j,k,l,len,len1,len2,names,param,params,prefix,prefixValue,prefixed,prefixer,prop,ref,ref1,value;declPrefixes=((ref=this.prefixes.add[decl.prop])!=null?ref.prefixes:void 0)||[];params=this.parse(decl.value);names=params.map(function(i){return i[0].value});added=[];if(names.some(function(i){return i[0]==="-"})){return}for(j=0,len=params.length;j<len;j++){param=params[j];prop=param[0].value;if(prop[0]==="-"){continue}prefixer=this.prefixes.add[prop];if(!(prefixer!=null?prefixer.prefixes:void 0)){continue}ref1=prefixer.prefixes;for(k=0,len1=ref1.length;k<len1;k++){prefix=ref1[k];prefixed=this.prefixes.prefixed(prop,prefix);if(prefixed!=="-ms-transform"&&names.indexOf(prefixed)===-1){if(!this.disabled(prop,prefix)){added.push(this.clone(prefixed,param))}}}}params=params.concat(added);value=this.stringify(params);clean=this.stringify(this.cleanForSafari(params));if(declPrefixes.indexOf("-webkit-")!==-1){this.cloneBefore(decl,"-webkit-"+decl.prop,clean)}this.cloneBefore(decl,decl.prop,clean);for(l=0,len2=declPrefixes.length;l<len2;l++){prefix=declPrefixes[l];if(prefix!=="-webkit-"){prefixValue=this.stringify(this.cleanOtherPrefixes(params,prefix));this.cloneBefore(decl,prefix+decl.prop,prefixValue)}}if(value!==decl.value&&!this.already(decl,decl.prop,value)){this.checkForWarning(result,decl);decl.cloneBefore();return decl.value=value}};Transition.prototype.already=function(decl,prop,value){return decl.parent.some(function(i){return i.prop===prop&&i.value===value})};Transition.prototype.cloneBefore=function(decl,prop,value){if(!this.already(decl,prop,value)){return decl.cloneBefore({prop:prop,value:value})}};Transition.prototype.checkForWarning=function(result,decl){if(decl.prop==="transition-property"){return decl.parent.each(function(i){if(i.type!=="decl"){return}if(i.prop.indexOf("transition-")!==0){return}if(i.prop==="transition-property"){return}if(list.comma(i.value).length>1){decl.warn(result,"Replace transition-property to transition, "+"because Autoprefixer could not support "+"any cases of transition-property "+"and other transition-*")}return false})}};Transition.prototype.remove=function(decl){var double,params,smaller,value;params=this.parse(decl.value);params=params.filter(function(_this){return function(param){var ref;return!((ref=_this.prefixes.remove[param[0].value])!=null?ref.remove:void 0)}}(this));value=this.stringify(params);if(decl.value===value){return}if(params.length===0){decl.remove();return}double=decl.parent.some(function(i){return i.prop===decl.prop&&i.value===value});smaller=decl.parent.some(function(i){return i!==decl&&i.prop===decl.prop&&i.value.length>value.length});if(double||smaller){return decl.remove()}else{return decl.value=value}};Transition.prototype.parse=function(value){var ast,j,len,node,param,ref,result;ast=parser(value);result=[];param=[];ref=ast.nodes;for(j=0,len=ref.length;j<len;j++){node=ref[j];param.push(node);if(node.type==="div"&&node.value===","){result.push(param);param=[]}}result.push(param);return result.filter(function(i){return i.length>0})};Transition.prototype.stringify=function(params){var j,len,nodes,param;if(params.length===0){return""}nodes=[];for(j=0,len=params.length;j<len;j++){param=params[j];if(param[param.length-1].type!=="div"){param.push(this.div(params))}nodes=nodes.concat(param)}if(nodes[0].type==="div"){nodes=nodes.slice(1)}if(nodes[nodes.length-1].type==="div"){nodes=nodes.slice(0,-1)}return parser.stringify({nodes:nodes})};Transition.prototype.clone=function(name,param){var i,j,len,result;result=[];for(j=0,len=param.length;j<len;j++){i=param[j];result.push(i)}result[0]={type:"word",value:name};return result};Transition.prototype.div=function(params){var j,k,len,len1,node,param;for(j=0,len=params.length;j<len;j++){param=params[j];for(k=0,len1=param.length;k<len1;k++){node=param[k];if(node.type==="div"&&node.value===","){return node}}}return{type:"div",value:",",after:" "}};Transition.prototype.cleanOtherPrefixes=function(params,prefix){return params.filter(function(param){var current;current=vendor.prefix(param[0].value);return current===""||current===prefix})};Transition.prototype.cleanForSafari=function(params){var j,len,param,prefix,prop,remove,result;result=[];remove=params.map(function(i){return i[0].value}).filter(function(i){return i.slice(0,8)==="-webkit-"}).map(function(_this){return function(i){return _this.prefixes.unprefixed(i)}}(this));for(j=0,len=params.length;j<len;j++){param=params[j];prop=param[0].value;prefix=vendor.prefix(prop);if(remove.indexOf(prop)===-1&&(prefix==="-webkit-"||prefix==="")){result.push(param)}}return result};Transition.prototype.disabled=function(prop,prefix){var other;other=["order","justify-content","align-self","align-content"];if(prop.indexOf("flex")!==-1||other.indexOf(prop)!==-1){if(this.prefixes.options.flexbox===false){return true}else if(this.prefixes.options.flexbox==="no-2009"){return prefix.indexOf("2009")!==-1}}};return Transition}();module.exports=Transition}).call(this)},{"postcss-value-parser":119,"postcss/lib/list":627,"postcss/lib/vendor":641}],61:[function(require,module,exports){(function(){var list;list=require("postcss/lib/list");module.exports={error:function(text){var err;err=new Error(text);err.autoprefixer=true;throw err},uniq:function(array){var filtered,i,j,len;filtered=[];for(j=0,len=array.length;j<len;j++){i=array[j];if(filtered.indexOf(i)===-1){filtered.push(i)}}return filtered},removeNote:function(string){if(string.indexOf(" ")===-1){return string}else{return string.split(" ")[0]}},escapeRegexp:function(string){return string.replace(/[.?*+\^\$\[\]\\(){}|\-]/g,"\\$&")},regexp:function(word,escape){if(escape==null){escape=true}if(escape){
word=this.escapeRegexp(word)}return RegExp("(^|[\\s,(])("+word+"($|[\\s(,]))","gi")},editList:function(value,callback){var changed,join,origin;origin=list.comma(value);changed=callback(origin,[]);if(origin===changed){return value}else{join=value.match(/,\s*/);join=join?join[0]:", ";return changed.join(join)}}}}).call(this)},{"postcss/lib/list":627}],62:[function(require,module,exports){(function(){var OldValue,Prefixer,Value,utils,vendor,extend=function(child,parent){for(var key in parent){if(hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child},hasProp={}.hasOwnProperty;Prefixer=require("./prefixer");OldValue=require("./old-value");utils=require("./utils");vendor=require("postcss/lib/vendor");Value=function(superClass){extend(Value,superClass);function Value(){return Value.__super__.constructor.apply(this,arguments)}Value.save=function(prefixes,decl){var already,cloned,prefix,prefixed,prop,propPrefix,ref,results,rule,trimmed,value;prop=decl.prop;ref=decl._autoprefixerValues;results=[];for(prefix in ref){value=ref[prefix];if(value===decl.value){continue}propPrefix=vendor.prefix(prop);if(propPrefix===prefix){results.push(decl.value=value)}else if(propPrefix==="-pie-"){continue}else{prefixed=prefixes.prefixed(prop,prefix);rule=decl.parent;if(rule.every(function(i){return i.prop!==prefixed})){trimmed=value.replace(/\s+/," ");already=rule.some(function(i){return i.prop===decl.prop&&i.value.replace(/\s+/," ")===trimmed});if(!already){cloned=this.clone(decl,{value:value});results.push(decl.parent.insertBefore(decl,cloned))}else{results.push(void 0)}}else{results.push(void 0)}}}return results};Value.prototype.check=function(decl){var value;value=decl.value;if(value.indexOf(this.name)!==-1){return!!value.match(this.regexp())}else{return false}};Value.prototype.regexp=function(){return this.regexpCache||(this.regexpCache=utils.regexp(this.name))};Value.prototype.replace=function(string,prefix){return string.replace(this.regexp(),"$1"+prefix+"$2")};Value.prototype.value=function(decl){if(decl.raws.value&&decl.raws.value.value===decl.value){return decl.raws.value.raw}else{return decl.value}};Value.prototype.add=function(decl,prefix){var value;decl._autoprefixerValues||(decl._autoprefixerValues={});value=decl._autoprefixerValues[prefix]||this.value(decl);value=this.replace(value,prefix);if(value){return decl._autoprefixerValues[prefix]=value}};Value.prototype.old=function(prefix){return new OldValue(this.name,prefix+this.name)};return Value}(Prefixer);module.exports=Value}).call(this)},{"./old-value":53,"./prefixer":54,"./utils":61,"postcss/lib/vendor":641}],63:[function(require,module,exports){(function(process){var caniuse=require("caniuse-db/data.json").agents;var path=require("path");var fs=require("fs");function uniq(array){var filtered=[];for(var i=0;i<array.length;i++){if(filtered.indexOf(array[i])===-1)filtered.push(array[i])}return filtered}function BrowserslistError(message){this.name="BrowserslistError";this.message=message||"";if(Error.captureStackTrace){Error.captureStackTrace(this,BrowserslistError)}}BrowserslistError.prototype=Error.prototype;function error(name){var obj=new BrowserslistError(name);obj.browserslist=true;throw obj}var normalize=function(versions){return versions.filter(function(version){return typeof version==="string"})};var fillUsage=function(result,name,data){for(var i in data){result[name+" "+i]=data[i]}};var browserslist=function(selections,opts){if(typeof opts==="undefined")opts={};if(typeof selections==="undefined"||selections===null){if(process.env.BROWSERSLIST){selections=process.env.BROWSERSLIST}else if(opts.config||process.env.BROWSERSLIST_CONFIG){var file=opts.config||process.env.BROWSERSLIST_CONFIG;if(fs.existsSync(file)&&fs.statSync(file).isFile()){selections=browserslist.parseConfig(fs.readFileSync(file))}else{error("Can't read "+file+" config")}}else{var config=browserslist.readConfig(opts.path);if(config!==false){selections=config}else{selections=browserslist.defaults}}}if(typeof selections==="string"){selections=selections.split(/,\s*/)}if(opts.stats||process.env.BROWSERSLIST_STATS){browserslist.usage.custom={};var stats=opts.stats||process.env.BROWSERSLIST_STATS;if(typeof stats==="string"){try{stats=JSON.parse(fs.readFileSync(stats))}catch(e){error("Can't read "+stats)}}if("dataByBrowser"in stats){stats=stats.dataByBrowser}for(var browser in stats){fillUsage(browserslist.usage.custom,browser,stats[browser])}}var result=[];var exclude,query,match,array,used;selections.forEach(function(selection){if(selection.trim()==="")return;exclude=false;used=false;if(selection.indexOf("not ")===0){selection=selection.slice(4);exclude=true}for(var i in browserslist.queries){query=browserslist.queries[i];match=selection.match(query.regexp);if(match){array=query.select.apply(browserslist,match.slice(1));if(exclude){result=result.filter(function(j){return array.indexOf(j)===-1})}else{result=result.concat(array)}used=true;break}}if(!used){error("Unknown browser query `"+selection+"`")}});return uniq(result).sort(function(name1,name2){name1=name1.split(" ");name2=name2.split(" ");if(name1[0]===name2[0]){var d=parseFloat(name2[1])-parseFloat(name1[1]);if(d>0){return 1}else if(d<0){return-1}else{return 0}}else{return name1[0].localeCompare(name2[0])}})};var normalizeVersion=function(data,version){if(data.versions.indexOf(version)!==-1){return version}else{return browserslist.versionAliases[data.name][version]}};var loadCountryStatistics=function(country){if(!browserslist.usage[country]){var usage={};var data=require("caniuse-db/region-usage-json/"+country+".json");for(var i in data.data){fillUsage(usage,i,data.data[i])}browserslist.usage[country]=usage}};browserslist.data={};browserslist.usage={global:{},custom:null};browserslist.defaults=["> 1%","last 2 versions","Firefox ESR"];browserslist.major=["safari","opera","ios_saf","ie_mob","ie","edge","firefox","chrome"];browserslist.aliases={fx:"firefox",ff:"firefox",ios:"ios_saf",explorer:"ie",blackberry:"bb",explorermobile:"ie_mob",operamini:"op_mini",operamobile:"op_mob",chromeandroid:"and_chr",firefoxandroid:"and_ff"};browserslist.versionAliases={};browserslist.byName=function(name){name=name.toLowerCase();name=browserslist.aliases[name]||name;return browserslist.data[name]};browserslist.checkName=function(name){var data=browserslist.byName(name);if(!data)error("Unknown browser "+name);return data};browserslist.readConfig=function(from){if(from===false)return false;if(!fs.readFileSync||!fs.existsSync||!fs.statSync)return false;if(typeof from==="undefined")from=".";var dirs=path.resolve(from).split(path.sep);var config;while(dirs.length){config=dirs.concat(["browserslist"]).join(path.sep);if(fs.existsSync(config)&&fs.statSync(config).isFile()){return browserslist.parseConfig(fs.readFileSync(config))}dirs.pop()}return false};browserslist.coverage=function(browsers,country){if(country&&country!=="global"){country=country.toUpperCase();loadCountryStatistics(country)}else{country="global"}return browsers.reduce(function(all,i){var usage=browserslist.usage[country][i];if(usage===undefined){usage=browserslist.usage[country][i.replace(/ [\d.]+$/," 0")]}return all+(usage||0)},0)};browserslist.parseConfig=function(string){return string.toString().replace(/#[^\n]*/g,"").split(/\n/).map(function(i){return i.trim()}).filter(function(i){return i!==""})};browserslist.queries={lastVersions:{regexp:/^last (\d+) versions?$/i,select:function(versions){var selected=[];browserslist.major.forEach(function(name){var data=browserslist.byName(name);if(!data)return;var array=data.released.slice(-versions);array=array.map(function(v){return data.name+" "+v});selected=selected.concat(array)});return selected}},lastByBrowser:{regexp:/^last (\d+) (\w+) versions?$/i,select:function(versions,name){var data=browserslist.checkName(name);return data.released.slice(-versions).map(function(v){return data.name+" "+v})}},globalStatistics:{regexp:/^>\s?(\d+\.?\d*)%$/,select:function(popularity){popularity=parseFloat(popularity);var result=[];for(var version in browserslist.usage.global){if(browserslist.usage.global[version]>popularity){result.push(version)}}return result}},customStatistics:{regexp:/^>\s?(\d+\.?\d*)% in my stats$/,select:function(popularity){popularity=parseFloat(popularity);var result=[];var usage=browserslist.usage.custom;if(!usage){error("Custom usage statistics was not provided")}for(var version in usage){if(usage[version]>popularity){result.push(version)}}return result}},countryStatistics:{regexp:/^> (\d+\.?\d*)% in (\w\w)$/,select:function(popularity,country){popularity=parseFloat(popularity);country=country.toUpperCase();var result=[];loadCountryStatistics(country);var usage=browserslist.usage[country];for(var version in usage){if(usage[version]>popularity){result.push(version)}}return result}},range:{regexp:/^(\w+) ([\d\.]+)-([\d\.]+)/i,select:function(name,from,to){var data=browserslist.checkName(name);from=parseFloat(normalizeVersion(data,from)||from);to=parseFloat(normalizeVersion(data,to)||to);var filter=function(v){var parsed=parseFloat(v);return parsed>=from&&parsed<=to};return data.released.filter(filter).map(function(v){return data.name+" "+v})}},versions:{regexp:/^(\w+) (>=?|<=?)\s*([\d\.]+)/,select:function(name,sign,version){var data=browserslist.checkName(name);var alias=normalizeVersion(data,version);if(alias){version=alias}version=parseFloat(version);var filter;if(sign===">"){filter=function(v){return parseFloat(v)>version}}else if(sign===">="){filter=function(v){return parseFloat(v)>=version}}else if(sign==="<"){filter=function(v){return parseFloat(v)<version}}else if(sign==="<="){filter=function(v){return parseFloat(v)<=version}}return data.released.filter(filter).map(function(v){return data.name+" "+v})}},esr:{regexp:/^(firefox|ff|fx) esr$/i,select:function(){return["firefox 38"]}},direct:{regexp:/^(\w+) (tp|[\d\.]+)$/i,select:function(name,version){if(/tp/i.test(version))version="TP";var data=browserslist.checkName(name);var alias=normalizeVersion(data,version);if(alias){version=alias}else{if(version.indexOf(".")===-1){alias=version+".0"}else if(/\.0$/.test(version)){alias=version.replace(/\.0$/,"")}alias=normalizeVersion(data,alias);if(alias){version=alias}else{error("Unknown version "+version+" of "+name)}}return[data.name+" "+version]}}};(function(){for(var name in caniuse){browserslist.data[name]={name:name,versions:normalize(caniuse[name].versions),released:normalize(caniuse[name].versions.slice(0,-3))};fillUsage(browserslist.usage.global,name,caniuse[name].usage_global);browserslist.versionAliases[name]={};for(var i=0;i<caniuse[name].versions.length;i++){if(!caniuse[name].versions[i])continue;var full=caniuse[name].versions[i];if(full.indexOf("-")!==-1){var interval=full.split("-");for(var j=0;j<interval.length;j++){browserslist.versionAliases[name][interval[j]]=full}}}}})();module.exports=browserslist}).call(this,require("_process"))},{_process:662,"caniuse-db/data.json":64,fs:657,path:661}],64:[function(require,module,exports){module.exports={eras:{"e-46":"46 versions back","e-45":"45 versions back","e-44":"44 versions back","e-43":"43 versions back","e-42":"42 versions back","e-41":"41 versions back","e-40":"40 versions back","e-39":"39 versions back","e-38":"38 versions back","e-37":"37 versions back","e-36":"36 versions back","e-35":"35 versions back","e-34":"34 versions back","e-33":"33 versions back","e-32":"32 versions back","e-31":"31 versions back","e-30":"30 versions back","e-29":"29 versions back","e-28":"28 versions back","e-27":"27 versions back","e-26":"26 versions back","e-25":"25 versions back","e-24":"24 versions back","e-23":"23 versions back","e-22":"22 versions back","e-21":"21 versions back","e-20":"20 versions back","e-19":"19 versions back","e-18":"18 versions back","e-17":"17 versions back","e-16":"16 versions back","e-15":"15 versions back","e-14":"14 versions back","e-13":"13 versions back","e-12":"12 versions back","e-11":"11 versions back","e-10":"10 versions back","e-9":"9 versions back","e-8":"8 versions back","e-7":"7 versions back","e-6":"6 versions back","e-5":"5 versions back","e-4":"4 versions back","e-3":"3 versions back","e-2":"2 versions back","e-1":"Previous version",e0:"Current",e1:"Near future",e2:"Farther future",e3:"3 versions ahead"},agents:{ie:{browser:"IE",abbr:"IE",prefix:"ms",type:"desktop",usage_global:{5.5:.009298,6:.0389701,7:.0389701,8:.768267,9:.52888,10:.484343,11:5.68963},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.5","6","7","8","9","10","11",null,null,null]},edge:{browser:"Edge",abbr:"Edge",prefix:"ms",type:"desktop",usage_global:{12:.206112,13:.970896,14:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"12","13","14",null,null]},firefox:{browser:"Firefox",abbr:"FF",prefix:"moz",type:"desktop",usage_global:{2:.010848,3:.043392,3.5:.005424,3.6:.032544,4:.010848,5:.005424,6:.037968,7:.005725,8:.016272,9:.005424,10:.016272,11:.016272,12:.02712,13:.010848,14:.010848,15:.021696,16:.021696,17:.016272,18:.016272,19:.010848,20:.016272,21:.021696,22:.010848,23:.021696,24:.021696,25:.043392,26:.021696,27:.016272,28:.021696,29:.032544,30:.032544,31:.086784,32:.02712,33:.043392,34:.05424,35:.059664,36:.05424,37:.059664,38:.21696,39:.092208,40:.08136,41:.10848,42:.173568,43:.417648,44:3.73714,45:2.5547,46:.10848,47:.005424,48:0},versions:[null,"2","3","3.5","3.6","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48"]},chrome:{browser:"Chrome",abbr:"Chr.",prefix:"webkit",type:"desktop",usage_global:{4:.005424,5:.005587,6:.005424,7:.005591,8:.005591,9:.005591,10:.010848,11:.037968,12:.010848,13:.005424,14:.005587,15:.005424,16:.005424,17:.005424,18:.010848,19:.010848,20:.005424,21:.016272,22:.043392,23:.010848,24:.02712,25:.016272,26:.02712,27:.016272,28:.021696,29:.450192,30:.02712,31:.29832,32:.032544,33:.08136,34:.059664,35:.070512,36:.08136,37:.065088,38:.065088,39:.1356,40:.10848,41:.119328,42:.141024,43:.374256,44:.227808,45:.482736,46:.32544,47:.699696,48:12.9742,49:14.0861,50:.119328,51:.065088,52:0,53:0},versions:["4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53"]},safari:{browser:"Safari",abbr:"Saf.",prefix:"webkit",type:"desktop",usage_global:{3.1:0,3.2:.008692,4:.021696,5:.059664,5.1:.119328,6:.021696,6.1:.086784,7:.05424,7.1:.037968,8:.292896,9:1.55669,9.1:.168144,TP:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.1","3.2","4","5","5.1","6","6.1","7","7.1","8","9","9.1","TP",null,null]},opera:{browser:"Opera",abbr:"Op.",prefix:"webkit",type:"desktop",usage_global:{9:.0082,"9.5-9.6":.00685,"10.0-10.1":.010848,10.5:.008392,10.6:.007296,11:.016581,11.1:.006229,11.5:.006015,11.6:.005424,12:.010848,12.1:.124752,15:.00685,16:.00685,17:.00685,18:.005424,19:.006015,20:.005595,21:.006597,22:.006597,23:.013434,24:.006702,25:.006015,26:.005595,27:.010848,28:.021696,29:.016272,30:.021696,31:.010848,32:.005424,33:.010848,34:.048816,35:.390528,36:.287472,37:0,38:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"9","9.5-9.6","10.0-10.1","10.5","10.6","11","11.1","11.5","11.6","12","12.1","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38",null],prefix_exceptions:{9:"o","9.5-9.6":"o","10.0-10.1":"o",10.5:"o",10.6:"o",11:"o",11.1:"o",11.5:"o",11.6:"o",12:"o",12.1:"o"}},ios_saf:{browser:"iOS Safari",abbr:"iOS",prefix:"webkit",type:"mobile",usage_global:{3.2:0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":.021882,"7.0-7.1":.264205,8:.0170193,"8.1-8.4":.707518,"9.0-9.2":5.60179,9.3:1.39559},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.2","4.0-4.1","4.2-4.3","5.0-5.1","6.0-6.1","7.0-7.1","8","8.1-8.4","9.0-9.2","9.3",null,null]},op_mini:{browser:"Opera Mini",abbr:"O.Mini",prefix:"o",type:"mobile",usage_global:{"5.0-8.0":4.92252},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.0-8.0",null,null,null]},android:{browser:"Android Browser",abbr:"And.",prefix:"webkit",type:"mobile",usage_global:{2.1:0,2.2:0,2.3:.0198374,3:0,4:.113073,4.1:.383853,"4.2-4.3":.86491,4.4:1.79132,"4.4.3-4.4.4":.959138,47:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"2.1","2.2","2.3","3","4","4.1","4.2-4.3","4.4","4.4.3-4.4.4","47",null,null,null]},bb:{browser:"Blackberry Browser",abbr:"BB",prefix:"webkit",type:"mobile",usage_global:{7:.081224,10:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"7","10",null,null,null]},op_mob:{browser:"Opera Mobile",abbr:"O.Mob",prefix:"o",type:"mobile",usage_global:{10:0,11:0,11.1:0,11.5:0,12:0,12.1:384227e-9,36:.0146006},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10","11","11.1","11.5","12","12.1","36",null,null,null],prefix_exceptions:{36:"webkit"}},and_chr:{browser:"Chrome for Android",abbr:"Chr/And.",prefix:"webkit",type:"mobile",usage_global:{49:16.4703},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"49",null,null,null]},and_ff:{browser:"Firefox for Android",abbr:"FF/And.",prefix:"moz",type:"mobile",usage_global:{45:.041184},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"45",null,null,null]},ie_mob:{browser:"IE Mobile",abbr:"IE.Mob",prefix:"ms",type:"mobile",usage_global:{10:.128986,11:.621478},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10","11",null,null,null]},and_uc:{browser:"UC Browser for Android",abbr:"UC",prefix:"webkit",type:"mobile",usage_global:{9.9:8.96896},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"9.9",null,null,null],prefix_exceptions:{9.9:"webkit"}}},statuses:{rec:"W3C Recommendation",pr:"W3C Proposed Recommendation",cr:"W3C Candidate Recommendation",wd:"W3C Working Draft",ls:"WHATWG Living Standard",other:"Other",unoff:"Unofficial / Note"},cats:{CSS:["CSS3","CSS","CSS2"],HTML5:["Canvas","HTML5"],"JS API":["JS API"],Other:["PNG","Other","DOM"],SVG:["SVG"]},updated:1460609077,data:{"png-alpha":{title:"PNG alpha transparency",description:"Semi-transparent areas in PNG files",spec:"http://www.w3.org/TR/PNG/",status:"rec",links:[{url:"http://en.wikipedia.org/wiki/Portable_Network_Graphics",title:"Wikipedia"},{url:"http://dillerdesign.com/experiment/DD_belatedPNG/",title:"Workaround for IE6"}],categories:["PNG"],stats:{ie:{5.5:"n",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"IE6 does support full transparency in 8-bit PNGs, which can sometimes be an alternative to 24-bit PNGs.",notes_by_num:{},usage_perc_y:95.52,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},apng:{title:"Animated PNG (APNG)",description:"Like animated GIFs, but allowing 24-bit colors and alpha transparency",spec:"https://wiki.mozilla.org/APNG_Specification",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/APNG",title:"Wikipedia"},{url:"https://github.com/davidmz/apng-canvas",title:"Polyfill using canvas"},{url:"https://chrome.google.com/webstore/detail/ehkepjiconegkhpodgoaeamnpckdbblp",title:"Chrome extension providing support"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6513393-apng-animated-png-images-support-firefox-and-sa",title:"Microsoft Edge feature request on UserVoice"},{url:"https://addons.opera.com/en/extensions/details/apng/?display=en",title:"Opera extension providing support"},{url:"https://code.google.com/p/chromium/issues/detail?id=437662",title:"Chromium issue"}],categories:["PNG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Where support for APNG is missing, only the first frame is displayed",notes_by_num:{},usage_perc_y:18.46,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},video:{title:"Video element",description:"Method of playing videos on webpages (without requiring a plug-in).",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element",status:"ls",links:[{url:"https://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/",title:"Detailed article on video/audio elements"},{url:"http://webmproject.org",title:"WebM format information"},{url:"http://camendesign.co.uk/code/video_for_everybody",title:"Video for Everybody"},{url:"http://diveintohtml5.info/video.html",title:"Video on the Web - includes info on Android support"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/video",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a #1",2.2:"a #1",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Different browsers have support for different video formats, see sub-features for details.\r\n\r\n",notes_by_num:{1:"The Android browser (before 2.3) requires [specific handling](http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/) to run the video element."},usage_perc_y:89.7,usage_perc_a:0,ucprefix:false,parent:"",keywords:"<video>",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},audio:{title:"Audio element",description:"Method of playing sound on webpages (without requiring a plug-in).",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#the-audio-element",status:"ls",links:[{url:"http://html5doctor.com/native-audio-in-the-browser/",title:"HTML5 Doctor article"},{url:"https://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/",title:"Detailed article on video/audio elements"},{url:"http://www.jplayer.org/latest/demos/",title:"Demos of audio player that uses the audio element"},{url:"http://24ways.org/2010/the-state-of-html5-audio",title:"Detailed article on support"},{url:"http://textopia.org/androidsoundformats.html",title:"File format test page"},{url:"http://www.phoboslab.org/log/2011/03/the-state-of-html5-audio",title:"The State of HTML5 Audio"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/audio.js#audio",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/audio",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:89.7,usage_perc_a:.02,ucprefix:false,parent:"",keywords:"<audio>",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},contenteditable:{title:"contenteditable attribute (basic support)",description:"Method of making any HTML element editable.",spec:"https://html.spec.whatwg.org/multipage/interaction.html#contenteditable",status:"ls",links:[{url:"http://html5demos.com/contenteditable",title:"Demo page"},{url:"https://blog.whatwg.org/the-road-to-html-5-contenteditable",title:"WHATWG blog post"},{url:"http://accessgarage.wordpress.com/2009/05/08/how-to-hack-your-app-to-make-contenteditable-work/",title:"Blog post on usage problems"},{url:"http://docs.webplatform.org/wiki/html/attributes/contentEditable",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",
34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"This support only refers to very basic editing capability, implementations vary significantly on how certain elements can be edited.",notes_by_num:{},usage_perc_y:90.57,usage_perc_a:.04,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},dragndrop:{title:"Drag and Drop",description:"Method of easily dragging and dropping elements on a page, requiring minimal JavaScript.",spec:"https://html.spec.whatwg.org/multipage/interaction.html#dnd",status:"ls",links:[{url:"http://html5doctor.com/native-drag-and-drop/",title:"HTML5 Doctor article"},{url:"http://nettutsplus.s3.amazonaws.com/64_html5dragdrop/demo/index.html",title:"Shopping cart demo"},{url:"http://html5demos.com/drag",title:"Demo with link blocks"},{url:"http://docs.webplatform.org/wiki/dom/DragEvent",title:"WebPlatform Docs"},{url:"https://github.com/MihaiValentin/setDragImage-IE",title:"Polyfill for setDragImage in IE"},{url:"http://blog.teamtreehouse.com/implementing-native-drag-and-drop",title:"Implementing Native Drag and Drop"},{url:"https://github.com/timruffles/ios-html5-drag-drop-shim",title:"iOS/Android shim for HTML 5 drag'n'drop"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6542268-setdragimage-on-datatransfer-of-dragevent",title:"Microsoft Edge setDragImage feature request on UserVoice"}],categories:["HTML5"],stats:{ie:{5.5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #2",11:"a #2"},edge:{12:"a #2",13:"a #2",14:"a #2"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"y",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"`dataTransfer.items` only supported by Chrome.\r\n\r\nCurrently no browser supports the `dropzone` attribute.\r\n\r\nFirefox supports any kind of DOM elements for `.setDragImage`. Chrome must have either an `HTMLImageElement` or any kind of DOM elements attached to the DOM and within the viewport of the browser for `.setDragImage`.",notes_by_num:{1:"Partial support refers to no support for the `dataTransfer.files` or `.types` objects and limited supported formats for `dataTransfer.setData`/`getData`.",2:"Partial support refers to not supporting `.setDragImage`"},usage_perc_y:44.07,usage_perc_a:8.74,ucprefix:false,parent:"",keywords:"draganddrop",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},internationalization:{title:"Internationalization API",description:"Locale-sensitive collation (string comparison), number formatting, and date and time formatting.",spec:"http://www.ecma-international.org/ecma-402/1.0/",status:"other",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl",title:"MDN reference"},{url:"http://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/",title:"The ECMAScript Internationalization API"},{url:"http://code.tutsplus.com/tutorials/working-with-intl--cms-21082",title:"Working With Intl"},{url:"https://bugs.webkit.org/show_bug.cgi?id=90906",title:"WebKit tracking bug"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:66.82,usage_perc_a:0,ucprefix:false,parent:"",keywords:"Intl,Collator,NumberFormat,DateTimeFormat",ie_id:"ecmascriptinternationalizationapi",chrome_id:"",firefox_id:"",webkit_id:"specification-internationalization-api"},queryselector:{title:"querySelector/querySelectorAll",description:"Method of accessing DOM elements using CSS selectors",spec:"https://dom.spec.whatwg.org/#dom-parentnode-queryselector",status:"ls",links:[{url:"https://developer.mozilla.org/en/DOM/element.querySelector",title:"MDN article on querySelector"},{url:"https://developer.mozilla.org/En/DOM/Element.querySelectorAll",title:"MDN article on querySelectorAll"},{url:"http://cjihrig.com/blog/javascripts-selectors-api/",title:"Blog post"},{url:"http://docs.webplatform.org/wiki/css/selectors_api/querySelector",title:"WebPlatform Docs"}],categories:["DOM"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"a #1",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in IE8 is due to being limited to [CSS 2.1 selectors](/#feat=css-sel2) and a small subset of [CSS 3 selectors](/#feat=css-sel3) (see notes there). Additionally, it will have trouble with selectors including unrecognized tags (for example HTML5 ones)."},usage_perc_y:94.65,usage_perc_a:.77,ucprefix:false,parent:"",keywords:"query,selectors,selectors api,document.queryselector",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},getelementsbyclassname:{title:"getElementsByClassName",description:"Method of accessing DOM elements by class name",spec:"https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname",status:"ls",links:[{url:"http://www.quirksmode.org/dom/tests/basics.html#getElementsByClassName",title:"Test page"},{url:"http://docs.webplatform.org/wiki/dom/HTMLElement/getElementsByClassName",title:"WebPlatform Docs"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:94.7,usage_perc_a:0,ucprefix:false,parent:"",keywords:"byclassname",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},forms:{title:"HTML5 form features",description:'Expanded form options, including things like date pickers, sliders, validation, placeholders and multiple file uploads. Previously known as "Web forms 2.0".',spec:"https://html.spec.whatwg.org/multipage/forms.html#forms",status:"ls",links:[{url:"https://miketaylr.com/code/input-type-attr.html",title:"HTML5 inputs and attribute support page"},{url:"https://github.com/westonruter/webforms2",title:"Cross-browser JS implementation (based on original spec)"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"a",11:"a"},edge:{12:"a",13:"a",14:"a"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a",49:"a",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"p",3.2:"p",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a",9:"a",9.1:"a",TP:"a"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"n","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"n",10:"a"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"a"},and_chr:{49:"a"},and_ff:{45:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:9.18,usage_perc_a:78.52,ucprefix:false,parent:"",keywords:"input,datepicker",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},html5semantic:{title:"New semantic elements",description:"HTML5 offers some new elements, primarily for semantic purposes. The elements include: `section`, `article`, `aside`, `header`, `footer`, `nav`, `figure`, `figcaption`, `time`, `mark` & `main`.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#sections",status:"ls",links:[{url:"https://blog.whatwg.org/supporting-new-elements-in-ie",title:"Workaround for IE"},{url:"https://blog.whatwg.org/styling-ie-noscript",title:"Alternate workaround"},{url:"http://oli.jp/2009/html5-structure3/",title:"Article on structural elements"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/dom.js#dom-html5-elements",title:"has.js test"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"a #2",10:"a #2",11:"a #2"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"a #1",3.5:"a #1",3.6:"a #1",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #1",5:"a #1",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"a #2",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #1",3.2:"a #1",4:"a #1",5:"a #2",5.1:"a #2",6:"a #2",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"a #1","9.5-9.6":"a #1","10.0-10.1":"a #1",10.5:"a #1",10.6:"a #1",11:"a #1",11.1:"a #2",11.5:"a #2",11.6:"a #2",12:"a #2",12.1:"a #2",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #1","4.0-4.1":"a #2","4.2-4.3":"a #2","5.0-5.1":"a #2","6.0-6.1":"a #2","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a #1"},android:{2.1:"a #1",2.2:"a #2",2.3:"a #2",3:"a #2",4:"a #2",4.1:"a #2","4.2-4.3":"a #2",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #2",10:"a #2"},op_mob:{10:"a #1",11:"a #2",11.1:"a #2",11.5:"a #2",12:"a #2",12.1:"a #2",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #2",11:"a #2"},and_uc:{9.9:"a #2"}},notes:"",notes_by_num:{1:'Partial support refers to missing the default styling, as technically the elements are considered "[unknown](https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement)". This is easily taken care of by manually setting the default `display` value for each tag.',2:'Partial support refers to only the `<main>` element (added later to the spec) being "unknown", though it can still be used and styled.'},usage_perc_y:70.82,usage_perc_a:23.88,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-line-clamp":{title:"CSS line-clamp",description:"Proprietary and undocumented CSS property that will contain text to a given amount of lines when used in combination with `display: -webkit-box`. It will end with ellipsis when `text-overflow: ellipsis` is included.",spec:"https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-WebKit_SpecificUnsupportedProperties",status:"unoff",links:[{url:"http://guerillalabs.co/blog/css-line-clamping.html",title:"Article on cross-browser CSS line clamping"},{url:"https://css-tricks.com/line-clampin/",title:"CSS Tricks article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"u",5:"u",6:"u",7:"u",8:"u",9:"u",10:"u",11:"u",12:"u",13:"u",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"u",2.2:"u",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"As there is no specification and the property is dependent on an outdated implementation of flexbox (hence `display: -webkit-box`) it is unlikely that other browsers will support the property as-is, although an alternative solution may at some point replace it.",notes_by_num:{},usage_perc_y:72.3,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"offline-apps":{title:"Offline web applications",description:"Now deprecated method of defining web page files to be cached using a cache manifest file, allowing them to work offline on subsequent visits to the page. ",spec:"https://html.spec.whatwg.org/multipage/browsers.html#offline",status:"unoff",links:[{url:"http://www.sitepoint.com/offline-web-application-tutorial/",title:"Sitepoint tutorial"},{url:"http://diveintohtml5.info/offline.html",title:"Dive Into HTML5 article"},{url:"http://hacks.mozilla.org/2010/01/offline-web-applications/",title:"Mozilla Hacks article/demo"},{url:"http://docs.webplatform.org/wiki/apis/appcache/ApplicationCache",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"This technology is being deprecated in favor of [Service Workers](http://caniuse.com/#feat=serviceworkers)",notes_by_num:{},usage_perc_y:89.17,usage_perc_a:.04,ucprefix:false,parent:"",keywords:"appcache,applicationcache,app cache,application cache,online",ie_id:"applicationcache",chrome_id:"6192449487634432",firefox_id:"",webkit_id:""},webworkers:{title:"Web Workers",description:"Method of running scripts in the background, isolated from the web page",spec:"https://html.spec.whatwg.org/multipage/workers.html",status:"ls",links:[{url:"https://developer.mozilla.org/En/Using_web_workers",title:"MDN article"},{url:"http://nerget.com/rayjs-mt/rayjs.html",title:"Web Worker demo"},{url:"http://code.google.com/p/ie-web-worker/",title:"Polyfill for IE (single threaded)"},{url:"http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-web-workers/",title:"Tutorial"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:87.79,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},fontface:{title:"@font-face Web fonts",description:"Method of displaying fonts downloaded from websites",spec:"http://www.w3.org/TR/css3-webfonts/",status:"cr",links:[{url:"http://webfonts.info",title:"News and information site"},{url:"http://en.wikipedia.org/wiki/Web_typography",title:"Wikipedia"},{url:"http://www.css3files.com/font/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/atrules/@font-face",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #2","4.0-4.1":"a #2","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"a",2.3:"a",3:"a",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Not supported by IE Mobile 9 and below.",notes_by_num:{1:"Partial support refers to only supporting EOT fonts.",2:"Partial support refers to only supporting SVG fonts."},usage_perc_y:89.62,usage_perc_a:.96,ucprefix:false,parent:"",keywords:"font face",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},eot:{title:"EOT - Embedded OpenType fonts",description:"Type of font that can be derived from a regular font, allowing small files and legal use of high-quality fonts. Usage is restricted by the file being tied to the website",spec:"http://www.w3.org/Submission/EOT/",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/Embedded_OpenType",title:"Wikipedia"},{url:"http://www.microsoft.com/typography/web/embedding/default.aspx",title:"Example pages"}],categories:["Other"],stats:{ie:{5.5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"n",13:"n",14:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Proposal by Microsoft, being considered for W3C standardization.",notes_by_num:{},usage_perc_y:7.55,usage_perc_a:0,ucprefix:false,parent:"fontface",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},woff:{title:"WOFF - Web Open Font Format",description:"Compressed TrueType/OpenType font that contains information about the font's source.",spec:"http://www.w3.org/TR/WOFF/",status:"rec",links:[{url:"http://hacks.mozilla.org/2009/10/woff/",title:"Mozilla hacks blog post"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n #1",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Reported to be supported in some modified versions of the Android 4.0 browser."},usage_perc_y:88.2,usage_perc_a:0,ucprefix:false,parent:"fontface",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},multibackgrounds:{title:"CSS3 Multiple backgrounds",description:"Method of using multiple images as a background",
spec:"http://www.w3.org/TR/css3-background/",status:"cr",links:[{url:"http://www.css3.info/preview/multiple-backgrounds/",title:"Demo & information page"},{url:"http://www.css3files.com/background/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/background-image",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:94.63,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"border-image":{title:"CSS3 Border images",description:"Method of using images for borders",spec:"http://www.w3.org/TR/css3-background/#the-border-image",status:"cr",links:[{url:"http://www.css3files.com/border/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/border-image",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"a x",3.6:"a x",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a x",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"a",10.6:"a",11:"a x",11.1:"a x",11.5:"a x",11.6:"a x",12:"a x",12.1:"a x",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a x"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a x",10:"y"},op_mob:{10:"n",11:"a x",11.1:"a x",11.5:"a x",12:"a x",12.1:"a x",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"Note that both the `border-style` and `border-width` must be specified (not set to `none` or 0) for border-images to work according to spec, though older implementations may not have this requirement. Partial support refers to supporting the shorthand syntax, but not the individual properties (border-image-source, border-image-slice, etc). ",notes_by_num:{},usage_perc_y:86.41,usage_perc_a:7.09,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"background-img-opts":{title:"CSS3 Background-image options",description:"New properties to affect background images, including background-clip, background-origin and background-size",spec:"http://www.w3.org/TR/css3-background/#backgrounds",status:"cr",links:[{url:"http://www.standardista.com/css3/css3-background-properties",title:"Detailed compatibility tables and demos"},{url:"http://www.css3files.com/background/",title:"Information page"},{url:"https://github.com/louisremi/background-size-polyfill",title:"Polyfill for IE7-8"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"a x",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #3",5:"a #3",6:"a #3",7:"a #3",8:"a #3",9:"a #3",10:"a #3",11:"a #3",12:"a #3",13:"a #3",14:"a #3",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #2 #3",3.2:"a #2 #3",4:"a #2 #3",5:"a #2 #3",5.1:"a #2 #3",6:"a #2 #3",6.1:"a #2 #3",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"a x",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a #3","6.0-6.1":"a","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a #1"},android:{2.1:"a x",2.2:"a x #3",2.3:"a x #3",3:"a #3",4:"a #3",4.1:"a #3","4.2-4.3":"a #3",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Safari also supports the unofficial `-webkit-background-clip: text` (only with prefix)",notes_by_num:{1:"Partial support in Opera Mini refers to not supporting background sizing or background attachments. However Opera Mini 7.5 supports background sizing (including cover and contain values).",2:"Partial support in Safari 6 refers to not supporting background sizing offset from edges syntax.",3:"Does not support `background-size` values in the `background` shorthand"},usage_perc_y:87.85,usage_perc_a:6.79,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-table":{title:"CSS Table display",description:"Method of displaying elements as tables, rows, and cells. Includes support for all `display: table-*` properties as well as `display: inline-table`",spec:"http://www.w3.org/TR/CSS21/tables.html",status:"rec",links:[{url:"http://www.onenaught.com/posts/201/use-css-displaytable-for-layout",title:"Blog post on usage"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a #1",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Firefox 2 does not support `inline-table`"},usage_perc_y:95.47,usage_perc_a:.01,ucprefix:false,parent:"",keywords:"display:table,table-cell,table-row,table-layout",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-gencontent":{title:"CSS Generated content for pseudo-elements",description:"Method of displaying text or images before or after the given element's contents using the ::before and ::after pseudo-elements. All browsers with support also support the `attr()` notation in the `content` property. ",spec:"http://www.w3.org/TR/CSS21/generate.html",status:"rec",links:[{url:"http://www.westciv.com/style_master/academy/css_tutorial/advanced/generated_content.html",title:"Guide on usage"},{url:"https://dev.opera.com/articles/view/css-generated-content-techniques/",title:"Dev.Opera article"},{url:"http://docs.webplatform.org/wiki/css/generated_and_replaced_content",title:"WebPlatform Docs"}],categories:["CSS2","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a #1",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"For content to appear in pseudo-elements, the `content` property must be set (but may be an empty string).",notes_by_num:{1:"IE8 only supports the single-colon CSS 2.1 syntax (i.e. :pseudo-class). It does not support the double-colon CSS3 syntax (i.e. ::pseudo-element)."},usage_perc_y:94.72,usage_perc_a:.77,ucprefix:false,parent:"",keywords:"before,after",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-fixed":{title:"CSS position:fixed",description:"Method of keeping an element in a fixed location regardless of scroll position",spec:"http://www.w3.org/TR/CSS21/visuren.html#fixed-positioning",status:"rec",links:[{url:"http://www.css-101.org/fixed-positioning/05.php",title:"Workaround for IE6"},{url:"http://bradfrostweb.com/blog/mobile/fixed-position/",title:"Article on mobile support"},{url:"http://docs.webplatform.org/wiki/css/properties/position",title:"WebPlatform Docs"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a #2",2.2:"a #2",2.3:"a #2",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in older iOS Safari refers to [buggy behavior](http://remysharp.com/2012/05/24/issues-with-position-fixed-scrolling-on-ios/).",2:'Only works in Android 2.1 thru 2.3 by using the following meta tag: <meta name="viewport" content="width=device-width, user-scalable=no">.'},usage_perc_y:90.29,usage_perc_a:.31,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},beacon:{title:"Beacon API",description:"Allows data to be sent asynchronously to a server with `navigator.sendBeacon`, even after a page was closed. Useful for posting analytics data the moment a user was finished using the page.",spec:"http://www.w3.org/TR/beacon/",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:55.1,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"beacon",chrome_id:"5517433905348608",firefox_id:"",webkit_id:""},hashchange:{title:"Hashchange event",description:"Event triggered in JavaScript when the URL's hash has changed (for example: page.html#foo to page.html#bar) ",spec:"https://html.spec.whatwg.org/multipage/browsers.html#the-hashchangeevent-interface",status:"ls",links:[{url:"https://developer.mozilla.org/en/DOM/window.onhashchange",title:"MDN article"},{url:"http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx",title:"MSDN article"},{url:"http://www.quirksmode.org/dom/events/tests/hashchange.html",title:"Simple demo"},{url:"http://github.com/3nr1c/jUri.js",title:"Polyfill"},{url:"http://docs.webplatform.org/wiki/dom/Element/hashchange",title:"WebPlatform Docs"}],categories:["HTML5","JS API"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.43,usage_perc_a:0,ucprefix:false,parent:"",keywords:"onhashchange,HashChangeEvent",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-sel2":{title:"CSS 2.1 selectors",description:'Basic CSS selectors including: `*` (universal selector), `>` (child selector), `:first-child`, `:link`, `:visited`, `:active`, `:hover`, `:focus`, `:lang()`, `+` (adjacent sibling selector), `[attr]`, `[attr="val"]`, `[attr~="val"]`, `[attr|="bar"]`, `.foo` (class selector), `#foo` (id selector)',spec:"http://www.w3.org/TR/CSS21/selector.html",status:"rec",links:[{url:"http://www.quirksmode.org/css/contents.html",title:"Detailed support information"},{url:"http://www.yourhtmlsource.com/stylesheets/advancedselectors.html",title:"Examples of advanced selectors"},{url:"http://selectivizr.com",title:"Selectivizr: Polyfill for IE6-8"},{url:"http://docs.webplatform.org/wiki/css/selectors",title:"WebPlatform Docs"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Support for `:visited` styling [varies across browsers](http://sixrevisions.com/css/visited-pseudo-class-strange/) due to security concerns.",notes_by_num:{},usage_perc_y:95.52,usage_perc_a:0,ucprefix:false,parent:"",keywords:"attribute selector",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-sel3":{title:"CSS3 selectors",description:'Advanced element selection using selectors including: `[foo^="bar"]`, `[foo$="bar"]`, `[foo*="bar"]`, `:root`, `:nth-child()`, `:nth-last-child()`, `nth-of-type`, `nth-last-of-type()`, `:last-child`, `:first-of-type`, `:last-of-type`, `:only-child`, `:only-of-type`, `:empty`, `:target`, `:enabled`, `:disabled`, `:checked`, `:not()`, `~` (general sibling)',spec:"http://www.w3.org/TR/css3-selectors/",status:"rec",links:[{url:"http://www.quirksmode.org/css/selectors/",title:"Detailed support information"},{url:"http://www.css3.info/selectors-test/",title:"Automated CSS3 selector test"},{url:"http://selectivizr.com",title:"Selectivizr: Polyfill for IE6-8"},{url:"http://docs.webplatform.org/wiki/css/selectors",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"p",7:"a #1",8:"a #1",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"IE7 and IE8 support only these CSS3 selectors: General siblings (`element1~element2`) and Attribute selectors `[attr^=val]`, `[attr$=val]`, and `[attr*=val]`"},usage_perc_y:94.65,usage_perc_a:.81,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-textshadow":{title:"CSS3 Text-shadow",description:"Method of applying one or more shadow or blur effects to text",spec:"http://www.w3.org/TR/css-text-decor-3/#text-shadow-property",status:"cr",links:[{url:"http://hacks.mozilla.org/2009/06/text-shadow/",title:"Mozilla hacks article"},{url:"http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/hands-on_text-shadow.htm",title:"Live editor"},{url:"http://www.css3files.com/shadow/#textshadow",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/text-shadow",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y #1",11:"y #1"},edge:{12:"y #1",13:"y #1",14:"y #1"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #2",3.2:"a #2",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"y"}},notes:'Opera Mini ignores the blur-radius set, so no blur effect is visible. Text-shadow behavior can be somewhat emulated in older IE versions using the non-standard "dropshadow" or "glow" filters.',notes_by_num:{1:'IE 10+ supports a fourth length value for the shadow\'s "spread". This is not (yet) part of the specification.',2:"Partial support in Safari 3.* refers to not supporting multiple shadows."},usage_perc_y:89.11,usage_perc_a:5.01,ucprefix:false,parent:"",keywords:"text shadow",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-boxshadow":{title:"CSS3 Box-shadow",description:"Method of displaying an inner or outer shadow effect to elements",spec:"http://www.w3.org/TR/css3-background/#box-shadow",status:"cr",links:[{url:"https://developer.mozilla.org/En/CSS/-moz-box-shadow",title:"MDN article"},{url:"http://westciv.com/tools/boxshadows/index.html",title:"Live editor"},{url:"http://tests.themasta.com/blogstuff/boxshadowdemo.html",title:"Demo of various effects"},{url:"http://www.css3files.com/shadow/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/box-shadow",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y x",3.6:"y x",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a x #1",3.2:"a x #1",4:"a x #1",5:"y x",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a x #1","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x #1",2.2:"a x #1",2.3:"a x #1",3:"a x #1",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y x",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'Can be partially emulated in older IE versions using the non-standard "shadow" filter.',notes_by_num:{1:'Partial support in Safari, iOS Safari and Android Browser refers to missing "inset", blur radius value, and multiple shadow support.'},usage_perc_y:89.66,usage_perc_a:.05,ucprefix:false,parent:"",keywords:"box-shadows,boxshadows,box shadow,shaow",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css3-colors":{title:"CSS3 Colors",description:"Method of describing colors using Hue, Saturation and Lightness (hsl()) rather than just RGB, as well as allowing alpha-transparency with rgba() and hsla().",spec:"http://www.w3.org/TR/css3-color/",status:"rec",links:[{url:"https://dev.opera.com/articles/view/color-in-opera-10-hsl-rgb-and-alpha-transparency/",title:"Dev.Opera article"},{url:"http://www.css3files.com/color/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/color#RGBA_Notation",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",
36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:94.69,usage_perc_a:.02,ucprefix:false,parent:"",keywords:"rgb,hsl,rgba,hsla",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css3-boxsizing":{title:"CSS3 Box-sizing",description:"Method of specifying whether or not an element's borders and padding should be included in size units",spec:"http://www.w3.org/TR/css3-ui/#box-sizing",status:"cr",links:[{url:"https://developer.mozilla.org/En/CSS/Box-sizing",title:"MDN article"},{url:"http://www.456bereastreet.com/archive/201104/controlling_width_with_css3_box-sizing/",title:"Blog post"},{url:"https://github.com/Schepp/box-sizing-polyfill",title:"Polyfill for IE"},{url:"http://css-tricks.com/box-sizing/",title:"CSS Tricks"},{url:"http://docs.webplatform.org/wiki/css/properties/box-sizing",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y x",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Firefox currently also supports the `padding-box` in addition to `content-box` and `border-box`, though this value has been removed from the specification.",notes_by_num:{},usage_perc_y:95.48,usage_perc_a:0,ucprefix:false,parent:"",keywords:"border-box,content-box",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-mediaqueries":{title:"CSS3 Media Queries",description:"Method of applying styles based on media information. Includes things like page and device dimensions",spec:"http://www.w3.org/TR/css3-mediaqueries/",status:"rec",links:[{url:"http://ie.microsoft.com/testdrive/HTML5/85CSS3_MediaQueries/",title:"IE demo page with information"},{url:"http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries",title:"Media Queries tutorial"},{url:"https://github.com/scottjehl/Respond",title:"Polyfill for IE"},{url:"http://docs.webplatform.org/wiki/css/atrules/@media",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"p",9:"y #1",10:"y #1",11:"y #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y #1",5:"y #1",6:"y #1",7:"y #1",8:"y #1",9:"y #1",10:"y #1",11:"y #1",12:"y #1",13:"y #1",14:"y #1",15:"y #1",16:"y #1",17:"y #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y #1",24:"y #1",25:"y #1",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #1 #2",3.2:"a #1 #2",4:"y #1",5:"y #1",5.1:"y #1",6:"y #1",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y #1","4.0-4.1":"y #1","4.2-4.3":"y #1","5.0-5.1":"y #1","6.0-6.1":"y #1","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y #1",2.2:"y #1",2.3:"y #1",3:"y #1",4:"y #1",4.1:"y #1","4.2-4.3":"y #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Does not support nested media queries",2:"Partial support refers to only acknowledging different media rules on page reload"},usage_perc_y:94.64,usage_perc_a:.01,ucprefix:false,parent:"",keywords:"@media",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},multicolumn:{title:"CSS3 Multiple column layout",description:"Method of flowing information in multiple columns",spec:"http://www.w3.org/TR/css3-multicol/",status:"cr",links:[{url:"https://dev.opera.com/articles/view/css3-multi-column-layout/",title:"Dev.Opera article"},{url:"http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/an-introduction-to-the-css3-multiple-column-layout-module/",title:"Introduction page"},{url:"http://docs.webplatform.org/wiki/css/properties/column-width",title:"WebPlatform Docs"},{url:"https://github.com/BetleyWhitehorne/CSS3MultiColumn",title:"Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a x",3:"a x",3.5:"a x",3.6:"a x",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"a x",35:"a x",36:"a x",37:"a x",38:"a x",39:"a x",40:"a x",41:"a x",42:"a x",43:"a x",44:"a x",45:"a x",46:"a x",47:"a x",48:"a x"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"a x",35:"a x",36:"a x",37:"a x",38:"a x",39:"a x",40:"a x",41:"a x",42:"a x",43:"a x",44:"a x",45:"a x",46:"a x",47:"a x",48:"a x",49:"a x",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a x",6:"a x",6.1:"a x",7:"a x",7.1:"a x",8:"a x",9:"a",9.1:"a",TP:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"a x",35:"a x",36:"a x",37:"a",38:"a"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0-7.1":"a x",8:"a x","8.1-8.4":"a x","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"y"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x","4.4.3-4.4.4":"a x",47:"a x"},bb:{7:"a x",10:"a x"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"a x"},and_chr:{49:"a x"},and_ff:{45:"a x"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a x"}},notes:"Partial support refers to not supporting the `break-before`, `break-after`, `break-inside` properties. WebKit- and Blink-based browsers do have equivalent support for the non-standard `-webkit-column-break-*` properties to accomplish the same result (but only the `auto` and `always` values). Firefox does not support `break-*`.",notes_by_num:{},usage_perc_y:13.18,usage_perc_a:80.95,ucprefix:false,parent:"",keywords:"column-count,column-width,column-gap,column-rule,column-span,column-fill",ie_id:"multicolumnfullsupport",chrome_id:"6526151266664448,5630943616303104",firefox_id:"",webkit_id:""},"border-radius":{title:"CSS3 Border-radius (rounded corners)",description:"Method of making the border corners round. Covers support for the shorthand `border-radius` as well as the long-hand properties (e.g. `border-top-left-radius`)",spec:"http://www.w3.org/TR/css3-background/#the-border-radius",status:"cr",links:[{url:"http://border-radius.com",title:"Border-radius CSS Generator"},{url:"http://muddledramblings.com/table-of-css3-border-radius-compliance",title:"Detailed compliance table"},{url:"http://www.css3files.com/border/#borderradius",title:"Information page"},{url:"http://css3pie.com/",title:"Polyfill which includes border-radius"},{url:"http://docs.webplatform.org/wiki/css/properties/border-radius",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a x",3:"y x",3.5:"y x",3.6:"y x",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y",5.1:"y #1",6:"y #1",6.1:"y #1",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Safari 6.1 and earlier did not apply `border-radius` correctly to image borders: http://stackoverflow.com/q/17202128"},usage_perc_y:89.76,usage_perc_a:.01,ucprefix:false,parent:"",keywords:"roundedcorners, border radius,-moz-border-radius",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},transforms2d:{title:"CSS3 2D Transforms",description:"Method of transforming an element including rotating, scaling, etc. Includes support for `transform` as well as `transform-origin` properties.",spec:"http://www.w3.org/TR/css3-2d-transforms/",status:"wd",links:[{url:"http://www.westciv.com/tools/transforms/",title:"Live editor"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/transform",title:"MDN article"},{url:"http://www.webresourcesdepot.com/cross-browser-css-transforms-csssandpaper/",title:"Workaround script for IE"},{url:"http://www.css3files.com/transform/",title:"Information page"},{url:"http://www.useragentman.com/IETransformsTranslator/",title:"Converter for IE"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-transform",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/css/transforms/transform",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y x",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y x",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:'The scale transform can be emulated in IE < 9 using Microsoft\'s "zoom" extension, others are (not easily) possible using the MS Matrix filter',notes_by_num:{},usage_perc_y:89.71,usage_perc_a:0,ucprefix:false,parent:"",keywords:"transformation,translate,translatex,translatey,translatez,transform3d,rotation,rotate,scale,css-transforms,transform-origin,transform:rotate,transform:scale",ie_id:"transforms",chrome_id:"6437640580628480",firefox_id:"",webkit_id:""},"use-strict":{title:"ECMAScript 5 Strict Mode",description:'Method of placing code in a "strict" operating context.',spec:"http://www.ecma-international.org/ecma-262/5.1/#sec-14.1",status:"other",links:[{url:"http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/",title:"Information page"},{url:"http://javascriptweblog.wordpress.com/2011/05/03/javascript-strict-mode/",title:"Article with test suite"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a #1",5.1:"a #1",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in older Safari refers to strict mode still accepting a lot of JS that should be considered invalid."},usage_perc_y:88.78,usage_perc_a:.18,ucprefix:false,parent:"es5",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},devicepixelratio:{title:"Window.devicePixelRatio",description:"Read-only property that returns the ratio of the (vertical) size of one physical pixel on the current display device to the size of one CSS pixel.",spec:"http://dev.w3.org/csswg/cssom-view/#dom-window-devicepixelratio",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio",title:"MDN"}],categories:["CSS","DOM"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"As the page is zoomed in the number of device pixels that one CSS pixel covers increases, and therefore the value of devicePixelRatio will also increase.",notes_by_num:{},usage_perc_y:93.19,usage_perc_a:0,ucprefix:false,parent:"",keywords:"device,pixel,ratio,size",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},transforms3d:{title:"CSS3 3D Transforms",description:"Method of transforming an element in the third dimension using the `transform` property. Includes support for the `perspective` property to set the perspective in z-space and the `backface-visibility` property to toggle display of the reverse side of a 3D-transformed element.",spec:"http://www.w3.org/TR/css3-3d-transforms/",status:"wd",links:[{url:"http://css3.bradshawenterprises.com/flip/",title:"Multi-browser demo"},{url:"http://hacks.mozilla.org/2011/10/css-3d-transformations-in-firefox-nightly/",title:"Mozilla hacks article"},{url:"http://thewebrocks.com/demos/3D-css-tester/",title:"3D CSS Tester"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-transform",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/css/transforms/transform",title:"WebPlatform Docs"},{url:"http://desandro.github.io/3dtransforms/",title:"Intro to CSS 3D transforms"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y #2",9.1:"y #2",TP:"y #2"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{1:"Partial support in IE refers to not supporting [the transform-style: preserve-3d property](http://msdn.microsoft.com/en-us/library/ie/hh673529%28v=vs.85%29.aspx#the_ms_transform_style_property). This prevents nesting 3D transformed elements.",2:"Safari 9 is reported to still require a prefix for the related `backface-visibility` property."},usage_perc_y:81.84,usage_perc_a:6.92,ucprefix:false,parent:"",keywords:"css 3d,3dtransforms,translate3d,backface visibility,perspective,transform-origin,transform-style",ie_id:"transforms,csstransformspreserve3d",chrome_id:"6437640580628480",firefox_id:"",webkit_id:""},sharedworkers:{title:"Shared Web Workers",description:"Method of allowing multiple scripts to communicate with a single web worker.",spec:"https://html.spec.whatwg.org/multipage/workers.html#shared-workers-introduction",status:"ls",links:[{url:"http://www.sitepoint.com/javascript-shared-web-workers-html5/",title:"Sitepoint article"},{url:"http://greenido.wordpress.com/2011/11/03/web-workers-part-3-out-of-3-shared-wrokers/",title:"Blog post"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:49.76,usage_perc_a:0,ucprefix:false,parent:"webworkers",keywords:"shared worker",ie_id:"sharedwebworkers",chrome_id:"",firefox_id:"",webkit_id:""},"css-hyphens":{title:"CSS Hyphenation",description:'Method of controlling when words at the end of lines should be hyphenated using the "hyphens" property.',spec:"http://www.w3.org/TR/css3-text/#hyphenation",status:"wd",links:[{url:"https://developer.mozilla.org/en/CSS/hyphens",title:"MDN article"},{url:"http://blog.fontdeck.com/post/9037028497/hyphens",title:"Blog post"},{url:"http://docs.webplatform.org/wiki/css/properties/hyphens",title:"WebPlatform Docs"},{url:"https://code.google.com/p/chromium/issues/detail?id=47083",title:"Chrome bug for implementing hyphenation"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x"},edge:{12:"y x",13:"y x",14:"y x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x"}},notes:'Chrome and Android 4.0 Browser support "-webkit-hyphens: none", but not the "auto" property. It is [advisable to set the @lang attribute](http://blog.adrianroselli.com/2015/01/on-use-of-lang-attribute.html) on the HTML element to enable hyphenation support and improve accessibility.',notes_by_num:{},usage_perc_y:26.11,usage_perc_a:8.97,ucprefix:false,parent:"",keywords:"hyphen,shy",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-transitions":{title:"CSS3 Transitions",description:"Simple method of animating certain properties of an element, with ability to define property, duration, delay and timing function. ",spec:"http://www.w3.org/TR/css3-transitions/",status:"wd",links:[{url:"http://www.webdesignerdepot.com/2010/01/css-transitions-101/",title:"Article on usage"},{url:"http://www.css3files.com/transition/",title:"Information page"},{url:"http://www.the-art-of-web.com/css/timing-function/",title:"Examples on timing functions"},{url:"http://www.opera.com/docs/specs/presto2.12/css/transitions/",title:"Animation of property types support in Opera"},{url:"http://docs.webplatform.org/wiki/css/properties/transition",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y x",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y x",10:"y"},op_mob:{10:"y x",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"Support listed is for `transition` properties as well as the `transitionend` event. The prefixed name in WebKit browsers is `webkitTransitionEnd`",notes_by_num:{},usage_perc_y:89.15,usage_perc_a:0,ucprefix:false,parent:"",keywords:"css transition,transitionend,transition-property,transition-duration,transition-timing-function,transition-delay",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"font-feature":{title:"CSS font-feature-settings",description:"Method of applying advanced typographic and language-specific font features to supported OpenType fonts.",spec:"http://w3.org/TR/css3-fonts/#font-rend-props",status:"cr",links:[{url:"http://ie.microsoft.com/testdrive/Graphics/opentype/",title:"Demo pages (IE/Firefox only)"},{url:"http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/",title:"Mozilla hacks article"},{url:"http://html5accessibility.com/",title:"Detailed tables on accessability support"},{url:"http://docs.webplatform.org/wiki/css/properties/font-feature-settings",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/font-feature-settings",title:"Mozilla Developer Network"},{url:"https://www.microsoft.com/typography/otspec/featuretags.htm",title:"OpenType layout feature tag registry"},{url:"http://help.typekit.com/customer/portal/articles/1789736-syntax-for-opentype-features-in-css#salt",title:"Syntax for OpenType features in CSS (Adobe Typekit Help)"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",
30:"y x",31:"y x",32:"y x",33:"y x",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"a x #2",17:"a x #2",18:"a x #2",19:"a x #2",20:"a x #2",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"a",5:"a",5.1:"a",6:"a",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y x"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"Whenever possible, font-variant shorthand property or an associated longhand property, font-variant-ligatures, font-variant-caps, font-variant-east-asian, font-variant-alternates, font-variant-numeric or font-variant-position should be used. This property is a low-level feature designed to handle special cases where no other way to enable or access an OpenType font feature exists. In particular, this CSS property shouldn't be used to enable small caps.",notes_by_num:{1:"From Gecko 2.0 (Firefox 4.0) to Gecko 14.0 (Firefox 14.0) included, Gecko supported an older syntax, slightly different from the modern one: http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/",2:"Partial support in older Chrome versions refers to lacking support in Mac OS X."},usage_perc_y:77.56,usage_perc_a:.45,ucprefix:false,parent:"",keywords:"font-feature,font-feature-settings,kern,kerning,font-variant-alternates,ligatures,font-variant-ligatures",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-animation":{title:"CSS Animation",description:"Complex method of animating certain properties of an element",spec:"http://www.w3.org/TR/css3-animations/",status:"wd",links:[{url:"http://robertnyman.com/2010/05/06/css3-animations/",title:"Blog post on usage"},{url:"http://www.css3files.com/animation/",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/animations",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y x",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x #1",2.2:"a x #1",2.3:"a x #1",3:"a x #1",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{1:"Partial support in Android browser refers to buggy behavior in different scenarios."},usage_perc_y:89.06,usage_perc_a:.02,ucprefix:false,parent:"",keywords:"animations,css-animations,animation-name,animation-duration,animation-delay,animation-timing-function,@keyframes,animationstart,animationend,animationiteration,css3 animation",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-gradients":{title:"CSS Gradients",description:"Method of defining a linear or radial color gradient as a CSS image.",spec:"http://www.w3.org/TR/css3-images/",status:"cr",links:[{url:"http://www.colorzilla.com/gradient-editor/",title:"Cross-browser editor"},{url:"http://www.css3files.com/gradient/",title:"Information page"},{url:"http://css3pie.com/",title:"Tool to emulate support in IE"},{url:"http://docs.webplatform.org/wiki/css/functions/linear-gradient",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"a x",5:"a x",5.1:"y x",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"a x #1",11.5:"a x #1",11.6:"y x",12:"y x",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a x",10:"y"},op_mob:{10:"n",11:"n",11.1:"a x #1",11.5:"a x #1",12:"y x",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:'Syntax used by browsers with prefixed support may be incompatible with that for proper support.\r\n\r\nSupport can be somewhat emulated in older IE versions using the non-standard "gradient" filter. \r\n\r\nFirefox 10+, Opera 11.6+, Chrome 26+ and IE10+ also support the new "to (side)" syntax.',notes_by_num:{1:"Partial support in Opera 11.10 and 11.50 also refers to only having support for linear gradients."},usage_perc_y:88.91,usage_perc_a:.23,ucprefix:false,parent:"",keywords:"linear,linear-gradient,gradiant",ie_id:"gradients",chrome_id:"5785905063264256",firefox_id:"",webkit_id:""},"css-canvas":{title:"CSS Canvas Drawings",description:"Method of using HTML5 Canvas as a background image. Not currently part of any specification.",spec:"http://webkit.org/blog/176/css-canvas-drawing/",status:"unoff",links:[{url:"http://webkit.org/blog/176/css-canvas-drawing/",title:"Webkit blog post"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"u",47:"u",48:"u"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"A similar effect can be achieved in Firefox 4+ using the -moz-element() background property",notes_by_num:{},usage_perc_y:28.01,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-reflections":{title:"CSS Reflections",description:"Method of displaying a reflection of an element",spec:"http://webkit.org/blog/182/css-reflections/",status:"unoff",links:[{url:"http://webkit.org/blog/182/css-reflections/",title:"Webkit blog post"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/7930470-support-css-reflections",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"n",3.2:"n",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Similar effect can be achieved in Firefox 4+ using the -moz-element() background property",notes_by_num:{},usage_perc_y:63.45,usage_perc_a:0,ucprefix:false,parent:"",keywords:"box-reflect",ie_id:"",chrome_id:"5627300510957568",firefox_id:"",webkit_id:""},"css-masks":{title:"CSS Masks",description:"Method of displaying part of an element, using a selected image as a mask",spec:"http://www.w3.org/TR/css-masking-1/",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/css/properties/mask",title:"WebPlatform Docs"},{url:"http://www.html5rocks.com/en/tutorials/masking/adobe/",title:"HTML5 Rocks article"},{url:"http://thenittygritty.co/css-masking",title:"Detailed blog post"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=686281",title:"Firefox implementation bug"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"a #2",3.6:"a #2",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"a #2",26:"a #2",27:"a #2",28:"a #2",29:"a #2",30:"a #2",31:"a #2",32:"a #2",33:"a #2",34:"a #2",35:"a #2",36:"a #2",37:"a #2",38:"a #2",39:"a #2",40:"a #2",41:"a #2",42:"a #2",43:"a #2",44:"a #2",45:"a #2",46:"a #2",47:"a #2",48:"a #2"},chrome:{4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1",49:"a x #1",50:"a x #1",51:"a x #1",52:"a x #1",53:"a x #1"},safari:{3.1:"n",3.2:"n",4:"a x #1",5:"a x #1",5.1:"a x #1",6:"a x #1",6.1:"a x #1",7:"a x #1",7.1:"a x #1",8:"a x #1",9:"a x #1",9.1:"a x #1",TP:"a x #1"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1"},ios_saf:{3.2:"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0-7.1":"a x #1",8:"a x #1","8.1-8.4":"a x #1","9.0-9.2":"a x #1",9.3:"a x #1"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x #1",2.2:"a x #1",2.3:"a x #1",3:"a x #1",4:"a x #1",4.1:"a x #1","4.2-4.3":"a x #1",4.4:"a x #1","4.4.3-4.4.4":"a x #1",47:"a x #1"},bb:{7:"a x #1",10:"a x #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x #1"},and_chr:{49:"a x #1"},and_ff:{45:"a #2"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x #1"}},notes:"",notes_by_num:{1:"Partial support in WebKit/Blink browsers refers to supporting the mask-image and mask-box-image properties, but lacking support for other parts of the spec.",2:"Partial support in Firefox refers to only support for inline SVG mask elements i.e. mask: url(#foo)."},usage_perc_y:0,usage_perc_a:80.89,ucprefix:false,parent:"",keywords:"clip,clip-path,clip-rule,mask,mask-border,mask-clip,mask-image,mask-mode,mask-type",ie_id:"masks",chrome_id:"5381559662149632",firefox_id:"",webkit_id:""},"console-basic":{title:"Basic console logging functions",description:"Method of outputting data to the browser's console, intended for development purposes.",spec:"https://console.spec.whatwg.org/",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Console",title:"MDN article"},{url:"https://developer.chrome.com/devtools/docs/console-api",title:"Chrome console reference"},{url:"https://developer.apple.com/library/mac/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/Console/Console.html",title:"Safari console reference"},{url:"https://msdn.microsoft.com/en-us/library/hh772169",title:"Edge/Internet Explorer console reference"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a #1",9:"a #1",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y #3","7.0-7.1":"y #3",8:"y #3","8.1-8.4":"y #3","9.0-9.2":"y #3",9.3:"y #3"},op_mini:{"5.0-8.0":"y #6"},android:{2.1:"y #4",2.2:"y #4",2.3:"y #4",3:"y #4",4:"y #4",4.1:"y #4","4.2-4.3":"y #4",4.4:"y #4","4.4.3-4.4.4":"y #4",47:"y #4"},bb:{7:"n #2",10:"n #2"},op_mob:{10:"n",11:"n #2",11.1:"n #2",11.5:"n #2",12:"n #2",12.1:"n #2",36:"n #2"},and_chr:{49:"y #4"},and_ff:{45:"y #5"},ie_mob:{10:"n #2",11:"n #2"},and_uc:{9.9:"n #2"}},notes:"The basic functions that this information refers to include `console.log`, `console.info`, `console.warn`, `console.error`.",notes_by_num:{1:"Only supports console functions when developer tools are open, otherwise the `console` object is undefined and any calls will throw errors.",2:"Allows `console` functions to be used without throwing errors, but does not appear to output the data anywhere.",3:"Log output on iOS 6+ Safari can only be seen by connecting to a Mac and using the [Safari debugger](https://developer.apple.com/safari/tools/).",4:"Log output on older Android browsers can be retrieved via Android's `logcat` command or using Chrome Developer Tools in Android 4.4+/Chrome for Android [see details](http://developer.android.com/guide/webapps/debugging.html)",5:"Log output on Firefox for Android can be [accessed using WebIDE](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE)",6:"See [this article](https://dev.opera.com/articles/opera-mini-and-javascript/) for details on how to see console logging in Opera Mini"},usage_perc_y:84.24,usage_perc_a:1.3,ucprefix:false,parent:"",keywords:"console.log,console.info,console.warn,console.error,window.console",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},svg:{title:"SVG (basic support)",description:"Method of displaying basic Vector Graphics features using the embed or object elements. Refers to the SVG 1.1 spec.",spec:"http://www.w3.org/TR/SVG/",status:"rec",links:[{url:"http://en.wikipedia.org/wiki/Scalable_Vector_Graphics",title:"Wikipedia"},{url:"http://www.alistapart.com/articles/using-svg-for-flexible-scalable-and-fun-backgrounds-part-i",title:"A List Apart article"},{url:"http://svg-wow.org/",title:"SVG showcase site"},{url:"http://code.google.com/p/svgweb/",title:"SVG Web: Flash-based polyfill"},{url:"http://svg-edit.googlecode.com",title:"Web-based SVG editor"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#svg",title:"has.js test"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y #2",10:"y #2",11:"y #2"},edge:{12:"y #2",13:"y #2",14:"y #2"},firefox:{2:"a",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a #1",4:"a #1",4.1:"a #1","4.2-4.3":"a #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y #2",11:"y #2"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in Android 3 & 4 refers to not supporting masking.",2:"IE9-11 desktop & mobile don't properly scale SVG files. [Adding height, width, viewBox, and CSS rules](http://codepen.io/tomByrer/pen/qEBbzw?editors=110) seem to be the best workaround."},usage_perc_y:93.32,usage_perc_a:1.37,ucprefix:false,parent:"",keywords:"rect,circle,ellipse,line,polyline,polygon,defs,symbol,use,tspan,tref,textpath,stroke-dasharray,stroke-dashoffset",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"svg-css":{title:"SVG in CSS backgrounds",description:"Method of using SVG images as CSS backgrounds",spec:"http://www.w3.org/TR/css3-background/#background-image",status:"cr",links:[{url:"http://www.sitepoint.com/a-farewell-to-css3-gradients/",title:"Tutorial for advanced effects"}],categories:["CSS3","SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"a #1",4:"a #1",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #1","4.0-4.1":"a #1","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a #2"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a #2",11:"a #2",11.1:"a #2",11.5:"a #2",12:"a #2",12.1:"a #2",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in iOS Safari and older Safari versions refers to failing to support tiling or the background-position property.",2:"Partial support in older Firefox and Opera Mini/Mobile refers to SVG images being blurry when scaled."},usage_perc_y:89.32,usage_perc_a:5.28,ucprefix:false,parent:"",keywords:"svg-in-css,svgincss,css-svg",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"svg-smil":{title:"SVG SMIL animation",description:"Method of using animation elements to animate SVG images",spec:"http://www.w3.org/TR/SVG/animate.html",status:"rec",links:[{url:"http://svg-wow.org/blog/category/animation/",title:"Examples on SVG WOW"},{url:"https://developer.mozilla.org/en/SVG/SVG_animation_with_SMIL",title:"MDN article"},{url:"http://leunen.me/fakesmile/",title:"JS library to support SMIL in SVG"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#svg-smil",title:"has.js test"},{url:"https://github.com/madsgraphics/SVGEventListener",title:"Polyfill for SMIL animate events on SVG"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p"},edge:{12:"p",13:"p",14:"p"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y #2",46:"y #2",47:"y #2",48:"y #2",49:"y #2",50:"y #2",51:"y #2",52:"y #2",53:"y #2"},safari:{3.1:"p",3.2:"p",4:"a #1",5:"a #1",5.1:"a #1",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y #2",33:"y #2",34:"y #2",35:"y #2",36:"y #2",37:"y #2",38:"y #2"},ios_saf:{3.2:"a #1","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in older Safari versions refers to not working in HTML files or CSS background images.",2:"As of Chrome 45 & Opera 32 SMIL is deprecated and usage will result in a warning in the console. Support is expected to be dropped in some future version."},usage_perc_y:80.84,usage_perc_a:.21,ucprefix:false,parent:"",keywords:"svg animation",ie_id:"svgsmilanimation",chrome_id:"",firefox_id:"",webkit_id:""},"svg-fonts":{title:"SVG fonts",description:"Method of using fonts defined as SVG shapes. Removed from [SVG 2.0](http://www.w3.org/TR/SVG2/changes.html#fonts) and considered as a deprecated feature with support being removed from browsers.",spec:"http://www.w3.org/TR/SVG/fonts.html",status:"unoff",links:[{url:"http://jeremie.patonnier.net/post/2011/02/07/Why-are-SVG-Fonts-so-different",title:"Blog post"},{url:"http://opentype.info/blog/2010/04/13/the-ipad-and-svg-fonts-in-mobile-safari/",title:"Blog post on usage for iPad"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"n #1",39:"n #1",40:"n #1",41:"n #1",42:"n #1",43:"n #1",44:"n #1",45:"n #1",46:"n #1",47:"n #1",48:"n #1",49:"n #1",50:"n #1",51:"n #1",52:"n #1",53:"n #1"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"n #1",26:"n #1",27:"n #1",28:"n #1",29:"n #1",30:"n #1",31:"n #1",32:"n #1",33:"n #1",34:"n #1",35:"n #1",36:"n #1",37:"n #1",38:"n #1"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n #2"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"n"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"n #1"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Chrome 38 and newer support SVG fonts only on Windows Vista and XP.",2:"Supported in Opera Mini in SVG images only, not in HTML."},usage_perc_y:25.39,usage_perc_a:0,ucprefix:false,parent:"fontface",keywords:"",ie_id:"",chrome_id:"5930075908210688",firefox_id:"",webkit_id:""},"svg-filters":{title:"SVG filters",description:"Method of using photoshop-like effects on SVG objects including blurring and color manipulation.",spec:"http://www.w3.org/TR/SVG/filters.html",status:"rec",links:[{url:"http://electricbeach.org/?p=950",title:"Experiments with filter effects"},{url:"http://svg-wow.org/blog/category/filters/",title:"SVG filter demos"},{url:"http://docs.webplatform.org/wiki/svg/elements/filter",title:"WebPlatform Docs"},{url:"http://jorgeatgu.github.io/svg-filters/",title:"SVG Filter effects"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"a",6:"a",7:"a",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n",
"6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:92.48,usage_perc_a:.02,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"svg-html":{title:"SVG effects for HTML",description:"Method of using SVG transforms, filters, etc on HTML elements using either CSS or the foreignObject element",spec:"http://www.w3.org/TR/SVG11/extend.html#ForeignObjectElement",status:"rec",links:[{url:"https://developer.mozilla.org/en/SVG/Tutorial/Other_content_in_SVG",title:"MDN Tutorial"},{url:"https://developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content",title:"MDN Reference page"},{url:"http://www.w3.org/TR/filter-effects/",title:"Filter Effects draft"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"a"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a",49:"a",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"n",3.2:"n",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a",9:"a",9.1:"a",TP:"a"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"n",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",36:"a"},and_chr:{49:"a"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support refers to lack of filter support or buggy result from effects. A [CSS Filter Effects](http://www.w3.org/TR/filter-effects/) specification is in the works that would replace this method.",notes_by_num:{},usage_perc_y:9.65,usage_perc_a:68.94,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"svg-html5":{title:"Inline SVG in HTML5",description:"Method of using SVG tags directly in HTML documents. Requires HTML5 parser.",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#svg-0",status:"ls",links:[{url:"http://hacks.mozilla.org/2010/05/firefox-4-the-html5-parser-inline-svg-speed-and-more/",title:"Mozilla Hacks blog post"},{url:"http://samples.msdn.microsoft.com/ietestcenter/html5/svghtml_harness.htm?url=SVG_HTML_Elements_001",title:"Test suite"}],categories:["HTML5","SVG"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y #1",10:"y #1",11:"y #1"},edge:{12:"y #1",13:"y #1",14:"y #1"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y #1",6:"y #1",6.1:"y #1",7:"y #1",7.1:"y #1",8:"y #1",9:"y #1",9.1:"y #1",TP:"y #1"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y #1","6.0-6.1":"y #1","7.0-7.1":"y #1",8:"y #1","8.1-8.4":"y #1","9.0-9.2":"y #1",9.3:"y #1"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y #1",4:"y #1",4.1:"y #1","4.2-4.3":"y #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y #1",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Does not support CSS transforms on SVG elements (transform attribute can be used instead)"},usage_perc_y:94.43,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},canvas:{title:"Canvas (basic support)",description:"Method of generating fast, dynamic graphics using JavaScript.",spec:"https://html.spec.whatwg.org/multipage/scripting.html#the-canvas-element",status:"ls",links:[{url:"https://developer.mozilla.org/en/Canvas_tutorial",title:"Tutorial by Mozilla"},{url:"http://www.canvasdemos.com/",title:"Showcase site"},{url:"http://glimr.rubyforge.org/cake/canvas.html",title:"Animation kit"},{url:"http://diveintohtml5.info/canvas.html",title:"Another tutorial"},{url:"http://explorercanvas.googlecode.com/",title:"Implementation for Internet Explorer"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#canvas",title:"has.js test"}],categories:["Canvas","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a #1",3:"a #1",3.5:"a #1",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #1",3.2:"a #1",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a #2"},android:{2.1:"a #1",2.2:"a #1",2.3:"a #1",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"For screen readers, IE, Chrome & Firefox support the [accessible canvas element sub-DOM](http://www.paciellogroup.com/blog/2012/06/html5-canvas-accessibility-in-firefox-13/).\r\nFirefox & Chrome also support the drawfocus ring.",notes_by_num:{1:"Does not support `toDataURL()`",2:"Opera Mini supports the canvas element, but is unable to play animations or run other more complex applications."},usage_perc_y:89.71,usage_perc_a:5.01,ucprefix:false,parent:"",keywords:"toDataURL()",ie_id:"canvas",chrome_id:"5100084685438976",firefox_id:"",webkit_id:""},"canvas-text":{title:"Text API for Canvas",description:"Method of displaying text on Canvas elements",spec:"https://html.spec.whatwg.org/multipage/scripting.html#drawing-text-to-the-bitmap",status:"ls",links:[{url:"https://developer.mozilla.org/en/Drawing_text_using_a_canvas#Additional_examples",title:"Examples by Mozilla"},{url:"http://code.google.com/p/canvas-text/",title:"Support library"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#canvas-text",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/canvas/CanvasRenderingContext2D/fillText",title:"WebPlatform Docs"}],categories:["Canvas","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:89.7,usage_perc_a:0,ucprefix:false,parent:"canvas",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"namevalue-storage":{title:"Web Storage - name/value pairs",description:"Method of storing data locally like cookies, but for larger amounts of data (sessionStorage and localStorage, used to fall under HTML5).",spec:"https://html.spec.whatwg.org/multipage/webstorage.html#storage",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API",title:"MDN article"},{url:"http://code.google.com/p/sessionstorage/",title:"Support library"},{url:"http://html5demos.com/storage",title:"Simple demo"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-localstorage;native-sessionstorage",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/web-storage/Storage/localStorage",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a",3:"a",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.47,usage_perc_a:.05,ucprefix:false,parent:"",keywords:"webstorage,local storage",ie_id:"webstorage",chrome_id:"5345825534246912",firefox_id:"",webkit_id:""},"sql-storage":{title:"Web SQL Database",description:"Method of storing data client-side, allows Sqlite database queries for access and manipulation",spec:"http://www.w3.org/TR/webdatabase/",status:"unoff",links:[{url:"http://html5doctor.com/introducing-web-sql-databases/",title:"HTML5 Doctor article"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-sql-db",title:"has.js test"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"The Web SQL Database specification is no longer being maintained and support may be dropped in future versions.",notes_by_num:{},usage_perc_y:72.61,usage_perc_a:0,ucprefix:false,parent:"",keywords:"db-storage,websql",ie_id:"websqldatabase",chrome_id:"6330987952734208",firefox_id:"",webkit_id:""},indexeddb:{title:"IndexedDB",description:"Method of storing data client-side, allows indexed database queries.",spec:"http://www.w3.org/TR/IndexedDB/",status:"rec",links:[{url:"http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/",title:"Mozilla Hacks article"},{url:"https://github.com/axemclion/IndexedDBShim",title:"Polyfill for browsers supporting WebSQL"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-indexeddb",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/indexedDB",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"a #1"},edge:{12:"a #1",13:"a #1",14:"a #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"n",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p",7.1:"a #2",8:"a #2",9:"a #2",9.1:"a #2",TP:"a #2"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p",8:"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2",9.3:"a #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"p",10:"y"},op_mob:{10:"n",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"p"}},notes:"",notes_by_num:{1:"Partial support in IE 10 & 11 refers to a number of subfeatures [not being supported](http://codepen.io/cemerick/pen/Itymi).",2:"Partial support in iOS 8 & 9 refers to [seriously buggy behavior](http://www.raymondcamden.com/2014/09/25/IndexedDB-on-iOS-8-Broken-Bad/) as well as complete lack of support in WebViews."},usage_perc_y:59.7,usage_perc_a:18.12,ucprefix:false,parent:"",keywords:"indexdb",ie_id:"indexeddb",chrome_id:"6507459568992256",firefox_id:"indexeddb",webkit_id:"specification-indexeddb"},"online-status":{title:"Online/offline status",description:"Events to indicate when the user's connected (`online` and `offline` events) and the `navigator.onLine` property to see current status.",spec:"https://html.spec.whatwg.org/multipage/browsers.html#browser-state",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine#Specification",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a #2",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"a #3",5:"a #3",6:"a #3",7:"a #3",8:"a #3",9:"a #3",10:"a #3",11:"a #3",12:"a #3",13:"a #3",14:"a #3",15:"a #3",16:"a #3",17:"a #3",18:"a #3",19:"a #3",20:"a #3",21:"a #3",22:"a #3",23:"a #3",24:"a #3",25:"a #3",26:"a #3",27:"a #3",28:"a #3",29:"a #3",30:"a #3",31:"a #3",32:"a #3",33:"a #3",34:"a #3",35:"a #3",36:"a #3",37:"a #3",38:"a #3",39:"a #3",40:"a #3",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"a",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"u","4.0-4.1":"u","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"u",2.2:"u",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #1",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a #1"}},notes:'"online" does not always mean connection to the internet, it can also just mean connection to some network.\r\n\r\nEarly versions of Chrome and Safari always reported "true" for `navigator.onLine`',notes_by_num:{0:"Safari 7.0 supports only the event listener on `window`, and not on `document.body`",1:"Seems to support `navigator.onLine` but not `online`/`offline` events.",2:"IE8 only supports the `online`/`offline` events on `document.body`, rather than `window`.",3:'Desktop Firefox responds to the status of its "Work Offline" mode. If not in that mode, `navigator.onLine` is always `true`, regardless of the actual network connectivity status. [See bug](https://bugzilla.mozilla.org/show_bug.cgi?id=654579) for details.'},usage_perc_y:79.06,usage_perc_a:11.23,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},eventsource:{title:"Server-sent events",description:"Method of continuously sending data from a server to the browser, rather than repeatedly requesting it (EventSource interface, used to fall under HTML5)",spec:"https://html.spec.whatwg.org/multipage/comms.html#server-sent-events",status:"ls",links:[{url:"http://www.html5rocks.com/tutorials/eventsource/basics/",title:"HTML5 Rocks tutorial"},{url:"http://samshull.blogspot.com/2010/10/ajax-push-in-ios-safari-and-chrome-with.html",title:"Blog post with demo"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-eventsource",title:"has.js test"},{url:"https://github.com/Yaffle/EventSource",title:"Polyfill"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:79.59,usage_perc_a:.04,ucprefix:false,parent:"",keywords:"serversent,s-sent-events",ie_id:"serversenteventseventsource",chrome_id:"5311740673785856",firefox_id:"",webkit_id:""},"x-doc-messaging":{title:"Cross-document messaging",description:"Method of sending information from a page on one domain to a page on a different one (using postMessage)",spec:"https://html.spec.whatwg.org/multipage/comms.html#crossDocumentMessages",status:"ls",links:[{url:"https://developer.mozilla.org/en/DOM/window.postMessage",title:"MDN article"},{url:"http://html5demos.com/postmessage2",title:"Simple demo"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-crosswindowmessaging",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/web-messaging/MessagePort/postMessage",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a #1",9:"a #1",10:"a #2",11:"a #2"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support refers to only working in frames/iframes (not other tabs/windows). Also, objects cannot be sent using postMessage.",2:"Partial support refers to [limitations in certain conditions](http://stackoverflow.com/questions/16226924/is-cross-origin-postmessage-broken-in-ie10)."},usage_perc_y:87.23,usage_perc_a:8.22,ucprefix:false,parent:"",keywords:"",ie_id:"postmessage",chrome_id:"4786174115708928",firefox_id:"",webkit_id:""},sni:{title:"Server Name Indication",description:"An extension to the TLS computer networking protocol by which a client indicates which hostname it is attempting to connect to at the start of the handshaking process.",spec:"https://tools.ietf.org/html/rfc6066",status:"other",links:[{url:"http://en.wikipedia.org/wiki/Server_Name_Indication",title:"Wikipedia"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"a #1",8:"a #1",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Only supported on Windows Vista or above (not Windows XP)"},usage_perc_y:94.6,usage_perc_a:.81,ucprefix:false,parent:"",keywords:"sni",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},datauri:{title:"Data URIs",description:"Method of embedding images and other files in webpages as a string of text, generally using base64 encoding.",spec:"https://tools.ietf.org/html/rfc2397",status:"other",links:[{url:"http://css-tricks.com/data-uris/",title:"Information page"},{url:"http://en.wikipedia.org/wiki/data_URI_scheme",title:"Wikipedia"},{url:"http://www.websiteoptimization.com/speed/tweak/inline-images/",title:"Data URL converter"},{url:"http://klevjers.com/papers/phishing.pdf",title:"Information on security issues"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a #1",9:"a #2",10:"a #2",11:"a #2"},edge:{12:"a #2",13:"a #2",14:"a #2"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #2",11:"a #2"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Support is limited to images and linked resources like CSS files, not HTML or JS files. Max URI length is 32KB.",2:"Support is limited to images and linked resources like CSS or JS, not HTML files. Maximum size limit is 4GB."},usage_perc_y:86.09,usage_perc_a:9.4,ucprefix:false,parent:"",keywords:"data url,datauris,data uri,dataurl,dataurls,base64",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},wav:{title:"Wav audio format",description:"Waveform Audio File Format, aka WAV or WAVE, a typically uncompressed audio format. ",spec:"http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/WAVE/WAVE.html",status:"other",links:[{url:"https://en.wikipedia.org/wiki/WAV",title:"Wikipedia article"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",
42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"u",2.2:"u",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Support refers to use using the `audio` element, not other conditions.",notes_by_num:{},usage_perc_y:82.23,usage_perc_a:0,ucprefix:false,parent:"audio",keywords:"",ie_id:"wavaudiosupport",chrome_id:"",firefox_id:"",webkit_id:""},mathml:{title:"MathML",description:"Special tags that allow mathematical formulas and notations to be written on web pages.",spec:"http://www.w3.org/TR/MathML/",status:"rec",links:[{url:"http://en.wikipedia.org/wiki/MathML",title:"Wikipedia"},{url:"http://www.mozilla.org/projects/mathml/demo/",title:"MathML demos"},{url:"http://www.mathjax.org",title:"Cross-browser support script"},{url:"https://developer.mozilla.org/en/MathML/Element",title:"MDN element reference"}],categories:["Other"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"y #1",3:"y #1",3.5:"y #1",3.6:"y #1",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"y",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p",42:"p",43:"p",44:"p",45:"p",46:"p",47:"p",48:"p",49:"p",50:"p",51:"p",52:"p",53:"p"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"p",47:"p"},bb:{7:"p",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"p"},and_chr:{49:"p"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a"}},notes:"Opera's support is limited to a CSS profile of MathML. Support was added in Chrome 24, but removed afterwards due to instability.",notes_by_num:{1:"Before version 4, Firefox only supports the XHTML notation"},usage_perc_y:18.9,usage_perc_a:9.17,ucprefix:false,parent:"",keywords:"",ie_id:"mathml",chrome_id:"5240822173794304",firefox_id:"",webkit_id:""},"css-featurequeries":{title:"CSS Feature Queries",description:"CSS Feature Queries allow authors to condition rules based on whether particular property declarations are supported in CSS using the @supports at rule.",spec:"http://www.w3.org/TR/css3-conditional/#at-supports",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/@supports",title:"MDN Article"},{url:"http://mcc.id.au/blog/2012/08/supports",title:"@supports in Firefox"},{url:"http://dabblet.com/gist/3895764",title:"Test case"},{url:"http://docs.webplatform.org/wiki/css/atrules/@supports",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"See also the [CSS.supports() DOM API](#feat=css-supports-api)",notes_by_num:{},usage_perc_y:69.42,usage_perc_a:0,ucprefix:false,parent:"",keywords:"supports,conditional",ie_id:"conditionalrules",chrome_id:"4993981813358592",firefox_id:"",webkit_id:""},xhtml:{title:"XHTML served as application/xhtml+xml",description:"A strict form of HTML, and allows embedding of other XML languages",spec:"https://html.spec.whatwg.org/multipage/xhtml.html#parsing-xhtml-documents",status:"ls",links:[{url:"http://en.wikipedia.org/wiki/XHTML",title:"Wikipedia"},{url:"http://www.xmlplease.com/xhtml/xhtml5polyglot/",title:"Information on XHTML5"},{url:"http://docs.webplatform.org/wiki/concepts/internet_and_web/the_web_standards_model#What_is_XHTML.3F",title:"WebPlatform Docs"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"The XHTML syntax is very close to HTML, and thus is almost always ([incorrectly](https://developer.mozilla.org/en-US/docs/XHTML#MIME_type_versus_DOCTYPE)) served as text/html on the web.",notes_by_num:{},usage_perc_y:94.72,usage_perc_a:0,ucprefix:false,parent:"",keywords:"xhtml+xml",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},xhtmlsmil:{title:"XHTML+SMIL animation",description:"Method of using SMIL animation in web pages",spec:"http://www.w3.org/TR/XHTMLplusSMIL/",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/XHTML%2BSMIL",title:"Wikipedia"},{url:"http://leunen.me/fakesmile/",title:"JS library to support XHTML+SMIL"}],categories:["Other"],stats:{ie:{5.5:"n",6:"a",7:"a",8:"a",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p",42:"p",43:"p",44:"p",45:"p",46:"p",47:"p",48:"p"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p",42:"p",43:"p",44:"p",45:"p",46:"p",47:"p",48:"p",49:"p",50:"p",51:"p",52:"p",53:"p"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"p"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p",8:"p","8.1-8.4":"p","9.0-9.2":"p",9.3:"p"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"p",47:"p"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"p"},and_chr:{49:"p"},and_ff:{45:"p"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"p"}},notes:"Internet Explorer supports the W3C proposal HTML+TIME, which is largely the same as XHTML+SMIL",notes_by_num:{},usage_perc_y:0,usage_perc_a:.85,ucprefix:false,parent:"xhtml",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"wai-aria":{title:"WAI-ARIA Accessibility features",description:"Method of providing ways for people with disabilities to use dynamic web content and web applications.",spec:"http://www.w3.org/TR/wai-aria/",status:"rec",links:[{url:"http://www.w3.org/WAI/intro/aria",title:"Information page"},{url:"http://www.paciellogroup.com/blog/2011/10/browser-assistive-technology-tests-redux/",title:"Links to various test results"},{url:"http://en.wikipedia.org/wiki/WAI-ARIA",title:"Wikipedia"},{url:"http://www.alistapart.com/articles/the-accessibility-of-wai-aria/",title:"ALA Article"},{url:"http://zufelt.ca/blog/are-you-confused-html5-and-wai-aria-yet",title:"HTML5/WAI-ARIA information"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a",9:"a",10:"a",11:"a"},edge:{12:"a",13:"a",14:"a"},firefox:{2:"a",3:"a",3.5:"a",3.6:"a",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a",49:"a",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"n",3.2:"n",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a",9:"a",9.1:"a",TP:"a"},opera:{9:"n","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"a"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"n",10:"n"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",36:"a"},and_chr:{49:"a"},and_ff:{45:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"n"}},notes:"Support for ARIA is rather complex and currently is not fully supported in any browser. For detailed information on partial support see the [ARIA 1.0 Implementation Report](http://www.w3.org/WAI/ARIA/1.0/CR/implementation-report)\r\n",notes_by_num:{},usage_perc_y:0,usage_perc_a:85.04,ucprefix:false,parent:"",keywords:"wai,aria",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},geolocation:{title:"Geolocation",description:"Method of informing a website of the user's geographical location",spec:"http://www.w3.org/TR/geolocation-API/",status:"rec",links:[{url:"http://html5demos.com/geo",title:"Simple demo"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-geolocation",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/geolocation",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"p",10.5:"p",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"n",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:89.66,usage_perc_a:.01,ucprefix:false,parent:"",keywords:"",ie_id:"geolocation",chrome_id:"6348855016685568",firefox_id:"",webkit_id:""},flexbox:{title:"Flexible Box Layout Module",description:"Method of positioning elements in horizontal or vertical stacks. Support includes the support for the all properties prefixed with `flex` as well as `display: flex`, `display: inline-flex`, `align-content`, `align-items`, `align-self`, `justify-content` and `order`.",spec:"http://www.w3.org/TR/css3-flexbox/",status:"cr",links:[{url:"http://bennettfeely.com/flexplorer/",title:"Flexbox CSS generator"},{url:"http://www.adobe.com/devnet/html5/articles/working-with-flexbox-the-new-spec.html",title:"Article on using the latest spec"},{url:"https://dev.opera.com/articles/view/advanced-cross-browser-flexbox/",title:"Tutorial on cross-browser support"},{url:"http://philipwalton.github.io/solved-by-flexbox/",title:"Examples on how to solve common layout problems with flexbox"},{url:"http://css-tricks.com/snippets/css/a-guide-to-flexbox/",title:"A Complete Guide to Flexbox"},{url:"http://the-echoplex.net/flexyboxes/",title:"Flexbox playground and code generator"},{url:"https://github.com/philipwalton/flexbugs",title:"Flexbugs: Repo for flexbox bugs"},{url:"https://github.com/10up/flexibility/",title:"10up Open Sources IE 8 and 9 Support for Flexbox"},{url:"https://github.com/vadimyer/ecligrid",title:"Ecligrid - Mobile first flexbox grid system"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #2 #4",11:"a #4"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a x #1",3:"a x #1",3.5:"a x #1",3.6:"a x #1",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a #3",23:"a #3",24:"a #3",25:"a #3",26:"a #3",27:"a #3",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a x #1",3.2:"a x #1",4:"a x #1",5:"a x #1",5.1:"a x #1",6:"a x #1",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y x",16:"y x",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"a x #1",2.2:"a x #1",2.3:"a x #1",3:"a x #1",4:"a x #1",4.1:"a x #1","4.2-4.3":"a x #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a x #1",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a x #2",11:"y"},and_uc:{9.9:"a x #1"}},notes:"Most partial support refers to supporting an [older version](http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/) of the specification or an [older syntax](http://www.w3.org/TR/2012/WD-css3-flexbox-20120322/).",notes_by_num:{1:"Only supports the [old flexbox](http://www.w3.org/TR/2009/WD-css3-flexbox-20090723) specification and does not support wrapping.",2:"Only supports the [2012 syntax](http://www.w3.org/TR/2012/WD-css3-flexbox-20120322/)",3:"Does not support flex-wrap or flex-flow properties",4:"Partial support is due to large amount of bugs present (see known issues)"},usage_perc_y:76.45,usage_perc_a:17.65,ucprefix:false,parent:"",keywords:"flex-box,flex-direction,flex-wrap,flex-flow,flex-grow,flex-basis,display:flex,flex box",ie_id:"flexbox",chrome_id:"4837301406400512",firefox_id:"",webkit_id:""},webgl:{title:"WebGL - 3D Canvas graphics",description:"Method of generating dynamic 3D graphics using JavaScript, accelerated through hardware",spec:"https://www.khronos.org/registry/webgl/specs/1.0/",status:"other",links:[{url:"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation",title:"Instructions on enabling WebGL"},{url:"http://www.khronos.org/webgl/wiki/Tutorial",title:"Tutorial"},{url:"http://hacks.mozilla.org/2009/12/webgl-draft-released-today/",title:"Firefox blog post"},{url:"http://webkit.org/blog/603/webgl-now-available-in-webkit-nightlies/",title:"Webkit blog post"},{url:"https://github.com/iewebgl/iewebgl",title:"Polyfill for IE"}],categories:["Canvas"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"y #1"},edge:{12:"y #1",13:"y #1",14:"y #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y #1",24:"y #1",25:"y #1",26:"y #1",27:"y #1",28:"y #1",29:"y #1",30:"y #1",31:"y #1",32:"y #1",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a #1",6:"a #1",6.1:"a #1",7:"a #1",7.1:"a #1",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"a #1",12.1:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"a"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"a",12.1:"a",36:"y"},and_chr:{49:"a"},and_ff:{45:"a"},ie_mob:{10:"p",11:"y #1"},and_uc:{9.9:"y #1"}},notes:'Support listed as "partial" refers to the fact that not all users with these browsers have WebGL access. This is due to the additional requirement for users to have [up to date video drivers](http://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists). This problem was [solved in Chrome on Windows](http://blog.chromium.org/2012/02/gpu-accelerating-2d-canvas-and-enabling.html) as of version 18.\r\n\r\nNote that WebGL is part of the [Khronos Group](http://www.khronos.org/webgl/), not the W3C.',notes_by_num:{1:'WebGL context is accessed from "experimental-webgl" rather than "webgl"'},usage_perc_y:57.51,usage_perc_a:26.36,ucprefix:false,parent:"canvas",keywords:"web gl",ie_id:"webglcanvas3d,webglinstancingextension",chrome_id:"6049512976023552",firefox_id:"webgl-1",webkit_id:"specification-webgl-1"},fileapi:{title:"File API",description:"Method of manipulating file objects in web applications client-side, as well as programmatically selecting them and accessing their data.",spec:"http://www.w3.org/TR/FileAPI/",status:"wd",links:[{url:"https://developer.mozilla.org/en/Using_files_from_web_applications",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/apis/file",title:"WebPlatform Docs"},{url:"https://github.com/moxiecode/moxie",title:"Polyfill"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #2",11:"a #2"},edge:{12:"a #2",13:"a #2",14:"a #2"},firefox:{2:"n",3:"n",3.5:"n",3.6:"a #2",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"a #2",26:"a #2",27:"a #2",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"a #1 #2",7:"a #1 #2",8:"a #1 #2",9:"a #1 #2",10:"a #1 #2",11:"a #1 #2",12:"a #1 #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"a #2",26:"a #2",27:"a #2",28:"a #2",29:"a #2",30:"a #2",31:"a #2",32:"a #2",33:"a #2",34:"a #2",35:"a #2",36:"a #2",37:"a #2",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a #1 #2",6:"a #2",6.1:"a #2",7:"a #2",7.1:"a #2",8:"a #2",9:"a #2",9.1:"a #2",TP:"a #2"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"a #2",11.5:"a #2",11.6:"a #2",12:"a #2",12.1:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"a #2","7.0-7.1":"a #2",8:"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2",9.3:"a #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a #1 #2",4:"a #1 #2",4.1:"a #1 #2","4.2-4.3":"a #1 #2",4.4:"a #2","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #1 #2",10:"a #2"},op_mob:{10:"n",11:"n",11.1:"a #2",11.5:"a #2",12:"a #2",12.1:"a #2",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"a #2"},and_uc:{9.9:"a #2"}},notes:"",notes_by_num:{1:"Does not have `FileReader` support. ",2:"Does not support the `File` constructor"},usage_perc_y:56.21,usage_perc_a:32.68,ucprefix:false,parent:"",keywords:"FileReader",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},shadowdom:{title:"Shadow DOM",description:"Method of establishing and maintaining functional boundaries between DOM trees and how these trees interact with each other within a document, thus enabling better functional encapsulation within the DOM.",spec:"http://www.w3.org/TR/shadow-dom/",status:"wd",links:[{url:"http://html5-demos.appspot.com/static/shadowdom-visualizer/index.html",title:"Shadow DOM Visualizer"},{url:"http://www.html5rocks.com/tutorials/webcomponents/shadowdom/",title:"HTML5Rocks - Shadow DOM 101 article"},{url:"https://bugs.webkit.org/show_bug.cgi?id=148695",title:"Safari implementation bug"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=1205323",title:"Firefox implementation bug"}],categories:["DOM"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"n d #1",43:"n d #1",44:"n d #1",45:"n d #1",46:"n d #1",47:"n d #1",48:"n d #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x","4.4.3-4.4.4":"y x",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Supported in current WebKit nightly, so may appear in an upcoming Safari version.",notes_by_num:{1:"Supported in Firefox behind the `dom.webcomponents.enabled` flag."},usage_perc_y:51.31,usage_perc_a:0,ucprefix:false,parent:"",keywords:"web components",ie_id:"shadowdom",chrome_id:"4507242028072960",firefox_id:"shadow-dom",webkit_id:"feature-shadow-dom"},websockets:{title:"Web Sockets",description:"Bidirectional communication technology for web apps",spec:"https://html.spec.whatwg.org/multipage/comms.html#network",status:"ls",links:[{url:"http://websocket.org/aboutwebsocket.html",title:"WebSockets information"},{url:"http://updates.html5rocks.com/2011/08/What-s-different-in-the-new-WebSocket-protocol",title:"Details on newer protocol"},{url:"http://en.wikipedia.org/wiki/WebSocket",title:"Wikipedia"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-websockets",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/websocket",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a #1",5:"a #1",6:"a x #2",7:"a x #2",8:"a x #2",9:"a x #2",10:"a x #2",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #2",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a #1",5.1:"a #1",6:"a #2",6.1:"a #2",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"a #1",11.1:"a #1",11.5:"a #1",11.6:"a #1",12:"a #1",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y #1",10:"y"},op_mob:{10:"n",11:"a #1",11.1:"a #1",11.5:"a #1",12:"a #1",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Reported to be supported in some Android 4.x browsers, including Sony Xperia S, Sony TX and HTC.",notes_by_num:{1:"Partial support refers to the websockets implementation using an older version of the protocol and/or the implementation being disabled by default (due to security issues with the older protocol).",2:"Partial support refers to lacking support for binary data."},usage_perc_y:87.18,usage_perc_a:.54,ucprefix:true,parent:"",keywords:"",ie_id:"websocket",chrome_id:"6555138000945152",firefox_id:"websocket",webkit_id:""},hidden:{title:"hidden attribute",description:"The `hidden` attribute may be applied to any element, and effectively hides elements similar to `display: none` in CSS.",spec:"https://html.spec.whatwg.org/multipage/interaction.html#the-hidden-attribute",status:"ls",links:[{url:"http://davidwalsh.name/html5-hidden",title:"Article on hidden attribute"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"y",13:"y",14:"y"
},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"The hidden state can be easily overridden with a CSS `display` property set to anything other than `none`.",notes_by_num:{},usage_perc_y:93.22,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"script-async":{title:"async attribute for external scripts",description:"The boolean async attribute on script elements allows the external JavaScript file to run when it's available, without delaying page load first.",spec:"https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async",status:"ls",links:[{url:"https://developer.mozilla.org/en/HTML/Element/script#Attributes",title:"MDN article"},{url:"http://ie.microsoft.com/testdrive/Performance/AsyncScripts/Default.html",title:"Demo"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/script.js#script-async",title:"has.js test"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a #1",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Using script.async = false; to maintain execution order for dynamically-added scripts isn't supported in Safari 5.0"},usage_perc_y:88.86,usage_perc_a:.06,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},mediasource:{title:"Media Source Extensions",description:"API allowing media data to be accessed from HTML `video` and `audio` elements.",spec:"http://www.w3.org/TR/media-source/",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/MediaSource#Browser_compatibility",title:"MDN article"},{url:"https://msdn.microsoft.com/en-us/library/dn594470%28v=vs.85%29.aspx",title:"MSDN article"},{url:"http://html5-demos.appspot.com/static/media-source.html",title:"MediaSource demo"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a #2"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n d #1",26:"n d #1",27:"n d #1",28:"n d #1",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n d",18:"n d",19:"n d",20:"n d",21:"n d",22:"n d",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Requires the `media.mediasource.enabled` flag to be enabled, support is limited to a whitelist including the YouTube, Netflix, and Dailymotion websites",2:"Partial support in IE11 refers to only working in Windows 8+"},usage_perc_y:60.42,usage_perc_a:5.69,ucprefix:false,parent:"",keywords:"sourcebuffer,endofstream,mse",ie_id:"mediasourceextensions",chrome_id:"4563797888991232",firefox_id:"mse",webkit_id:""},cors:{title:"Cross-Origin Resource Sharing",description:"Method of performing XMLHttpRequests across domains",spec:"https://fetch.spec.whatwg.org/#http-cors-protocol",status:"ls",links:[{url:"http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/",title:"Mozilla Hacks blog post"},{url:"http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx",title:"Alternative implementation by IE8"},{url:"https://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/",title:"DOM access using CORS"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-cors-xhr",title:"has.js test"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"a #2",9:"a #2",10:"a #1",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"a #1 #3",5:"a #1 #3",5.1:"a #1 #3",6:"y #3",6.1:"y #3",7:"y #3",7.1:"y #3",8:"y #3",9:"y #3",9.1:"y #3",TP:"y #3"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #1 #3","4.0-4.1":"a #1 #3","4.2-4.3":"a #1 #3","5.0-5.1":"a #1 #3","6.0-6.1":"y #3","7.0-7.1":"y #3",8:"y #3","8.1-8.4":"y #3","9.0-9.2":"y #3",9.3:"y #3"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a #1",2.2:"a #1",2.3:"a #1",3:"a #1",4:"a #1",4.1:"a #1","4.2-4.3":"a #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #1",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Does not support CORS for images in `<canvas>`",2:"Supported somewhat in IE8 and IE9 using the XDomainRequest object (but has [limitations](http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx))",3:"Does not support CORS for `<video>` in `<canvas>`: https://bugs.webkit.org/show_bug.cgi?id=135379"},usage_perc_y:86.76,usage_perc_a:3.67,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-backdrop-filter":{title:"CSS Backdrop Filter",description:"Method of applying filter effects (like blur, grayscale or hue) to content/elements below the target element.",spec:"http://dev.w3.org/fxtf/filters-2/#BackdropFilterProperty",status:"unoff",links:[{url:"http://product.voxmedia.com/til/2015/2/17/8053347/css-ios-transparency-with-webkit-backdrop-filter",title:"Blog post"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter",title:"Mozilla Developer Network"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/9160189-backdrop-filters",title:"Edge feature request"}],categories:["CSS","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n d #1",48:"n d #1",49:"n d #1",50:"n d #1",51:"n d #1",52:"n d #1",53:"n d #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Can be enabled via the "Experimental Web Platform Features" flag'},usage_perc_y:8.72,usage_perc_a:0,ucprefix:false,parent:"",keywords:"blue,hue-rotate,invert,saturate,filter",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:"feature-filter-effects-backdrop-filter-propery"},calc:{title:"calc() as CSS unit value",description:"Method of allowing calculated values for length units, i.e. `width: calc(100% - 3em)`",spec:"http://www.w3.org/TR/css3-values/#calc",status:"cr",links:[{url:"http://hacks.mozilla.org/2010/06/css3-calc/",title:"Mozilla Hacks article"},{url:"https://developer.mozilla.org/en/docs/Web/CSS/calc",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/functions/calc",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a #2",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a #1","4.4.3-4.4.4":"a #1",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"Support can be somewhat emulated in older versions of IE using the non-standard `expression()` syntax.\r\n\r\nDue to the way browsers handle [sub-pixel rounding](http://ejohn.org/blog/sub-pixel-problems-in-css/) differently, layouts using `calc()` expressions may have unexpected results.",notes_by_num:{1:"Partial support in Android Browser 4.4 refers to the browser lacking the ability to multiply and divide values.",2:"Partial support in IE9 refers to the browser crashing when used as a `background-position` value."},usage_perc_y:75.44,usage_perc_a:3.28,ucprefix:false,parent:"",keywords:"",ie_id:"csscalc",chrome_id:"5765241438732288",firefox_id:"",webkit_id:""},"dom-range":{title:"Document Object Model Range",description:"A contiguous range of content in a Document, DocumentFragment or Attr",spec:"https://dom.spec.whatwg.org/#ranges",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Range",title:"MDN"},{url:"http://www.quirksmode.org/dom/range_intro.html",title:"QuirksMode"},{url:"https://github.com/timdown/rangy",title:'"Rangy" Range library with old IE support'}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Range) for feature support details",notes_by_num:{},usage_perc_y:94.72,usage_perc_a:0,ucprefix:false,parent:"",keywords:"DOM,range,selection",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},ruby:{title:"Ruby annotation",description:"Method of adding pronunciation or other annotations using ruby elements (primarily used in East Asian typography).",spec:"https://html.spec.whatwg.org/multipage/semantics.html#the-ruby-element",status:"ls",links:[{url:"http://html5doctor.com/ruby-rt-rp-element/",title:"HTML5 Doctor article"},{url:"http://docs.webplatform.org/wiki/html/elements/ruby",title:"WebPlatform Docs"},{url:"https://addons.mozilla.org/firefox/addon/1935/",title:'Add-on "XHTML Ruby Support" for Firefox'},{url:"https://addons.mozilla.org/firefox/addon/6812/",title:'Addon "HTML Ruby" for Firefox support'},{url:"http://www.w3.org/TR/css-ruby-1/",title:"CSS specification"}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a"},edge:{12:"a",13:"a",14:"a"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a",49:"a",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"p",3.2:"p",4:"p",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a",9:"a",9.1:"a",TP:"a"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"p",10:"a"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"a"},and_chr:{49:"a"},and_ff:{45:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:"Browsers without native support can still simulate support using CSS. Partial support refers to only supporting basic ruby, may still be missing writing-mode, Complex ruby and CSS3 Ruby.",notes_by_num:{1:"IE9+ supports [properties](https://msdn.microsoft.com/en-us/library/hh772055%28v=vs.85%29.aspx) of an older version of the CSS Ruby specification."},usage_perc_y:7.54,usage_perc_a:81.78,ucprefix:false,parent:"",keywords:"ruby-base,ruby-text,ruby-position,ruby-merge,ruby-align",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-opacity":{title:"CSS3 Opacity",description:"Method of setting the transparency level of an element",spec:"http://www.w3.org/TR/css3-color/",status:"rec",links:[{url:"http://www.css3files.com/color/#opacity",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/opacity",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'Transparency for elements in IE8 and older can be achieved using the proprietary "filter" property and does not work well with PNG images using alpha transparency.',notes_by_num:{},usage_perc_y:94.72,usage_perc_a:.86,ucprefix:false,parent:"",keywords:"transparent,transparency,alpha",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"form-validation":{title:"Form validation",description:"Method of setting required fields and field types without requiring JavaScript. This includes preventing forms from being submitted when appropriate, the `checkValidity()` method as well as support for the `:invalid`, `:valid`, and `:required` CSS pseudo-classes.",spec:"https://html.spec.whatwg.org/multipage/forms.html#client-side-form-validation",status:"ls",links:[{url:"http://docs.webplatform.org/wiki/html/attributes/required",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a #1",5.1:"a #1",6:"a #1",6.1:"a #1",7:"a #1",7.1:"a #1",8:"a #1",9:"a #1",9.1:"a #1",TP:"a #1"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1",9.3:"a #1"},op_mini:{"5.0-8.0":"a #3"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"a #1",4.1:"a #1","4.2-4.3":"a #1",4.4:"a #1","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #1",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #2",11:"a #2"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support refers to lack of notice when form with required fields is attempted to be submitted.",2:"Partial support in IE10 mobile refers to lack of warning when blocking submission.",3:"Partial support in Opera Mini refers to only supporting the CSS pseudo classes."},usage_perc_y:74.68,usage_perc_a:19.31,ucprefix:false,parent:"forms",keywords:"",ie_id:"",chrome_id:"6091813840486400",firefox_id:"",webkit_id:""},history:{title:"Session history management",description:"Method of manipulating the user's browser's session history in JavaScript using `history.pushState`, `history.replaceState` and the `popstate` event.",spec:"https://html.spec.whatwg.org/multipage/browsers.html#dom-history-pushstate",status:"ls",links:[{url:"http://www.adequatelygood.com/2010/7/Saner-HTML5-History-Management",title:"Introduction to history management"},{url:"https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history",title:"MDN article"},{url:"http://html5demos.com/history",title:"Demo page"},{url:"https://github.com/browserstate/history.js",title:"History.js polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-history-state",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/dom/History",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"a",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"n",4:"n",4.1:"n","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a"}},notes:"Older iOS versions and Android 4.0.4 claim support, but implementation is too buggy to be useful.",notes_by_num:{},usage_perc_y:79.43,usage_perc_a:9.15,ucprefix:false,parent:"",keywords:"onpushstate,onreplacestate",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},json:{title:"JSON parsing",description:"Method of converting JavaScript objects to JSON strings and JSON back to objects using JSON.stringify() and JSON.parse()",spec:"http://www.ecma-international.org/ecma-262/5.1/#sec-15.12",status:"other",links:[{url:"https://developer.mozilla.org/En/Using_native_JSON",title:"MDN article"},{url:"http://www.json.org/js.html",title:"JSON in JS (includes script w/support)"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/json.js#json",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/apis/json",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y #1",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Requires document to be in IE8+ [standards mode](http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx) to work in IE8."},usage_perc_y:95.4,usage_perc_a:0,ucprefix:false,parent:"es5",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},classlist:{title:"classList (DOMTokenList)",description:"Method of easily manipulating classes on elements, using the DOMTokenList object.",spec:"https://dom.spec.whatwg.org/#dom-element-classlist",status:"ls",links:[{url:"http://hacks.mozilla.org/2010/01/classlist-in-firefox-3-6/",title:"Mozilla Hacks article"},{url:"https://github.com/eligrey/classList.js",title:"Polyfill script"},{url:"http://docs.webplatform.org/wiki/dom/Element/classList",title:"WebPlatform Docs"},{url:"http://www.sitepoint.com/exploring-classlist-api/",title:"SitePoint article"},{url:"http://aurelio.audero.it/demo/classlist-api-demo.html",title:"Demo using classList"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/Element.classList",title:"MDN article"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"p",9:"p",10:"a #1 #2 #3",11:"a #1 #2 #3"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"a #2 #3",4:"a #2 #3",5:"a #2 #3",6:"a #2 #3",7:"a #2 #3",8:"a #2 #3",9:"a #2 #3",10:"a #2 #3",11:"a #2 #3",12:"a #2 #3",13:"a #2 #3",14:"a #2 #3",15:"a #2 #3",16:"a #2 #3",17:"a #2 #3",18:"a #2 #3",19:"a #2 #3",20:"a #2 #3",21:"a #2 #3",22:"a #2 #3",23:"a #2 #3",24:"a #3",25:"a #3",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"a #1 #2 #3",9:"a #1 #2 #3",10:"a #1 #2 #3",11:"a #1 #2 #3",12:"a #1 #2 #3",13:"a #1 #2 #3",14:"a #1 #2 #3",15:"a #1 #2 #3",16:"a #1 #2 #3",17:"a #1 #2 #3",18:"a #1 #2 #3",19:"a #1 #2 #3",20:"a #1 #2 #3",21:"a #1 #2 #3",22:"a #1 #2 #3",23:"a #2 #3",
24:"a #3",25:"a #3",26:"a #3",27:"a #3",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"a #1 #2 #3",6:"a #1 #2 #3",6.1:"a #1 #2 #3",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"a #1 #2 #3",11.6:"a #1 #2 #3",12:"a #1 #2 #3",12.1:"a #1 #2 #3",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"a #1 #2 #3","6.0-6.1":"a #1 #2 #3","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"a #1 #2 #3",4:"a #1 #2 #3",4.1:"a #1 #2 #3","4.2-4.3":"a #1 #2 #3",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #1 #2 #3",10:"y"},op_mob:{10:"p",11:"p",11.1:"a #1 #2 #3",11.5:"a #1 #2 #3",12:"a #1 #2 #3",12.1:"a #1 #2 #3",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1 #2 #3",11:"a #1 #2 #3"},and_uc:{9.9:"a #1 #2 #3"}},notes:"",notes_by_num:{1:"Does not have support for `classList` on SVG or MathML elements.",2:"Does not support the second parameter for the `toggle` method",3:"Does not support multiple parameters for the `add()` & `remove()` methods"},usage_perc_y:70.57,usage_perc_a:18.43,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"text-overflow":{title:"CSS3 Text-overflow",description:"Append ellipsis when text overflows its containing element",spec:"http://www.w3.org/TR/css3-ui/#text-overflow",status:"cr",links:[{url:"https://github.com/rmorse/AutoEllipsis",title:"jQuery polyfill for Firefox"},{url:"https://developer.mozilla.org/En/CSS/Text-overflow",title:"MDN article"},{url:"http://www.css3files.com/text/",title:"Information page"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-text-overflow",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/css/properties/text-overflow",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y x","9.5-9.6":"y x","10.0-10.1":"y x",10.5:"y x",10.6:"y x",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y x",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:95.42,usage_perc_a:0,ucprefix:false,parent:"",keywords:"textoverflow,ellipsis",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},webm:{title:"WebM video format",description:"Multimedia format designed to provide a royalty-free, high-quality open video compression format for use with HTML5 video. WebM supports the video codec VP8 and VP9.",spec:"http://www.webmproject.org/",status:"other",links:[{url:"https://tools.google.com/dlpage/webmmf",title:"Codec for IE9 support"},{url:"http://www.broken-links.com/2010/09/01/playing-webm-in-safari-with-plugins/",title:"Info on supporting WebM in Safari"},{url:"http://webmproject.org",title:"Official website"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video-webm",title:"has.js test"},{url:"http://perian.org/",title:"Perian :Mac OSX Webm Codec install"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"p"},edge:{12:"p",13:"p",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"p"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"a",15:"a",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"Will work in IE9+ and Safari/MacOSX provided the user has the WebM codecs installed. Partial support indicates that at least one codec is supported but not all.",notes_by_num:{},usage_perc_y:65.52,usage_perc_a:4.99,ucprefix:false,parent:"video",keywords:"matroska",ie_id:"webmcontainer,vp9videoplayback",chrome_id:"6362186595172352",firefox_id:"",webkit_id:""},mpeg4:{title:"MPEG-4/H.264 video format",description:"Commonly used video compression format.",spec:"http://ip.hhi.de/imagecom_G1/assets/pdfs/csvt_overview_0305.pdf",status:"other",links:[{url:"http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC",title:"Wikipedia article"},{url:"http://www.interoperabilitybridges.com/html5-extension-for-wmp-plugin",title:"Firefox extension allowing support in Win7"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a #1",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"a #2"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a"}},notes:"Firefox supports H.264 on Windows 7 and later since version 21. Firefox supports H.264 on Linux since version 26 if the appropriate gstreamer plug-ins are installed.\r\n\r\nPartial support for older Firefox versions refers to the lack of support in OS X & some non-Android Linux platforms.",notes_by_num:{1:"The Android 2.3 browser requires [specific handling](http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/) to play videos.",2:"Partial supports refers to the lack of hardware acceleration."},usage_perc_y:78.31,usage_perc_a:10.85,ucprefix:false,parent:"video",keywords:"avc,mp4,mpv,mov,aac,h264",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},ogv:{title:"Ogg/Theora video format",description:"Free lossy video compression format.",spec:"http://theora.org/doc/",status:"other",links:[{url:"http://en.wikipedia.org/wiki/Theora",title:"Wikipedia article"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"p"},edge:{12:"p",13:"p",14:"p"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:49.95,usage_perc_a:0,ucprefix:false,parent:"video",keywords:"xiph",ie_id:"theoravideocodec,oggcontainer",chrome_id:"",firefox_id:"",webkit_id:""},wordwrap:{title:"CSS3 Overflow-wrap",description:"Allows lines to be broken within words if an otherwise unbreakable string is too long to fit. Currently mostly supported using the `word-wrap` property.",spec:"http://www.w3.org/TR/css3-text/#overflow-wrap",status:"wd",links:[{url:"https://developer.mozilla.org/En/CSS/Word-wrap",title:"MDN article"},{url:"http://www.css3files.com/text/#wordwrap",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/properties/word-wrap",title:"WebPlatform Docs"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=955857",title:"Bug on Firefox support"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6524680-update-word-wrap-to-overflow-wrap",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a"},edge:{12:"a",13:"a",14:"a"},firefox:{2:"n",3:"n",3.5:"a",3.6:"a",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",36:"y"},and_chr:{49:"y"},and_ff:{45:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:'Partial support refers to requiring the legacy name "word-wrap" (rather than "overflow-wrap") to work.',notes_by_num:{},usage_perc_y:61.66,usage_perc_a:33.83,ucprefix:false,parent:"",keywords:"wordwrap,word-wrap",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},pointerlock:{title:"PointerLock API",description:"API that provides access to raw mouse movement data. This is done by ignoring boundaries resulting from screen edges where the cursor can't go beyond, providing proper control for first person or real time strategy games. ",spec:"https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API",title:"MDN article"},{url:"http://mdn.github.io/pointer-lock-demo",title:"Simple demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n d",17:"n d",18:"n d",19:"n d",20:"n d",21:"n d",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:41.37,usage_perc_a:0,ucprefix:false,parent:"",keywords:"mouselock,pointer lock,mouse lock,requestPointerLock,pointerLockElement,exitPointerLock,movementX,movementY",ie_id:"pointerlockmouselock",chrome_id:"6753200417800192",firefox_id:"pointerlock",webkit_id:""},"object-fit":{title:"CSS3 object-fit/object-position",description:'Method of specifying how an object (image or video) should fit inside its box. object-fit options include "contain" (fit according to aspect ratio), "fill" (stretches object to fill) and "cover" (overflows box but maintains ratio), where object-position allows the object to be repositioned like background-image does.',spec:"http://www.w3.org/TR/css3-images/",status:"cr",links:[{url:"https://dev.opera.com/articles/view/css3-object-fit-object-position/",title:"Dev.Opera article"},{url:"http://docs.webplatform.org/wiki/css/properties/object-fit",title:"WebPlatform Docs"},{url:"https://github.com/anselmh/object-fit",title:"object-fit JavaScript-Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"a #1",8:"a #1",9:"a #1",9.1:"a #1",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y x",11:"y x",11.1:"y x",11.5:"y x",11.6:"y x",12:"y x",12.1:"y x",15:"n",16:"n",17:"n",18:"n",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1",9.3:"a #1"},op_mini:{"5.0-8.0":"y x"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y x",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support in Safari refers to support for `object-fit` but not `object-position`."},usage_perc_y:61.69,usage_perc_a:9.78,ucprefix:false,parent:"",keywords:"objectfit,objectposition",ie_id:"objectfitandobjectposition",chrome_id:"5302669702856704",firefox_id:"",webkit_id:""},xhr2:{title:"XMLHttpRequest advanced features",description:"Adds more functionality to XHR (aka AJAX) requests like file uploads, transfer progress information and the ability to send form data. Previously known as [XMLHttpRequest Level 2](http://www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/), these features now appear simply in the XMLHttpRequest spec.",spec:"https://xhr.spec.whatwg.org/",status:"ls",links:[{url:"https://developer.mozilla.org/en/XMLHttpRequest/FormData",title:"MDN article on FormData"},{url:"https://github.com/3nr1c/jUri.js",title:"Polyfill for FormData object"},{url:"http://docs.webplatform.org/wiki/apis/xhr/XMLHttpRequest",title:"WebPlatform Docs"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"a #1 #2 #3",3.6:"a #1 #2 #3",4:"a #1 #2 #3",5:"a #1 #2 #3",6:"a #1 #2",7:"a #1 #2",8:"a #1 #2",9:"a #1 #2",10:"a #2",11:"a #2",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"u",5:"u",6:"u",7:"a #1 #2",8:"a #1 #2",9:"a #1 #2",10:"a #1 #2",11:"a #1 #2",12:"a #1 #2",13:"a #1 #2",14:"a #1 #2",15:"a #1 #2",16:"a #1 #2",17:"a #1 #2",18:"a #1 #2",19:"a #1 #2",20:"a #1 #2",21:"a #1 #2",22:"a #1 #2",23:"a #1 #2",24:"a #1 #2",25:"a #1 #2",26:"a #1 #2",27:"a #1 #2",28:"a #1 #2",29:"a #1",30:"a #1",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a #1 #2",5.1:"a #1 #2",6:"a #1 #2",6.1:"a #1",7:"a #1",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"a #1",16:"a #1",17:"a #1",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #1 #2","6.0-6.1":"a #1 #2","7.0-7.1":"a #1",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a #1 #2 #3",4:"a #1 #2 #3",4.1:"a #1 #2 #3","4.2-4.3":"a #1 #2 #3",4.4:"a #1 #2","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #1 #2",10:"a #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"a #1 #2"}},notes:"",notes_by_num:{1:"Partial support refers to not supporting `json` as `responseType`",2:"Partial support refers to not supporting `.timeout` and `.ontimeout`",3:"Partial support refers to not supporting `blob` as `responseType`"},usage_perc_y:68.35,usage_perc_a:20.72,ucprefix:false,parent:"",keywords:"formdata",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},minmaxwh:{title:"CSS min/max-width/height",description:"Method of setting a minimum or maximum width or height to an element. ",spec:"http://www.w3.org/TR/CSS21/visudet.html#min-max-widths",status:"rec",links:[{url:"http://code.google.com/p/ie7-js/",title:"JS library with support"},{url:"http://docs.webplatform.org/wiki/css/properties/min-width",title:"WebPlatform Docs"},{url:"http://www.impressivewebs.com/min-max-width-height-css/",title:"CSS Basics post"}],categories:["CSS2"],stats:{ie:{5.5:"p",6:"p",7:"y #1",8:"y #2",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"IE7 does not support `inherit` as a value on any of these properties.",2:"IE8 has some bugs with `max-width`/`height` combined with `overflow: auto`/`scroll`."},usage_perc_y:95.52,usage_perc_a:0,ucprefix:false,parent:"",keywords:"min-width,min-height,max-width,max-height",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},details:{title:"Details & Summary elements",description:"The <details> element generates a simple no-JavaScript widget to show/hide element contents, optionally by clicking on its child <summary> element.",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-details-element",status:"ls",links:[{url:"https://mathiasbynens.be/notes/html5-details-jquery",title:"jQuery fallback script"},{url:"https://gist.github.com/370590",title:"Fallback script"},{url:"http://html5doctor.com/summary-figcaption-element/",title:"HTML5 Doctor article"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-details",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/details",title:"WebPlatform Docs"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=591737",title:"Bug on Firefox support"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p",42:"p",43:"p",44:"p",45:"p",46:"p",47:"n d #1",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"p",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"y"},and_chr:{49:"y"},and_ff:{45:"p"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Enabled in Firefox through the `dom.details_element.enabled` flag"},usage_perc_y:72.03,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"detailssummary",chrome_id:"5348024557502464",firefox_id:"",webkit_id:""},"text-stroke":{title:"CSS text-stroke",description:"Method of declaring the outline (stroke) width and color for text.",spec:"http://developer.apple.com/library/safari/documentation/appleapplications/reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-_webkit_text_stroke",status:"unoff",links:[{url:"https://css-tricks.com/adding-stroke-to-web-text/",title:"Information & workarounds"},{url:"http://www.westciv.com/tools/textStroke/",title:"Live editor"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-text-stroke",title:"Mozilla Developer Network article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"u",47:"u",48:"u"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"a x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"n",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:'Does not yet appear in any W3C specification. Was briefly included in a spec as the "text-outline" property, but this was removed.',notes_by_num:{},usage_perc_y:63.46,usage_perc_a:0,ucprefix:false,parent:"",keywords:"textstroke,stroke-color,stroke-width,fill-color,text-outline",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"inline-block":{title:"CSS inline-block",description:"Method of displaying an element as a block while flowing it with text. ",spec:"http://www.w3.org/TR/CSS21/visuren.html#fixed-positioning",status:"rec",links:[{url:"http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/",title:"Blog post w/info"},{url:"http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/",title:"Info on cross browser support"},{url:"http://docs.webplatform.org/wiki/css/properties/display",title:"WebPlatform Docs"}],categories:["CSS2"],stats:{ie:{5.5:"a",6:"a #1",7:"a #1",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a x",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",
47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:'Only supported in IE6 and IE7 on elements with a display of "inline" by default. [Alternative properties](http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/) are available to provide complete cross-browser support.'},usage_perc_y:95.47,usage_perc_a:.1,ucprefix:false,parent:"",keywords:"inlineblock,display:inline-block",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},notifications:{title:"Web Notifications",description:"Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user).",spec:"https://notifications.spec.whatwg.org/",status:"ls",links:[{url:"http://www.html5rocks.com/tutorials/notifications/quick/",title:"HTML5 Rocks tutorial"},{url:"http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification",title:"Chromium API"},{url:"https://addons.mozilla.org/en-us/firefox/addon/221523/",title:"Add-on"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/notification",title:"MDN Notifications"},{url:"http://www.sitepoint.com/introduction-web-notifications-api/",title:"SitePoint article"},{url:"http://aurelio.audero.it/demo/web-notifications-api-demo.html",title:"Demo"},{url:"http://ukot.github.io/ie_web_notifications/",title:"Plug-in for support in IE"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"n d #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a x","4.4.3-4.4.4":"a x",47:"a x"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in `about:flags`"},usage_perc_y:42.45,usage_perc_a:2.92,ucprefix:false,parent:"",keywords:"",ie_id:"webnotifications",chrome_id:"5064350557536256",firefox_id:"",webkit_id:""},stream:{title:"getUserMedia/Stream API",description:"Method of accessing external device data (such as a webcam video stream). Formerly this was envisioned as the <device> element.",spec:"http://www.w3.org/TR/mediacapture-streams/",status:"wd",links:[{url:"https://dev.opera.com/blog/webcam-orientation-preview/",title:"Technology preview from Opera"},{url:"http://docs.webplatform.org/wiki/dom/Navigator/getUserMedia",title:"WebPlatform Docs"},{url:"http://blogs.windows.com/msedgedev/2015/05/13/announcing-media-capture-functionality-in-microsoft-edge/",title:"Media Capture functionality in Microsoft Edge"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1",49:"a x #1",50:"a x #1",51:"a x #1",52:"a x #1",53:"a x #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"u"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"a x #1",12.1:"a x #1",15:"n",16:"n",17:"n",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"a x #1"},bb:{7:"n",10:"a x #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"a x #1",12.1:"a x #1",36:"a x #1"},and_chr:{49:"a x #1"},and_ff:{45:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x #1"}},notes:"",notes_by_num:{1:"Blink-based (and some other) browsers support an older version of the spec that does not use `srcObject`. [See Chromium issue 387740](https://code.google.com/p/chromium/issues/detail?id=387740). Instead you need to convert a `MediaStream` object using `UR"},usage_perc_y:9.4,usage_perc_a:57.75,ucprefix:false,parent:"",keywords:"camera,device,getUserMedia,media stream,mediastream,Media Capture API",ie_id:"mediacaptureandstreams",chrome_id:"6067380039974912,6605041225957376",firefox_id:"",webkit_id:""},"svg-img":{title:"SVG in HTML img element",description:"Method of displaying SVG images in HTML using <img>.",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html",status:"ls",links:[{url:"http://blog.dholbert.org/2010/10/svg-as-image.html",title:"Blog post with examples"},{url:"http://www.codedread.com/blog/",title:"Blog with SVGs an images"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"a",4:"a #1",5:"a #1",5.1:"a #1",6:"a #1",6.1:"a #1",7:"a #1",7.1:"a #1",8:"a #1",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #1","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a #1",4:"a #1",4.1:"a #1","4.2-4.3":"a #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support refers to not supporting embedded images (data URIs) inside the SVG."},usage_perc_y:91.22,usage_perc_a:3.38,ucprefix:false,parent:"",keywords:"svg-as-img,svg-in-img",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},datalist:{title:"Datalist element",description:"Method of setting a list of options for a user to select in a text field, while leaving the ability to enter a custom value.",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-datalist-element",status:"ls",links:[{url:"http://hacks.mozilla.org/2010/11/firefox-4-html5-forms/",title:"Mozilla Hacks article"},{url:"http://afarkas.github.com/webshim/demos/",title:"HTML5 Library including datalist support"},{url:"https://developer.mozilla.org/en/HTML/Element/datalist",title:"MDN reference"},{url:"http://docs.webplatform.org/wiki/html/elements/datalist",title:"WebPlatform Docs"},{url:"http://demo.agektmr.com/datalist/",title:"Eiji Kitamura's options demos & tests"},{url:"http://github.com/thgreasi/datalist-polyfill",title:"Minimal Datalist polyfill w/tutorial"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"a #2",11:"a #2"},edge:{12:"a #2",13:"a #2",14:"a #2"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"a #3",5:"a #3",6:"a #3",7:"a #3",8:"a #3",9:"a #3",10:"a #3",11:"a #3",12:"a #3",13:"a #3",14:"a #3",15:"a #3",16:"a #3",17:"a #3",18:"a #3",19:"a #3",20:"a #3",21:"a #3",22:"a #3",23:"a #3",24:"a #3",25:"a #3",26:"a #3",27:"a #3",28:"a #3",29:"a #3",30:"a #3",31:"a #3",32:"a #3",33:"a #3",34:"a #3",35:"a #3",36:"a #3",37:"a #3",38:"a #3",39:"a #3",40:"a #3",41:"a #3",42:"a #3",43:"a #3",44:"a #3",45:"a #3",46:"a #3",47:"a #3",48:"a #3"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"a #1",43:"a #1",44:"a #1",45:"a #1",46:"a #1",47:"a #1",48:"a #1",49:"a #1",50:"a #1",51:"a #1",52:"a #1",53:"a #1"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"p"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p",8:"p","8.1-8.4":"p","9.0-9.2":"p",9.3:"p"},op_mini:{"5.0-8.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"y",47:"y"},bb:{7:"p",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"p"},and_chr:{49:"y"},and_ff:{45:"a #3"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"While most commonly used on text fields, datalists can also be used on other input types. IE11 supports the element on `range` fields. Chrome and Opera also support datalists to suggest given values on `range`, `color` and date/time fields. ",notes_by_num:{1:"Partial support refers to [a bug](https://code.google.com/p/chromium/issues/detail?id=375637) where long lists of items are unscrollable resulting in unselectable options.",2:"Partial support in IE refers to [significantly buggy behavior](http://playground.onereason.eu/2013/04/ie10s-lousy-support-for-datalists/) (IE11+ does send the input and change events upon selection). ",3:"Partial support refers to no support for datalists on non-text fields (e.g. number, [range](https://bugzilla.mozilla.org/show_bug.cgi?id=841942), [color](https://bugzilla.mozilla.org/show_bug.cgi?id=960984))."},usage_perc_y:26.61,usage_perc_a:47.97,ucprefix:false,parent:"forms",keywords:"list attribute",ie_id:"datalistelement",chrome_id:"6090950820495360",firefox_id:"",webkit_id:""},dataset:{title:"dataset & data-* attributes",description:"Method of applying and accessing custom data to elements.",spec:"https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes",status:"ls",links:[{url:"http://html5doctor.com/html5-custom-data-attributes/",title:"HTML5 Doctor article"},{url:"http://html5demos.com/dataset",title:"Demo using dataset"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/dom.js#dom-dataset",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/attributes/data-*",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset",title:"MDN Reference - dataset"},{url:"https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes",title:"MDN Guide - Using data-* attributes"}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a",3:"a",3.5:"a",3.6:"a",4:"a",5:"a",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"a",6:"a",7:"y #1",8:"y #1",9:"y #1",10:"y #1",11:"y #1",12:"y #1",13:"y #1",14:"y #1",15:"y #1",16:"y #1",17:"y #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y #1",24:"y #1",25:"y #1",26:"y #1",27:"y #1",28:"y #1",29:"y #1",30:"y #1",31:"y #1",32:"y #1",33:"y #1",34:"y #1",35:"y #1",36:"y #1",37:"y #1",38:"y #1",39:"y #1",40:"y #1",41:"y #1",42:"y #1",43:"y #1",44:"y #1",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"y #1",6:"y #1",6.1:"y #1",7:"y #1",7.1:"y #1",8:"y #1",9:"y #1",9.1:"y #1",TP:"y #1"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y #1",16:"y #1",17:"y #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y #1",24:"y #1",25:"y #1",26:"y #1",27:"y #1",28:"y #1",29:"y #1",30:"y #1",31:"y #1",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y #1","6.0-6.1":"y #1","7.0-7.1":"y #1",8:"y #1","8.1-8.4":"y #1","9.0-9.2":"y #1",9.3:"y #1"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y #1",4:"y #1",4.1:"y #1","4.2-4.3":"y #1",4.4:"y #1","4.4.3-4.4.4":"y #1",47:"y #1"},bb:{7:"y #1",10:"y #1"},op_mob:{10:"a",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y #1"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a",11:"y"},and_uc:{9.9:"y #1"}},notes:'Partial support refers to being able to use `data-*` attributes and access them using `getAttribute`. \r\n\r\n"Supported" refers to accessing the values using the `dataset` property. Current spec only refers to support on HTML elements, only some browsers also have support for SVG/MathML elements.',notes_by_num:{1:"While the HTML spec doesn't require it, these browsers also support `dataset` and `data-*` attributes on SVG elements, in compliance with [current plans for SVG2](http://www.w3.org/2015/01/15-svg-minutes.html#item03)"},usage_perc_y:88.36,usage_perc_a:7.21,ucprefix:false,parent:"",keywords:"DOMStringMap",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-grid":{title:"CSS Grid Layout",description:"Method of using a grid concept to lay out content, providing a mechanism for authors to divide available space for lay out into columns and rows using a set of predictable sizing behaviors",spec:"http://www.w3.org/TR/css3-grid-layout/",status:"wd",links:[{url:"http://blogs.msdn.com/b/ie/archive/2011/04/14/ie10-platform-preview-and-css-features-for-adaptive-layouts.aspx",title:"IE Blog post"},{url:"https://bugs.webkit.org/show_bug.cgi?id=60731",title:"Webkit (Chrome, Safari, etc.) feature request"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=616605",title:"Mozilla (Firefox) feature request"},{url:"https://github.com/codler/Grid-Layout-Polyfill",title:"Polyfill based on old spec"},{url:"https://github.com/FremyCompany/css-grid-polyfill/",title:"Polyfill based on new spec"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"a x #2",11:"a x #2"},edge:{12:"a x #2",13:"a x #2",14:"a x #2"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p d #3",41:"p d #3",42:"p d #3",43:"p d #3",44:"p d #3",45:"p d #3",46:"p d #3",47:"p d #3",48:"p d #3"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"p",26:"p",27:"p",28:"p",29:"p d #1",30:"p d #1",31:"p d #1",32:"p d #1",33:"p d #1",34:"p d #1",35:"p d #1",36:"p d #1",37:"p d #1",38:"p d #1",39:"p d #1",40:"p d #1",41:"p d #1",42:"p d #1",43:"p d #1",44:"p d #1",45:"p d #1",46:"p d #1",47:"p d #1",48:"p d #1",49:"p d #1",50:"p d #1",51:"p d #1",52:"p d #1",53:"p d #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"p",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"p d #1",29:"p d #1",30:"p d #1",31:"p d #1",32:"p d #1",33:"p d #1",34:"p d #1",35:"p d #1",36:"p d #1",37:"p d #1",38:"p d #1"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"p","7.0-7.1":"p",8:"p","8.1-8.4":"p","9.0-9.2":"p",9.3:"p"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"p",47:"p"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"p"},and_chr:{49:"p"},and_ff:{45:"p"},ie_mob:{10:"a x #2",11:"a x #2"},and_uc:{9.9:"n"}},notes:"Supported in WebKit Nightly with `-webkit-` prefix.\r\n\r\nEnabled by default in Firefox nightly and developer editions, but not yet on track to be enabled in beta or stable Firefox.",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags',2:"Partial support in IE refers to supporting an [older version](http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/) of the specification.",3:"Enabled in Firefox through the `layout.css.grid.enabled ` flag"},usage_perc_y:0,usage_perc_a:8.1,ucprefix:false,parent:"",keywords:"grids,grid-row,grid-column,display:grid",ie_id:"grid",chrome_id:"4589636412243968",firefox_id:"",webkit_id:"specification-css-grid-layout-level-1"},menu:{title:"Toolbar/context menu",description:"Method of defining a toolbar menu, a context menu or a list of (interactive) options using the <menu> element.",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-menu-element",status:"ls",links:[{url:"https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554309",title:"Demo"},{url:"https://github.com/swisnl/jQuery-contextMenu",title:"jQuery polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/events.js#event-contextmenu",title:"has.js test"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=746087",title:"Bug on Firefox support"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6508881-html5-menu-tag-contextmenu-attribute",title:"Microsoft Edge feature request on UserVoice"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"a #1",43:"a #1",44:"a #1",45:"a #1",46:"a #1",47:"a #1",48:"a #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n d #3",42:"n d #3",43:"n d #3",44:"n d #3",45:"n d #3",46:"n d #3",47:"n d #3",48:"n d #2",49:"n d #2",50:"n d #2",51:"n d #2",52:"n d #2",53:"n d #2"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n d #2",36:"n d #2",37:"n d #2",38:"n d #2"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"a #1 #4"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support in Firefox refers to being limited to context menus, not toolbar menus.",2:'Context menus supported in Chrome under the "Experimental Web Platform features" flag',3:'Context menus with a non-compliant syntax (`type=popup`) supported in Chrome under the "Experimental Web Platform features" flag',4:"Nested menus are not supported"},usage_perc_y:0,usage_perc_a:8.37,ucprefix:false,parent:"",keywords:"contextmenu,menuitem,command",ie_id:"menuelement",chrome_id:"",firefox_id:"",webkit_id:""},"css-zoom":{title:"CSS zoom",description:"Non-standard method of scaling content.",spec:"https://msdn.microsoft.com/en-us/library/ms531189(v=vs.85).aspx",status:"unoff",links:[{url:"https://css-tricks.com/almanac/properties/z/zoom/",title:"CSS Tricks"},{url:"https://docs.webplatform.org/wiki/css/properties/zoom",title:"WebPlatform Docs"},{url:"https://msdn.microsoft.com/en-us/library/ms531189(v=vs.85).aspx",title:"MSDN Library"},{url:"https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-SW1",title:"Safari Developer Library"},{url:"http://www.satzansatz.de/cssd/onhavinglayout.html",title:"Article explaining usage of zoom as the hack for fixing rendering bugs in IE6 and IE7."},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/zoom",title:"Mozilla Developer Network"}],categories:["CSS"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y #1",9:"y #1",10:"y #1",11:"y #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"y"}},notes:"Originally implemented only in Internet Explorer. Although several other browsers support the property, using `transform: scale()` is the recommended solution to scale content.",notes_by_num:{1:"The `-ms-zoom` property is an extension to CSS, and can be used as a synonym for `zoom` in IE8 Standards mode."},usage_perc_y:81.9,usage_perc_a:0,ucprefix:false,parent:"",keywords:"-ms-zoom,transform,-moz-transform,-ms-transform,-webkit-transform,-o-transform,scale,css-transforms",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},rem:{title:"rem (root em) units",description:"Type of unit similar to `em`, but relative only to the root element, not any parent element. Thus compounding does not occur as it does with `em` units.",spec:"http://www.w3.org/TR/css3-values/#font-relative-lengths",status:"cr",links:[{url:"http://snook.ca/archives/html_and_css/font-size-with-rem",title:"Article on usage"},{url:"https://github.com/chuckcarpenter/REM-unit-polyfill",title:"REM Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a #1",10:"a #1",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"a #2","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"IE 9 & IE 10 do not support `rem` units when used in the `font` shorthand property (the entire declaration is ignored) or when used on pseudo elements.",2:"iOS Safari 5.0-5.1 support `rem` but not in combination with media queries."},usage_perc_y:93.54,usage_perc_a:1.01,ucprefix:false,parent:"",keywords:"rems",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},ttf:{title:"TTF/OTF - TrueType and OpenType font support",description:"Support for the TrueType (.ttf) and OpenType (.otf) outline font formats in @font-face. ",spec:"http://developer.apple.com/fonts/TTRefMan/index.html",status:"other",links:[{url:"http://stackoverflow.com/questions/17694143/what-is-the-status-of-ttf-support-in-internet-explorer",title:"What is the status of TTF support in Internet Explorer?"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a #1",10:"a #1",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:'Partial support in IE9+ refers to the fonts only working [when set to be "installable"](http://blogs.msdn.com/b/ie/archive/2010/07/15/the-css-corner-better-web-typography-for-better-design.aspx). Support for this is tracked [here](https://status.modern.ie/crossdomainfontloading).'},usage_perc_y:82.27,usage_perc_a:7.45,ucprefix:false,parent:"fontface",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},touch:{title:"Touch events",description:"Method of registering when, where and how the interface is touched, for devices with a touch screen. These DOM events are similar to mousedown, mousemove, etc.",spec:"http://www.w3.org/TR/touch-events/",status:"rec",links:[{url:"http://www.quirksmode.org/mobile/tableTouch.html",title:"Detailed support tables"},{url:"http://www.quirksmode.org/m/tests/drag2.html",title:"Multi-touch demo"},{url:"http://schepers.cc/getintouch",title:"Information on the spec development"},{url:"http://msdn.microsoft.com/en-us/library/ie/hh673557(v=vs.85).aspx",title:"Internet Explorer's gesture and touch implementation."},{url:"http://github.com/CamHenlin/TouchPolyfill",title:"Touch polyfill for supporting touch events on Internet Explorer"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"p",11:"p"},edge:{12:"n d #3",13:"n d #3",14:"n d #3"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"n d #1",26:"n d #1",27:"n d #1",28:"n d #1",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"n d #1",43:"n d #1",44:"n d #1",45:"n d #1",46:"n d #1",47:"n d #1",48:"n d #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",
26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"p",11:"a #2"},and_uc:{9.9:"y"}},notes:"Internet Explorer implements Pointer Events specification which supports more input devices than Touch Events one.\r\n\r\nThere is a library on GitHub that is working toward bringing W3C touch events to IE 10 and 11: https://github.com/CamHenlin/TouchPolyfill \r\n\r\nRemoved support in Firefox refers to desktop Firefox only.",notes_by_num:{1:"Can be enabled in Firefox using the dom.w3c_touch_events.enabled flag (disabled by default for site compatibility reasons)",2:'Supported on IE11 Mobile for phones with "[Windows Phone 8.1 Update](http://blogs.msdn.com/b/ie/archive/2014/07/31/the-mobile-web-should-just-work-for-everyone.aspx)"',3:'Can be enabled in Edge using the "Enable touch events" flag under `about:flags`'},usage_perc_y:70,usage_perc_a:.84,ucprefix:false,parent:"",keywords:"touchstart,touchend,touchmove,touchenter,touchleave,touchcancel",ie_id:"touchevents",chrome_id:"6156165603917824",firefox_id:"",webkit_id:""},matchesselector:{title:"matches() DOM method",description:"Method of testing whether or not a DOM element matches a given selector. Formerly known (and largely supported with prefix) as matchesSelector.",spec:"https://dom.spec.whatwg.org/#dom-element-matches",status:"ls",links:[{url:"https://developer.mozilla.org/en/docs/Web/API/Element/matches",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/dom/HTMLElement/matches",title:"WebPlatform Docs"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6524858-unprefix-and-update-msmatchesselector-to-matches",title:"Microsoft Edge feature request on UserVoice"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a x",10:"a x",11:"a x"},edge:{12:"a x",13:"a x",14:"a x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"a x",4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"a x",5.1:"a x",6:"a x",6.1:"a x",7:"a x",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"a x",11.6:"a x",12:"a x",12.1:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0-7.1":"a x",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x","4.4.3-4.4.4":"a x",47:"y"},bb:{7:"a x",10:"a x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"a x",12.1:"a x",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a x",11:"a x"},and_uc:{9.9:"a x"}},notes:'Partial support refers to supporting the older specification\'s "matchesSelector" name rather than just "matches".',notes_by_num:{},usage_perc_y:65.1,usage_perc_a:24.54,ucprefix:false,parent:"",keywords:" matchesSelector",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"pointer-events":{title:"CSS pointer-events (for HTML)",description:'This CSS property, when set to "none" allows elements to not receive hover/click events, instead the event will occur on anything behind it. ',spec:"http://wiki.csswg.org/spec/css4-ui#pointer-events",status:"unoff",links:[{url:"http://robertnyman.com/2010/03/22/css-pointer-events-to-allow-clicks-on-underlying-elements/",title:"Article & tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-pointerevents",title:"has.js test"},{url:"https://github.com/kmewhort/pointer_events_polyfill",title:"Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"Already part of the SVG specification, and all SVG-supporting browsers appear to support the property on SVG elements.",notes_by_num:{},usage_perc_y:88.37,usage_perc_a:0,ucprefix:false,parent:"",keywords:"pointerevents,pointer-events:none",ie_id:"csspointerevents",chrome_id:"",firefox_id:"",webkit_id:""},blobbuilder:{title:"Blob constructing",description:"Construct Blobs (binary large objects) either using the BlobBuilder API (deprecated) or the Blob constructor.",spec:"http://www.w3.org/TR/FileAPI/#constructorBlob",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/BlobBuilder",title:"MDN article on BlobBuilder"},{url:"https://developer.mozilla.org/en-US/docs/DOM/Blob",title:"MDN article on Blobs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x","4.4.3-4.4.4":"a x",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a x"}},notes:"Partial support refers to only supporting the now deprecated BlobBuilder to create blobs.",notes_by_num:{},usage_perc_y:75.41,usage_perc_a:13.33,ucprefix:true,parent:"fileapi",keywords:"",ie_id:"blob",chrome_id:"5328783104016384",firefox_id:"",webkit_id:""},filereader:{title:"FileReader API",description:"Method of reading the contents of a File or Blob object into memory",spec:"http://www.w3.org/TR/FileAPI/#dfn-filereader",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/FileReader",title:"FileReader API"},{url:"http://docs.webplatform.org/wiki/apis/file/FileReader",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Does not support `readAsBinaryString`"},usage_perc_y:82.65,usage_perc_a:6.17,ucprefix:false,parent:"fileapi",keywords:"",ie_id:"filereader",chrome_id:"5171003185430528",firefox_id:"",webkit_id:""},filesystem:{title:"Filesystem & FileWriter API",description:"Method of reading and writing files to a sandboxed file system.",spec:"http://www.w3.org/TR/file-system-api/",status:"unoff",links:[{url:"http://www.html5rocks.com/en/tutorials/file/filesystem/",title:"HTML5 Rocks tutorial"},{url:"http://docs.webplatform.org/wiki/apis/filesystem",title:"WebPlatform Docs"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=997471",title:"Firefox tracking bug"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"The File API: Directories and System specification is no longer being maintained and support may be dropped in future versions.",notes_by_num:{},usage_perc_y:48.72,usage_perc_a:.07,ucprefix:false,parent:"",keywords:"filewriter,requestFileSystem",ie_id:"filewriter",chrome_id:"5452478162141184",firefox_id:"",webkit_id:""},bloburls:{title:"Blob URLs",description:"Method of creating URL handles to the specified File or Blob object.",spec:"http://www.w3.org/TR/FileAPI/#url",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/window.URL.createObjectURL",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:88.5,usage_perc_a:0,ucprefix:false,parent:"fileapi",keywords:"createobjecturl,revokeobjecturl",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},rellist:{title:"relList (DOMTokenList)",description:"Method of easily manipulating rel attribute values on elements, using the DOMTokenList object (similar to classList).",spec:"https://html.spec.whatwg.org/multipage/semantics.html#dom-a-rellist",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/DOM/DOMTokenList",title:"MDN - DOMTokenList"},{url:"https://github.com/jwilsson/domtokenlist",title:"domtokenlist polyfill"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:16.68,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},typedarrays:{title:"Typed Arrays",description:"JavaScript typed arrays provide a mechanism for accessing raw binary data much more efficiently.\r\n",spec:"http://www.ecma-international.org/ecma-262/6.0/#sec-typedarray-objects",status:"other",links:[{url:"https://developer.mozilla.org/en/javascript_typed_arrays",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a #2",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a #2","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"y"}},notes:"Includes support for ArrayBuffer objects.",notes_by_num:{1:"IE10 (and IE 10&11 mobile) does not support `Uint8ClampedArray`"},usage_perc_y:87.54,usage_perc_a:1.35,ucprefix:false,parent:"",keywords:"ES6,JavaScript,float64array,dataview,uint8array,arraybuffer",ie_id:"typedarrayses6",chrome_id:"5135818813341696",firefox_id:"",webkit_id:""},deviceorientation:{title:"DeviceOrientation & DeviceMotion events",description:"API for detecting orientation and motion events from the device running the browser.",spec:"http://www.w3.org/TR/orientation-event/",status:"wd",links:[{url:"http://www.html5rocks.com/en/tutorials/device/orientation/",title:"HTML5 Rocks tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-orientation",title:"has.js test"},{url:"http://html5labs.interoperabilitybridges.com/prototypes/device-orientation-events/device-orientation-events/info",title:"DeviceOrientation implementation prototype for IE10"},{url:"http://aurelio.audero.it/demo/device-orientation-api-demo.html",title:"Demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"p",4:"p",5:"p",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a"},chrome:{4:"n",5:"n",6:"n",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a",49:"a",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",36:"a"},and_chr:{49:"a"},and_ff:{45:"a"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"a"}},notes:"Partial support refers to the lack of compassneedscalibration event. Partial support also refers to the lack of devicemotion event support for Chrome 30- and Opera. Opera Mobile 14 lost the ondevicemotion event support. Firefox 3.6, 4 and 5 support the non-standard [MozOrientation](https://developer.mozilla.org/en/DOM/MozOrientation) event.",notes_by_num:{1:"`compassneedscalibration` supported in IE11 only for compatible devices with Windows 8.1+."},usage_perc_y:1.8,usage_perc_a:83.99,ucprefix:false,parent:"",keywords:"",ie_id:"deviceorientation,devicemotion",chrome_id:"5874690627207168,5556931766779904",firefox_id:"device-orientation",webkit_id:""},"script-defer":{title:"defer attribute for external scripts",description:"The boolean defer attribute on script elements allows the external JavaScript file to run when the DOM is loaded, without delaying page load first.",spec:"https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer",status:"ls",links:[{url:"https://developer.mozilla.org/en/HTML/Element/script#Attributes",title:"MDN article"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/script.js#script-defer",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/attributes/defer",title:"WebPlatform Docs"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in older IE refers to a buggy implementation (see issue)."},usage_perc_y:88.93,usage_perc_a:1.38,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"nav-timing":{title:"Navigation Timing API",description:"API for accessing timing information related to navigation and elements.",spec:"http://www.w3.org/TR/navigation-timing/",status:"rec",links:[{url:"https://developer.mozilla.org/en/API/navigationTiming",title:"MDN article"},{url:"http://www.html5rocks.com/en/tutorials/webperformance/basics/",title:"HTML5 Rocks tutorial"},{url:"http://docs.webplatform.org/wiki/apis/navigation_timing",title:"WebPlatform Docs"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y","8.1-8.4":"n","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Removed in iOS 8.1 due to poor performance.",notes_by_num:{},usage_perc_y:87.92,usage_perc_a:0,ucprefix:false,parent:"",keywords:"performance,performance.timing",ie_id:"navigationtimingapi",chrome_id:"5584144679567360",firefox_id:"",webkit_id:""},"audio-api":{title:"Web Audio API",description:"High-level JavaScript API for processing and synthesizing audio",spec:"http://www.w3.org/TR/webaudio/",status:"wd",links:[{url:"https://github.com/corbanbrook/audionode.js",title:"Polyfill to support Web Audio API in Firefox"},{url:"http://docs.webplatform.org/wiki/apis/webaudio",title:"WebPlatform Docs"},{url:"http://www.doboism.com/projects/webaudio-compatibility/",title:"Additional browser compatibility tests for specific features"},{url:"https://github.com/g200kg/WAAPISim",title:"Polyfill to enable Web Audio API through Firefox Audio Data api or flash"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Not all browsers with support for the Audio API also support media streams (e.g. microphone input). See the [getUserMedia/Streams API](/#feat=stream) data for support for that feature.\r\n\r\nFirefox versions < 25 support an alternative, deprecated audio API.\r\n\r\nChrome support [went through some changes](http://updates.html5rocks.com/2014/07/Web-Audio-Changes-in-m36) as of version 36.",notes_by_num:{},usage_perc_y:68.27,usage_perc_a:0,ucprefix:false,parent:"",keywords:"web-audio,webaudio,AudioContext,AudioBuffer,AudioNode",ie_id:"webaudioapi",chrome_id:"6261718720184320",firefox_id:"webaudio",webkit_id:""},"css-regions":{title:"CSS Regions",description:"Method of flowing content into multiple elements.",spec:"http://www.w3.org/TR/css3-regions/",status:"wd",links:[{url:"http://html.adobe.com/webstandards/cssregions/",title:"Adobe demos and samples"},{url:"http://msdn.microsoft.com/en-us/ie/hh272902#_CSSConnected",title:"IE10 developer guide info"},{url:"http://docs.webplatform.org/wiki/css/atrules/@region",title:"WebPlatform Docs"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=674802",
title:"Firefox feature request bug"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #1",11:"a x #1"},edge:{12:"a x #1",13:"a x #1",14:"a x #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"a x",16:"a x",17:"a x",18:"a x",19:"n d",20:"n d",21:"n d",22:"n d",23:"n d",24:"n d",25:"n d",26:"n d",27:"n d",28:"n d",29:"n d",30:"n d",31:"n d",32:"n d",33:"n d",34:"n d",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"a x #1",11:"a x #1"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{1:"Support is limited to using an iframe as a content source with the `-ms-flow-into: flow_name;` and `-ms-flow-from: flow_name;` syntax."},usage_perc_y:19.15,usage_perc_a:8.13,ucprefix:false,parent:"",keywords:"",ie_id:"regions",chrome_id:"5655612935372800",firefox_id:"",webkit_id:""},"spellcheck-attribute":{title:"Spellcheck attribute",description:"Attribute for `input`/`textarea` fields to enable/disable the browser's spellchecker.",spec:"https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/HTML/Controlling_spell_checking_in_HTML_formsControlling_spell_checking_in_HTML_forms",title:"MDN article"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",47:"a"},bb:{7:"a",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",36:"a"},and_chr:{49:"a"},and_ff:{45:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:'The partial support in mobile browsers results from their OS generally having built-in spell checking instead of using the wavy underline to indicate misspelled words. `spellcheck="false"` does not seem to have any effect in these browsers.\r\n\r\nBrowsers have different behavior in how they deal with spellchecking in combination with the the `lang` attribute. Generally spelling is based on the browser\'s language, not the language of the document.',notes_by_num:{},usage_perc_y:50.65,usage_perc_a:43.39,ucprefix:false,parent:"",keywords:"spelling",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},fullscreen:{title:"Full Screen API",description:"API for allowing content (like a video or canvas element) to take up the entire screen.",spec:"https://fullscreen.spec.whatwg.org/",status:"ls",links:[{url:"https://developer.mozilla.org/en/DOM/Using_full-screen_mode",title:"MDN article"},{url:"http://jlongster.com/2011/11/21/canvas.html",title:"Blog post"},{url:"http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/",title:"Mozilla hacks article"},{url:"http://docs.webplatform.org/wiki/dom/Element/requestFullscreen",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a x #3"},edge:{12:"a #3",13:"a #3",14:"a #3"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #1 #3",11:"a x #1 #3",12:"a x #1 #3",13:"a x #1 #3",14:"a x #1 #3",15:"a x #1 #3",16:"a x #1 #3",17:"a x #1 #3",18:"a x #1 #3",19:"a x #1 #3",20:"a x #1 #3",21:"a x #1 #3",22:"a x #1 #3",23:"a x #1 #3",24:"a x #1 #3",25:"a x #1 #3",26:"a x #1 #3",27:"a x #1 #3",28:"a x #1 #3",29:"a x #1 #3",30:"a x #1 #3",31:"a x #1 #3",32:"a x #1 #3",33:"a x #1 #3",34:"a x #1 #3",35:"a x #1 #3",36:"a x #1 #3",37:"a x #1 #3",38:"a x #1 #3",39:"a x #1 #3",40:"a x #1 #3",41:"a x #1 #3",42:"a x #1 #3",43:"a x #1 #3",44:"a x #1 #3",45:"a x #1 #3",46:"a x #1 #3",47:"a #3",48:"a #3"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"a x #1 #3",16:"a x #1 #3",17:"a x #1 #3",18:"a x #1 #3",19:"a x #1 #3",20:"a x #2 #3",21:"a x #2 #3",22:"a x #2 #3",23:"a x #2 #3",24:"a x #2 #3",25:"a x #2 #3",26:"a x #2 #3",27:"a x #2 #3",28:"a x #2 #3",29:"a x #2 #3",30:"a x #2 #3",31:"a x #2 #3",32:"a x #2 #3",33:"a x #2 #3",34:"a x #2 #3",35:"a x #2 #3",36:"a x #2 #3",37:"a x #2 #3",38:"a x #2 #3",39:"a x #2 #3",40:"a x #2 #3",41:"a x #2 #3",42:"a x #2 #3",43:"a x #2 #3",44:"a x #2 #3",45:"a x #2 #3",46:"a x #2 #3",47:"a x #2 #3",48:"a x #2 #3",49:"a x #2 #3",50:"a x #2 #3",51:"a x #2 #3",52:"a x #2 #3",53:"a x #2 #3"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a x #1 #3",6:"a x #2 #3",6.1:"a x #2 #3",7:"a x #2 #3",7.1:"a x #2 #3",8:"a x #2 #3",9:"a x #2 #3",9.1:"a x #2 #3",TP:"a x #2 #3"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"a x #2 #3",16:"a x #2 #3",17:"a x #2 #3",18:"a x #2 #3",19:"a x #2 #3",20:"a x #2 #3",21:"a x #2 #3",22:"a x #2 #3",23:"a x #2 #3",24:"a x #2 #3",25:"a x #2 #3",26:"a x #2 #3",27:"a x #2 #3",28:"a x #2 #3",29:"a x #2 #3",30:"a x #2 #3",31:"a x #2 #3",32:"a x #2 #3",33:"a x #2 #3",34:"a x #2 #3",35:"a x #2 #3",36:"a x #2 #3",37:"a x #2 #3",38:"a x #2 #3"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"a x #2"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x #2 #3"},and_chr:{49:"a x #2 #3"},and_ff:{45:"a x #1 #3"},ie_mob:{10:"n",11:"a x #3"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support refers to supporting an earlier draft of the spec.",2:"Partial support refers to not supporting `::backdrop`, and supporting the old `:full-screen` syntax rather than the standard `:fullscreen`.",3:"Partial support refers to not returning a Promise, as specified in the latest version of the spec."},usage_perc_y:.12,usage_perc_a:66.88,ucprefix:false,parent:"",keywords:"full-screen",ie_id:"fullscreenapi",chrome_id:"5259513871466496",firefox_id:"fullscreen",webkit_id:""},"css-exclusions":{title:"CSS Exclusions Level 1",description:"Exclusions defines how inline content flows around elements. It extends the content wrapping ability of floats to any block-level element.",spec:"http://www.w3.org/TR/css3-exclusions/",status:"wd",links:[{url:"https://msdn.microsoft.com/en-us/library/ie/hh673558(v=vs.85).aspx",title:"CSS Exclusions"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=674804",title:"Firefox tracking bug"},{url:"https://bugs.webkit.org/show_bug.cgi?id=57311",title:"WebKit tracking bug"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x"},edge:{12:"y x",13:"y x",14:"y x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"y x",11:"y x"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:8.1,usage_perc_a:0,ucprefix:false,parent:"",keywords:"floats,exclusions,wrap-flow,wrap-through",ie_id:"exclusions",chrome_id:"6296903092273152",firefox_id:"",webkit_id:""},requestanimationframe:{title:"requestAnimationFrame",description:"API allowing a more efficient way of running script-based animation, compared to traditional methods using timeouts. Also covers support for `cancelAnimationFrame`",spec:"https://html.spec.whatwg.org/multipage/webappapis.html#animation-frames",status:"ls",links:[{url:"http://paulirish.com/2011/requestanimationframe-for-smart-animating/",title:"Blog post"},{url:"http://hacks.mozilla.org/2011/08/animating-with-javascript-from-setinterval-to-requestanimationframe/",title:"Mozilla Hacks article"},{url:"http://docs.webplatform.org/wiki/dom/Window/requestAnimationFrame",title:"WebPlatform Docs"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #1 #2",11:"a x #1 #2",12:"a x #1 #2",13:"a x #1 #2",14:"a x #1 #2",15:"a x #1 #2",16:"a x #1 #2",17:"a x #1 #2",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"y x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support refers to lacking `cancelAnimationFrame` support.",2:"Supports `webkitCancelRequestAnimationFrame` rather than `webkitCancelAnimationFrame."},usage_perc_y:87.03,usage_perc_a:.23,ucprefix:false,parent:"",keywords:"",ie_id:"requestanimationframe",chrome_id:"5233400470306816",firefox_id:"",webkit_id:""},"input-range":{title:"Range input type",description:"Form field type that allows the user to select a value using a slider widget.",spec:"https://html.spec.whatwg.org/multipage/forms.html#range-state-(type=range)",status:"ls",links:[{url:"https://github.com/fryn/html5slider",title:"Polyfill for Firefox"},{url:"https://github.com/freqdec/fd-slider",title:"Cross-browser polyfill"},{url:"http://tutorialzine.com/2011/12/what-you-need-to-know-html5-range-input/",title:"Tutorial"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-range",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/range",title:"WebPlatform Docs"},{url:"https://github.com/andreruffert/rangeslider.js",title:"rangeslider.js polyfill"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Currently all Android browsers with partial support hide the slider input field by default. However, the element [can be styled](http://tiffanybbrown.com/2012/02/07/input-typerange-and-androids-stock-browser/) to be made visible and usable.",notes_by_num:{},usage_perc_y:88.36,usage_perc_a:.52,ucprefix:false,parent:"forms",keywords:'input type="range"',ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},matchmedia:{title:"matchMedia",description:"API for finding out whether or not a media query applies to the document.",spec:"http://www.w3.org/TR/cssom-view/#dom-window-matchmedia",status:"wd",links:[{url:"https://github.com/paulirish/matchMedia.js/",title:"matchMedia.js polyfill"},{url:"https://developer.mozilla.org/en/DOM/window.matchMedia",title:"MDN article"},{url:"https://developer.mozilla.org/en/CSS/Using_media_queries_from_code",title:"MDN tutorial"},{url:"http://docs.webplatform.org/wiki/css/media_queries/apis/matchMedia",title:"WebPlatform Docs"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:88.85,usage_perc_a:0,ucprefix:false,parent:"",keywords:"mediaquerylist",ie_id:"matchmedia",chrome_id:"4677872220372992",firefox_id:"",webkit_id:""},"input-datetime":{title:"Date and time input types",description:"Form field widget to easily allow users to enter a date, time or both, generally by using a calendar/time input widget.",spec:"https://html.spec.whatwg.org/multipage/forms.html#date-state-(type=date)",status:"ls",links:[{url:"http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-browser-datepickers-within-minutes/",title:"Datepicker tutorial w/polyfill"},{url:"https://github.com/zoltan-dulac/html5Forms.js",title:"Polyfill for HTML5 forms"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-datetime-local",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/date",title:"WebPlatform Docs"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=888320",title:"Bug on Firefox support"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"a #1",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #2","6.0-6.1":"a #2","7.0-7.1":"a #2",8:"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2",9.3:"a #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n #3",4.1:"n #3","4.2-4.3":"n #3",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Older versions of Safari provide date-formatted text fields, but no real calendar widget.\r\n\r\nChrome, Opera, and Microsoft Edge also support the `datetime-local` type for both date and time.\r\n\r\nThere used to also be a `datetime` type, but it was [dropped from the HTML spec](https://github.com/whatwg/html/issues/336) since only Presto ever fully supported it.",notes_by_num:{1:"Partial support in Microsoft Edge refers to supporting `date`, `week`, and `month` input types, and not `time` and `datetime-local`.",2:"Partial support in iOS Safari refers to not supporting `min`, `max` or `step` attributes",3:"Some modified versions of the Android 4.x browser do have support for date/time fields."},usage_perc_y:61.61,usage_perc_a:8.21,ucprefix:false,parent:"forms",keywords:'datepicker,timepicker,input type="date",input type="time",input date,datetime-local',ie_id:"daterelatedinputtypes,timerelatedinputtypes",chrome_id:"6640933999214592",firefox_id:"",webkit_id:""},"document-execcommand":{title:"Document.execCommand()",description:"Allows running commands to manipulate the contents of an editable region in a document switched to designMode",spec:"https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#execcommand()",status:"unoff",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand",title:"MDN"},{url:"http://codepen.io/netsi1964/pen/QbLLGW",title:"execCommand and queryCommandSupported demo"}],categories:["JS API"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"u",3.2:"u",4:"u",5:"u",5.1:"u",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"u","9.5-9.6":"u","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"u","5.0-5.1":"u","6.0-6.1":"u","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"n"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"n"}},notes:"To determine what commands are supported, see `Document.queryCommandSupported()`",notes_by_num:{},usage_perc_y:80.92,usage_perc_a:0,ucprefix:false,parent:"",keywords:"document,text,editor,commands,designMode",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"input-color":{title:"Color input type",description:"Form field allowing the user to select a color.",spec:"https://html.spec.whatwg.org/multipage/forms.html#color-state-(type=color)",status:"ls",links:[{url:"http://www.html5tutorial.info/html5-color.php",title:"Tutorial"},{url:"https://github.com/jonstipe/color-polyfill",title:"Polyfill"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/color",title:"WebPlatform Docs"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514216--input-type-color",title:"Microsoft Edge feature request on UserVoice"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"n",16:"n",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a"}},notes:"",notes_by_num:{},usage_perc_y:59.64,usage_perc_a:8.97,ucprefix:false,parent:"forms",keywords:'colour,input type="color"',ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"input-number":{title:"Number input type",description:"Form field type for numbers.",spec:"https://html.spec.whatwg.org/multipage/forms.html#number-state-(type=number)",status:"ls",links:[{url:"http://www.html5tutorial.info/html5-number.php",title:"Tutorial"},{url:"https://github.com/jonstipe/number-polyfill",title:"Polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-number",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/number",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"a #1"},edge:{12:"a #1",13:"a #1",14:"a #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"y #3",30:"y #3",31:"y #3",32:"y #3",33:"y #3",34:"y #3",35:"y #3",36:"y #3",37:"y #3",38:"y #3",39:"y #3",40:"y #3",41:"y #3",42:"y #3",43:"y #3",44:"y #3",45:"y #3",46:"y #3",47:"y #3",48:"y #3"},chrome:{4:"n",5:"n",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #1 #2","4.0-4.1":"a #1 #2","4.2-4.3":"a #1 #2","5.0-5.1":"a #1 #2","6.0-6.1":"a #1 #2","7.0-7.1":"a #1 #2",8:"a #1 #2","8.1-8.4":"a #1 #2","9.0-9.2":"a #1 #2",9.3:"a #1 #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"a #1 #2",4.1:"a #1 #2","4.2-4.3":"a #1 #2",4.4:"a #1 #2","4.4.3-4.4.4":"a #1 #2",47:"a #1 #2"},bb:{7:"n",10:"a"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"a"},and_chr:{49:"a"},and_ff:{45:"a #3"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:"",notes_by_num:{1:"UI widget does not include increment/decrement buttons.",2:'UI widget does not take the "step", "min" or "max" attributes into account.',3:"Firefox doesn't support [autocomplete content via datalist](http://codepen.io/graste/pen/bNoVKW) elements."},usage_perc_y:42.87,usage_perc_a:45.72,ucprefix:false,parent:"forms",keywords:'spinner,input type="number"',ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},getboundingclientrect:{title:"Element.getBoundingClientRect()",description:"Method to get the size and position of an element's bounding box, relative to the viewport.",spec:"http://www.w3.org/TR/cssom-view/#dom-element-getboundingclientrect",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect",title:"Mozilla Developer Network"},{url:"https://msdn.microsoft.com/en-us/library/ms536433(VS.85).aspx",title:"Microsoft Developer Network"}],categories:["JS API"],stats:{ie:{5.5:"a #1 #3",6:"a #1 #3",7:"a #1 #3",8:"a #1 #3",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"a #1 #4",3.5:"a #2 #4",3.6:"a #2 #3 #4",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"u",3.2:"u",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"u","9.5-9.6":"u","10.0-10.1":"a #1",10.5:"a #1",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"u","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"u",2.2:"u",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a #1",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"The returned object lacks `width` and `height` properties.",2:"Returns incorrect values for elements which have had CSS `transform`s applied to them.",3:"The returned object cannot have new properties added to it; it's not extensible.",4:"Existing properties of the returned object are immutable."},usage_perc_y:94.47,usage_perc_a:1.07,ucprefix:false,parent:"",keywords:"getBoundingClientRect,bounding,client,rect,DOMRect,box,cssom",
ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"iframe-sandbox":{title:"sandbox attribute for iframes",description:"Method of running external site pages with reduced privileges (e.g. no JavaScript) in iframes.",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-sandbox",status:"ls",links:[{url:"http://blog.chromium.org/2010/05/security-in-depth-html5s-sandbox.html",title:"Chromium blog article"},{url:"http://msdn.microsoft.com/en-us/hh563496",title:"MSDN article"},{url:"http://docs.webplatform.org/wiki/html/attributes/sandbox",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:88.51,usage_perc_a:.22,ucprefix:false,parent:"",keywords:"",ie_id:"iframesandboxattribute",chrome_id:"5715536319086592",firefox_id:"",webkit_id:""},"css-counters":{title:"CSS Counters",description:"Method of controlling number values in generated content, using the `counter-reset` and `counter-increment` properties.",spec:"http://www.w3.org/TR/CSS21/generate.html#counters",status:"rec",links:[{url:"http://onwebdev.blogspot.com/2012/02/css-counters-tutorial.html",title:"Tutorial and information"},{url:"https://developer.mozilla.org/en/CSS_Counters",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/properties/counter-reset",title:"WebPlatform Docs"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:95.48,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-resize":{title:"CSS resize property",description:"Method of allowing an element to be resized by the user, with options to limit to a given direction. ",spec:"http://www.w3.org/TR/css3-ui/#resize",status:"cr",links:[{url:"http://css-tricks.com/almanac/properties/r/resize/",title:"CSS Tricks info"},{url:"http://davidwalsh.name/textarea-resize",title:"On textarea resizing"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6513977-css-resize-property",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y x",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"a #1",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Presto-based Opera 12.10+ currently only supports the resize property for textarea elements."},usage_perc_y:59.66,usage_perc_a:.12,ucprefix:false,parent:"",keywords:"horizontal,vertical",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"input-placeholder":{title:"input placeholder attribute",description:"Method of setting placeholder text for text-like input fields, to suggest the expected inserted information.",spec:"https://html.spec.whatwg.org/multipage/forms.html#attr-input-placeholder",status:"ls",links:[{url:"http://www.zachleat.com/web/placeholder/",title:"Article on usage"},{url:"https://github.com/mathiasbynens/jquery-placeholder",title:"Polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-attr-placeholder",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/attributes/placeholder",title:"WebPlatform Docs"},{url:"https://code.google.com/p/android/issues/detail?id=24626",title:"Issue 24626: Placeholder text for an input type="}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #1",3.2:"a #1",4:"a #1",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"a #1",11.1:"a #1",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"a",4.1:"a","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support refers to lacking placeholder support on textarea elements."},usage_perc_y:88.58,usage_perc_a:.55,ucprefix:false,parent:"forms",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},spdy:{title:"SPDY protocol",description:"Networking protocol for low-latency transport of content over the web. Superseded by HTTP version 2.",spec:"http://http2.github.io/http2-spec/index.html",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/HTTP/2",title:"Wikipedia"},{url:"http://dev.chromium.org/spdy/spdy-whitepaper",title:"SPDY whitepaper"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"n"}},notes:"See also support for [HTTP2](http://caniuse.com/#feat=http2), successor of SPDY.\r\n\r\nChrome will be removing support in 2016 (in favor of HTTP2), other browsers likely to follow.",notes_by_num:{},usage_perc_y:77.39,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"http2",chrome_id:"5152586365665280",firefox_id:"",webkit_id:""},"css-repeating-gradients":{title:"CSS Repeating Gradients",description:"Method of defining a repeating linear or radial color gradient as a CSS image.",spec:"http://www.w3.org/TR/css3-images/#repeating-gradients",status:"cr",links:[{url:"https://developer.mozilla.org/en/CSS/repeating-linear-gradient",title:"MDN article"},{url:"http://www.css3files.com/gradient/#repeatinglineargradient",title:"Information page"},{url:"http://docs.webplatform.org/wiki/css/repeating-linear-gradient",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y x",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"a x",11.5:"a x",11.6:"y x",12:"y x",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"y x",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:'Firefox 10+, Chrome 26+ and Opera 11.6+ also support the new "to (side)" syntax.',notes_by_num:{},usage_perc_y:88.91,usage_perc_a:.01,ucprefix:false,parent:"css-gradients",keywords:"repeating-linear-gradient,repeating-radial-gradient",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-filters":{title:"CSS Filter Effects",description:"Method of applying filter effects (like blur, grayscale, brightness, contrast and hue) to elements, previously only possible by using SVG.",spec:"http://www.w3.org/TR/filter-effects-1/",status:"wd",links:[{url:"http://html5-demos.appspot.com/static/css/filters/index.html",title:"Demo file for WebKit browsers"},{url:"http://www.html5rocks.com/en/tutorials/filters/understanding-css/",title:"HTML5Rocks article"},{url:"http://dl.dropbox.com/u/3260327/angular/CSS3ImageManipulation.html",title:"Filter editor"},{url:"http://bennettfeely.com/filters/",title:"Filter Playground"}],categories:["CSS","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n d #2 #4",13:"a #4",14:"a #4"},firefox:{2:"n",3:"n",3.5:"n",3.6:"a #3",4:"a #3",5:"a #3",6:"a #3",7:"a #3",8:"a #3",9:"a #3",10:"a #3",11:"a #3",12:"a #3",13:"a #3",14:"a #3",15:"a #3",16:"a #3",17:"a #3",18:"a #3",19:"a #3",20:"a #3",21:"a #3",22:"a #3",23:"a #3",24:"a #3",25:"a #3",26:"a #3",27:"a #3",28:"a #3",29:"a #3",30:"a #3",31:"a #3",32:"a #3",33:"a #3",34:"a d #1",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:'Note that this property is significantly different from and incompatible with Microsoft\'s [older "filter" property](http://msdn.microsoft.com/en-us/library/ie/ms530752%28v=vs.85%29.aspx).',notes_by_num:{1:"Supported in Firefox under the `layout.css.filters.enabled` flag.",2:'Supported in MS Edge under the "Enable CSS filter property" flag.',3:"Partial support in Firefox before version 34 [only implemented the url() function of the filter property](https://developer.mozilla.org/en-US/docs/Web/CSS/filter#Browser_compatibility)",4:"Partial support refers to supporting filter functions, but not the `url` function."},usage_perc_y:78.34,usage_perc_a:1.73,ucprefix:false,parent:"",keywords:"sepia,hue-rotate,invert,saturate,filter:blur",ie_id:"filters",chrome_id:"5822463824887808",firefox_id:"",webkit_id:""},getcomputedstyle:{title:"getComputedStyle",description:"API to get the current computed CSS styles applied to an element. This may be the current value applied by an animation or as set by a stylesheet.",spec:"http://www.w3.org/TR/cssom/#dom-window-getcomputedstyle",status:"rec",links:[{url:"https://developer.mozilla.org/en/DOM/window.getComputedStyle",title:"MDN article"},{url:"http://ie.microsoft.com/testdrive/HTML5/getComputedStyle/",title:"Demo"},{url:"http://snipplr.com/view/13523/",title:"Polyfill for IE"},{url:"http://docs.webplatform.org/wiki/css/cssom/methods/getComputedStyle",title:"WebPlatform Docs"}],categories:["CSS3","DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"a #1",3.5:"a #1",3.6:"a #1",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a #2",3.2:"a #2",4:"a #2",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"a #2","9.5-9.6":"a #2","10.0-10.1":"a #2",10.5:"a #2",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a #2","4.0-4.1":"a #2","4.2-4.3":"a #2","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"a #2"},android:{2.1:"a #2",2.2:"a #2",2.3:"a #2",3:"a #2",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a #2",10:"y"},op_mob:{10:"a #2",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support refers to requiring the second parameter to be included.",2:"Partial support refers to not supporting getComputedStyle on pseudo-elements."},usage_perc_y:89.49,usage_perc_a:5.21,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},mp3:{title:"MP3 audio format",description:"Popular lossy audio compression format",spec:"http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html",status:"other",links:[{url:"https://en.wikipedia.org/wiki/MP3",title:"Wikipedia"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"a #1",3.6:"a #1",4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Support refers to use using the `audio` element, not other conditions.",notes_by_num:{1:"Partial support in older Firefox refers to being limited to certain operating systems."},usage_perc_y:89.19,usage_perc_a:.33,ucprefix:false,parent:"audio",keywords:"mpeg",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"word-break":{title:"CSS3 word-break",description:"Property to prevent or allow words to be broken over multiple lines between letters.",spec:"http://www.w3.org/TR/css3-text/#word-break",status:"wd",links:[{url:"https://developer.mozilla.org/en/CSS/word-break",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/properties/word-break",title:"WebPlatform Docs"}],categories:["CSS3"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a",39:"a",40:"a",41:"a",42:"a",43:"a",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",47:"y"},bb:{7:"a",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a"}},notes:"Partial support refers to supporting the `break-all` value, but not the `keep-all` value.\r\n\r\nChrome, Safari and other WebKit/Blink browsers also support the unofficial `break-word` value which is treated like `word-wrap: break-word`.",notes_by_num:{},usage_perc_y:72.68,usage_perc_a:17.5,ucprefix:false,parent:"",keywords:"break-all,keep-all",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"viewport-units":{title:"Viewport units: vw, vh, vmin, vmax",description:"Length units representing 1% of the viewport size for viewport width (vw), height (vh), the smaller of the two (vmin), or the larger of the two (vmax).",spec:"http://www.w3.org/TR/css3-values/#viewport-relative-lengths",status:"cr",links:[{url:"http://css-tricks.com/viewport-sized-typography/",title:"Blog post"},{url:"https://github.com/saabi/vminpoly",title:"Polyfill"},{url:"https://github.com/rodneyrehm/viewport-units-buggyfill",title:"Buggyfill - Polyfill that fixes buggy support"},{url:"http://blog.rodneyrehm.de/archives/34-iOS7-Mobile-Safari-And-Viewport-Units.html",title:"Back-Forward issue blog post"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514497-vmax-unit",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a #1",10:"a #2",11:"a #2"},edge:{12:"a #2",13:"a #2",14:"a #2"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"a #2",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"a #2",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"a #2 #3","7.0-7.1":"a #3",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #2",11:"a #2"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Partial support in IE9 refers to supporting "vm" instead of "vmin".',2:'Partial support refers to not supporting the "vmax" unit. ',3:'Partial support in iOS7 is due to buggy behavior of the "vh" unit (see workarounds: [1](https://gist.github.com/pburtchaell/e702f441ba9b3f76f587), [2](https://gist.github.com/BenMorel/e9e34c08360ebbbd0634)).'},usage_perc_y:69.41,usage_perc_a:9.06,ucprefix:false,parent:"",keywords:"vm,viewport-percentage",ie_id:"cssvmaxunit",chrome_id:"",firefox_id:"",webkit_id:""},contentsecuritypolicy:{title:"Content Security Policy 1.0",description:"Mitigate cross-site scripting attacks by whitelisting allowed sources of script, style, and other resources.",spec:"http://www.w3.org/TR/2012/CR-CSP-20121115/",status:"cr",links:[{url:"http://html5rocks.com/en/tutorials/security/content-security-policy/",title:"HTML5Rocks article"},{url:"http://content-security-policy.com/",title:"CSP Examples & Quick Reference"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a #1",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y #1",5:"y #1",6:"y #1",7:"y #1",8:"y #1",9:"y #1",10:"y #1",11:"y #1",12:"y #1",13:"y #1",14:"y #1",15:"y #1",16:"y #1",17:"y #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y #2",15:"y #2",16:"y #2",17:"y #2",18:"y #2",19:"y #2",20:"y #2",21:"y #2",22:"y #2",23:"y #2",24:"y #2",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a #2",6:"y #2",6.1:"y #2",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #2","6.0-6.1":"y #2","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y #2"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"y #2"}},notes:"The standard HTTP header is `Content-Security-Policy` which is used unless otherwise noted.",notes_by_num:{1:"Supported through the `X-Content-Security-Policy` header",2:"Supported through the `X-Webkit-CSP` header"},usage_perc_y:80.27,usage_perc_a:7.04,ucprefix:false,parent:"",keywords:"csp,security,header",ie_id:"contentsecuritypolicy",chrome_id:"5205088045891584",firefox_id:"",webkit_id:""},pagevisibility:{title:"Page Visibility",description:"JavaScript API for determining whether a document is visible on the display",spec:"http://www.w3.org/TR/page-visibility/",status:"rec",links:[{url:"https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API",title:"MDN article"},{url:"https://docs.webplatform.org/wiki/dom/Document/visibilityState",title:"WebPlatform Docs"},{url:"http://www.sitepoint.com/introduction-to-page-visibility-api/",title:"SitePoint article"},{url:"http://aurelio.audero.it/demo/page-visibility-api-demo.html",title:"Demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{
3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x","4.4.3-4.4.4":"y x",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:87.19,usage_perc_a:0,ucprefix:false,parent:"",keywords:"visibilitystate",ie_id:"pagevisibilityapi",chrome_id:"5689697795833856",firefox_id:"page-visibility",webkit_id:""},stricttransportsecurity:{title:"Strict Transport Security",description:"Declare that a website is only accessible over a secure connection (HTTPS).",spec:"https://tools.ietf.org/html/rfc6797",status:"other",links:[{url:"http://dev.chromium.org/sts",title:"Chromium article"},{url:"https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security",title:"MDN article"},{url:"https://www.owasp.org/index.php/HTTP_Strict_Transport_Security",title:"OWASP article"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"The HTTP header is 'Strict-Transport-Security'.",notes_by_num:{1:"IE 11 added support [in an update](http://blogs.windows.com/msedgedev/2015/06/09/http-strict-transport-security-comes-to-internet-explorer-11-on-windows-8-1-and-windows-7/) on June 9, 2015"},usage_perc_y:77.17,usage_perc_a:0,ucprefix:false,parent:"",keywords:"sts,hsts,security,header",ie_id:"httpstricttransportsecurityhsts",chrome_id:"4941480133132288",firefox_id:"",webkit_id:""},"style-scoped":{title:"Scoped CSS",description:"Allows CSS rules to be scoped to part of the document, based on the position of the style element.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#attr-style-scoped",status:"ls",links:[{url:"https://github.com/PM5544/scoped-polyfill",title:"Polyfill"},{url:"http://html5doctor.com/the-scoped-attribute/",title:"HTML5 Doctor article"},{url:"http://updates.html5rocks.com/2012/03/A-New-Experimental-Feature-style-scoped",title:"HTML5Rocks article"}],categories:["CSS","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n d #1",21:"n d #1",22:"n d #1",23:"n d #1",24:"n d #1",25:"n d #1",26:"n d #1",27:"n d #1",28:"n d #1",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:17.14,usage_perc_a:0,ucprefix:false,parent:"",keywords:"scope",ie_id:"scopedstyles",chrome_id:"5374137958662144",firefox_id:"",webkit_id:""},"svg-fragment":{title:"SVG fragment identifiers",description:"Method of displaying only a part of an SVG image by defining a view ID or view box dimensions as the file's fragment identifier.",spec:"http://www.w3.org/TR/SVG/linking.html#SVGFragmentIdentifiers",status:"rec",links:[{url:"http://www.broken-links.com/2012/08/14/better-svg-sprites-with-fragment-identifiers/",title:"Blog post"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"a #1",43:"a #1",44:"a #1",45:"a #1",46:"a #1",47:"a #1",48:"a #1",49:"a #1",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"a #1",8:"a #1",9:"n",9.1:"n",TP:"n"},opera:{9:"u","9.5-9.6":"u","10.0-10.1":"a",10.5:"a",10.6:"a",11:"a",11.1:"a",11.5:"a",11.6:"a",12:"a",12.1:"y",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"a #1"},bb:{7:"n",10:"a #1"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"y",36:"a #1"},and_chr:{49:"a #1"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support refers to support inside `<img>` but not as CSS `background-image`"},usage_perc_y:22.13,usage_perc_a:48.35,ucprefix:false,parent:"",keywords:"fragments,sprite,svg,use",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},outline:{title:"CSS outline",description:"The CSS outline property is a shorthand property for setting one or more of the individual outline properties outline-style, outline-width and outline-color in a single rule. In most cases the use of this shortcut is preferable and more convenient.",spec:"http://www.w3.org/TR/CSS2/ui.html#propdef-outline",status:"rec",links:[{url:"http://dev.w3.org/csswg/css3-ui/#outline",title:"CSS Basic User Interface Module Level 3"},{url:"https://developer.mozilla.org/en-US/docs/CSS/outline",title:"Mozilla Developer Network: outline"}],categories:["CSS2"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"y",9:"y #1",10:"y #1",11:"y #1"},edge:{12:"y #1",13:"y #1",14:"y #1"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y #1",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Also supports the value of `invert` for `outline-color`. (support of this value is optional for browsers)"},usage_perc_y:90.56,usage_perc_a:0,ucprefix:false,parent:"",keywords:"-moz-outline,outline-width,outline-style,outline-color",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},download:{title:"Download attribute",description:"When used on an anchor, this attribute signifies that the browser should download the resource the anchor points to rather than navigate to it.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#downloading-resources",status:"ls",links:[{url:"http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download",title:"HTML5Rocks post"},{url:"http://html5-demos.appspot.com/static/a.download.html",title:"Demo: creating a text file and downloading it."},{url:"https://bugs.webkit.org/show_bug.cgi?id=102914",title:"WebKit feature request bug"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:60.61,usage_perc_a:0,ucprefix:false,parent:"",keywords:"download,a.download,a[download],download attribute",ie_id:"adownloadattribute",chrome_id:"6473924464345088",firefox_id:"",webkit_id:""},pointer:{title:"Pointer events",description:'This specification integrates various inputs from mice, touchscreens, and pens, making separate implementations no longer necessary and authoring for cross-device pointers easier. Not to be mistaken with the unrelated "pointer-events" CSS property.',spec:"http://www.w3.org/TR/pointerevents/",status:"rec",links:[{url:"http://blogs.msdn.com/b/ie/archive/2011/09/20/touch-input-for-ie10-and-metro-style-apps.aspx",title:"Implementation of Pointer Events in IE10"},{url:"http://blogs.msdn.com/b/eternalcoding/archive/2013/01/16/hand-js-a-polyfill-for-supporting-pointer-events-on-every-browser.aspx",title:"Hand.js, the polyfill for browsers only supporting Touch Events"},{url:"http://blogs.msdn.com/b/davrous/archive/2013/02/20/handling-touch-in-your-html5-apps-thanks-to-the-pointer-events-of-ie10-and-windows-8.aspx",title:"Article & tutorial"},{url:"http://deeptissuejs.com",title:"Abstraction library for pointer events"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #1",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p d #2",42:"p d #2",43:"p d #2",44:"p d #2",45:"p d #2",46:"a #2",47:"a #2",48:"a #2"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p",42:"p",43:"p",44:"p",45:"p",46:"p",47:"p",48:"p",49:"p",50:"p",51:"p",52:"p",53:"p"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"p"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p",8:"p","8.1-8.4":"p","9.0-9.2":"p",9.3:"p"},op_mini:{"5.0-8.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"p",47:"p"},bb:{7:"p",10:"p"},op_mob:{10:"n",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"p"},and_chr:{49:"p"},and_ff:{45:"p"},ie_mob:{10:"a x",11:"y"},and_uc:{9.9:"p"}},notes:"Firefox, starting with version 28, provides the 'dom.w3c_pointer_events.enabled' flag to support this specification.",notes_by_num:{1:"Partial support in IE10 refers the lack of pointerenter and pointerleave events.",2:"Firefox support is disabled by default and [only supports mouse input](https://hacks.mozilla.org/2015/08/pointer-events-now-in-firefox-nightly/). On Windows only, touch can be enabled with the `layers.async-pan-zoom.enabled` and `dom.w3c_touch_events.enabled` flags"},usage_perc_y:7.49,usage_perc_a:.73,ucprefix:false,parent:"",keywords:"pointerdown,pointermove,pointerup,pointercancel,pointerover,pointerout,pointerenter,pointerleave",ie_id:"pointerevents",chrome_id:"4504699138998272",firefox_id:"",webkit_id:""},"user-select-none":{title:"CSS user-select: none",description:"Method of preventing text/element selection using CSS. ",spec:"https://drafts.csswg.org/css-ui-4/#valdef-user-select-none",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/CSS/user-select",title:"MDN article"},{url:"http://css-tricks.com/almanac/properties/u/user-select/",title:"CSS Tricks article"},{url:"http://msdn.microsoft.com/en-us/library/ie/hh781492(v=vs.85).aspx",title:"MSDN Documentation"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"y x"},edge:{12:"y x",13:"y x",14:"y x"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"y x",2.2:"y x",2.3:"y x",3:"y x",4:"y x",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",47:"y x"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"y x"},ie_mob:{10:"y x",11:"y x"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:89.05,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"input-file-accept":{title:"accept attribute for file input",description:'Allows a filter to be defined for what type of files a user may pick with from an `<input type="file">` dialog',spec:"https://html.spec.whatwg.org/multipage/forms.html#attr-input-accept",status:"ls",links:[{url:"http://www.wufoo.com/html5/attributes/07-accept.html",title:"Demo & information"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"u",6:"u",7:"u",8:"u",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"u",22:"u",23:"u",24:"u",25:"u",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"a #1",6.1:"a #1",7:"a #1",7.1:"a #1",8:"a #1",9:"a #1",9.1:"a #1",TP:"a #1"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n #3","4.0-4.1":"n #3","4.2-4.3":"n #3","5.0-5.1":"n #3","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a #2",4:"a #2",4.1:"a #2","4.2-4.3":"a #2",4.4:"n #3","4.4.3-4.4.4":"n #3",47:"n #3"},bb:{7:"a #2",10:"a #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a #2"},and_chr:{49:"a #2"},and_ff:{45:"n"},ie_mob:{10:"n #3",11:"a #4"},and_uc:{9.9:"n"}},notes:"Not supported means any file can be picked as if the `accept` attribute was not set, unless otherwise noted.\r\n\r\nOn Windows, files that do not apply are hidden. On OSX they are grayed out and disabled.",notes_by_num:{1:"Supports the type format (e.g. `image/*`) but not the extension format (e.g. `.png`)",2:"Offers appropriate file locations/input based on format type, but does not prevent other files from being selected.",3:"Does not allow any files to be picked at all",4:"Supports the type format but does not allow any file to be picked when using the extension format"},usage_perc_y:45.79,usage_perc_a:21.72,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},webp:{title:"WebP image format",description:"Image format that supports lossy and lossless compression, as well as animation and alpha transparency.",spec:"https://developers.google.com/speed/webp/",status:"unoff",links:[{url:"https://developers.google.com/speed/webp/",title:"Official website"},{url:"http://antimatter15.github.io/weppy/demo.html",title:"Polyfill for browsers with WebM support"},{url:"http://libwebpjs.appspot.com/",title:"Decoder in JS"},{url:"http://webpjs.appspot.com/",title:"Polyfill for browsers with or without WebM support (i.e. IE6-IE9, Safari/iOS version 6.1 and below; Firefox versions 24 and bel"},{url:"https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp",title:"Official website FAQ - Which web browsers natively support WebP?"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"p",38:"p",39:"p",40:"p",41:"p",42:"p",43:"p",44:"p",45:"p",46:"p",47:"p",48:"p"},chrome:{4:"n",5:"n",6:"p",7:"p",8:"p",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"p",11:"p",11.1:"a #1",11.5:"a #1",11.6:"a #1",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"a #1",4.1:"a #1","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"a #1",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"p"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Animated WebP images are supported in Chrome 32+ and Opera 19+.",notes_by_num:{1:"Partial support in older Chrome, Opera and Android refers to browsers not supporting lossless and alpha versions of WebP."},usage_perc_y:66.24,usage_perc_a:.69,ucprefix:false,parent:"",keywords:"",ie_id:"webpimageformatsupport",chrome_id:"6471725441089536,4785074604081152",firefox_id:"",webkit_id:""},"input-autocomplete-onoff":{title:"autocomplete attribute: on & off values",description:"The `autocomplete` attribute for `input` elements indicates to the browser whether a value should or should not be autofilled when appropriate.",spec:"https://html.spec.whatwg.org/multipage/forms.html#autofill",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autocomplete",title:"MDN article"}],categories:["DOM"],stats:{ie:{5.5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"a #1"},edge:{12:"a #1",13:"a #1",14:"a #1"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"a #3",31:"a #3",32:"a #3",33:"a #3",34:"a #3",35:"a #3",36:"a #3",37:"a #3",38:"a #3",39:"a #3",40:"a #3",41:"a #3",42:"a #3",43:"a #3",44:"a #3",45:"a #3",46:"a #3",47:"a #3",48:"a #3"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #2",42:"a #2",43:"a #2",44:"a #2",45:"a #2",46:"a #2",47:"a #2",48:"a #2",49:"a #2",50:"a #2",51:"a #2",52:"a #2",53:"a #2"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"y",6:"y",6.1:"y",7:"a #5",7.1:"a #5",8:"a #5",9:"a #5",9.1:"a #5",TP:"a #5"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y #4","6.0-6.1":"y #4","7.0-7.1":"y #4",8:"y #4","8.1-8.4":"y #4","9.0-9.2":"y #4",9.3:"y #4"},op_mini:{"5.0-8.0":"y #4"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #5",11:"a #5"},and_uc:{9.9:"y #4"}},notes:"This support information does not include support for other `autocomplete` values.\r\n\r\nAs described in detail below, many modern browsers ignore the `off` value on certain fields in certain cases intentionally in order to give the user more control over autofilling fields. One example is the use of password managers.",notes_by_num:{1:"Partial support refers to ignoring the `off` value for password fields. [see related blog post](http://blogs.msdn.com/b/ieinternals/archive/2009/09/10/troubleshooting-stored-login-problems-in-ie.aspx)",2:'Partial support in Chrome refers to the browser intentionally ignoring `autocomplete="off"` when the user uses the browser\'s autofill functionality. [see bug](https://code.google.com/p/chromium/issues/detail?id=468153#c29)',3:'Partial support in Firefox refers to ignoring `autocomplete="off"` for login forms. [see bug](https://bugzilla.mozilla.org/show_bug.cgi?id=956906)',4:"Browser does not display previously submitted values as options with `on` value.",5:"Safari ignores the `off` value for [username, email and password fields](http://stackoverflow.com/questions/22661977/disabling-safari-autofill-on-usernames-and-passwords)"},usage_perc_y:46.6,usage_perc_a:48.77,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"intrinsic-width":{title:"Intrinsic & Extrinsic Sizing",description:"Allows for the heights and widths to be specified in intrinsic values using the `fill`, `max-content`, `min-content`, and `fit-content` properties.",spec:"http://www.w3.org/TR/css3-sizing/",status:"wd",links:[{url:"http://demosthenes.info/blog/662/Design-From-the-Inside-Out-With-CSS-MinContent",title:"Min-Content tutorial"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"a x #1 #2 #3",3.5:"a x #1 #2 #3",3.6:"a x #1 #2 #3",4:"a x #1 #2 #3",5:"a x #1 #2 #3",6:"a x #1 #2 #3",7:"a x #1 #2 #3",8:"a x #1 #2 #3",9:"a x #1 #2 #3",10:"a x #1 #2 #3",11:"a x #1 #2 #3",12:"a x #1 #2 #3",13:"a x #1 #2 #3",14:"a x #1 #2 #3",15:"a x #1 #2 #3",16:"a x #1 #2 #3",17:"a x #1 #2 #3",18:"a x #1 #2 #3",19:"a x #1 #2 #3",20:"a x #1 #2 #3",21:"a x #1 #2 #3",22:"a x #1 #2 #3",23:"a x #1 #2 #3",24:"a x #1 #2 #3",25:"a x #1 #2 #3",26:"a x #1 #2 #3",27:"a x #1 #2 #3",28:"a x #1 #2 #3",29:"a x #1 #2 #3",30:"a x #1 #2 #3",31:"a x #1 #2 #3",32:"a x #1 #2 #3",33:"a x #1 #2 #3",34:"a x #1 #2 #3",35:"a x #1 #2 #3",36:"a x #1 #2 #3",37:"a x #1 #2 #3",38:"a x #1 #2 #3",39:"a x #1 #2 #3",40:"a x #1 #2 #3",41:"a x #1 #2 #3",42:"a x #1 #2 #3",43:"a x #1 #2 #3",44:"a x #1 #2 #3",45:"a x #1 #2 #3",46:"a x #1 #2 #3",47:"a x #1 #2 #3",48:"a x #1 #2 #3"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y x #3",23:"y x #3",24:"y x #3",25:"y x #3",26:"y x #3",27:"y x #3",28:"y x #3",29:"y x #3",30:"y x #3",31:"y x #3",32:"y x #3",33:"y x #3",34:"y x #3",35:"y x #3",36:"y x #3",37:"y x #3",38:"y x #3",39:"y x #3",40:"y x #3",41:"y x #3",42:"y x #3",43:"y x #3",44:"y x #3",45:"y x #3",46:"y #3 #4",47:"y #3 #4",48:"y #3 #4",49:"y #3 #4",50:"y #3 #4",51:"y #3 #4",52:"y #3 #4",53:"y #3 #4"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"a x #1 #3",7:"a x #1 #3",7.1:"a x #1 #3",8:"a x #1 #3",9:"a x #3",9.1:"a x #3",TP:"a x #3"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y x #3",16:"y x #3",17:"y x #3",18:"y x #3",19:"y x #3",20:"y x #3",21:"y x #3",22:"y x #3",23:"y x #3",24:"y x #3",25:"y x #3",26:"y x #3",27:"y x #3",28:"y x #3",29:"y x #3",30:"y x #3",31:"y x #3",32:"y x #3",33:"y #3 #4",34:"y #3",35:"y #3 #4",36:"y #3 #4",37:"y #3 #4",38:"y #3 #4"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"a x #1 #3",8:"a x #1 #3","8.1-8.4":"a x #1 #3","9.0-9.2":"a x #3",9.3:"a x #3"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y x #3","4.4.3-4.4.4":"y x #3",47:"y #3 #4"},bb:{7:"n",10:"y x #3"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y #3 #4"},and_chr:{49:"y #3 #4"},and_ff:{45:"a x #1 #2 #3"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Prefixes are on the values, not the property names (e.g. -webkit-min-content)\r\n\r\nOlder webkit browsers also support the unofficial `intrinsic` value which acts the same as `max-content`.",notes_by_num:{1:"Does not support for height/min-height/max-height property, only width. [see test case](http://codepen.io/shshaw/pen/Kiwaz) [Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=567039)",2:'Firefox currently supports the "-moz-available" property rather than "-moz-fill".',3:'Does not support for "flex-basis" property. [see specs](http://www.w3.org/TR/2015/WD-css-flexbox-1-20150514/#flex-basis-property).\r\n[Blink bug](https://codereview.chromium.org/1304853002/),[Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1055887)',
4:"This does not yet unprefix fill-available (aka fill)[See bug](https://chromium.googlesource.com/chromium/blink.git/+/bf119cdfece210e69c9a99af06f1b9981e2a1bc2), because the [CSSWG](https://lists.w3.org/Archives/Public/www-style/2015Aug/0127.html) is not ready for that yet."},usage_perc_y:51.4,usage_perc_a:18.7,ucprefix:false,parent:"",keywords:"fill,fill-available,max-content,min-content,fit-content,contain-floats,intrinsic,extrinsic,sizing",ie_id:"cssintrinsicsizing",chrome_id:"5901353784180736",firefox_id:"",webkit_id:""},cryptography:{title:"Web Cryptography",description:"JavaScript API for performing basic cryptographic operations in web applications",spec:"http://www.w3.org/TR/WebCryptoAPI/",status:"cr",links:[{url:"http://www.slideshare.net/Channy/the-history-and-status-of-web-crypto-api",title:"The History and Status of Web Crypto API"},{url:"http://research.microsoft.com/en-us/projects/msrjscrypto/",title:"Microsoft Research JavaScript Cryptography Library"},{url:"http://bitwiseshiftleft.github.io/sjcl/",title:"Cross-browser cryptography library"},{url:"https://docs.google.com/spreadsheet/ccc?key=0AiAcidBZRLxndE9LWEs2R1oxZ0xidUVoU3FQbFFobkE#gid=1",title:"Support for recommended algorithms in Firefox"},{url:"https://github.com/Netflix/NfWebCrypto",title:"Polyfill by Netflix with partial support"},{url:"https://github.com/GlobalSign/PKI.js",title:"PKI.js - another crypto library for Public Key Infrastructure applications"},{url:"https://diafygi.github.io/webcrypto-examples/",title:"Test suite for various algorithms/methods"},{url:"https://github.com/vibornoff/webcrypto-shim",title:"Web Cryptography API shim for IE11 and Safari - set of bugfixes and workarounds of prefixed api implementations"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"a x #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"n d #2",33:"n d #2",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"p",33:"p",34:"p",35:"p",36:"p",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p",7.1:"y x #3",8:"y x #3",9:"y x #3",9.1:"y x #3",TP:"y x #3"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p",8:"y x #3","8.1-8.4":"y x #3","9.0-9.2":"y x #3",9.3:"y x #3"},op_mini:{"5.0-8.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"p",47:"y"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"y"},and_chr:{49:"y"},and_ff:{45:"p"},ie_mob:{10:"p",11:"a x #1"},and_uc:{9.9:"p"}},notes:"Many browsers support the `[crypto.getRandomValues()](#feat=getrandomvalues)` method, but not actual cryptography functionality under `crypto.subtle`. \r\n\r\nFirefox also has support for [unofficial features](https://developer.mozilla.org/en-US/docs/JavaScript_crypto). \r\n\r\nIn Chrome the API is only usable over secure connections. ([corresponding bug](https://code.google.com/p/chromium/issues/detail?id=373032))",notes_by_num:{1:"Support in IE11 is based an older version of the specification.",2:"Supported in Firefox behind the `dom.webcrypto.enabled` flag.",3:"Supported in Safari using the `crypto.webkitSubtle` prefix."},usage_perc_y:66,usage_perc_a:6.31,ucprefix:false,parent:"",keywords:"subtle,subtlecrypto",ie_id:"webcryptoapi",chrome_id:"5030265697075200",firefox_id:"",webkit_id:"specification-webcrypto"},template:{title:"HTML templates",description:"Method of declaring a portion of reusable markup that is parsed but not rendered until cloned.",spec:"https://html.spec.whatwg.org/multipage/scripting.html#the-template-element",status:"ls",links:[{url:"http://www.html5rocks.com/en/tutorials/webcomponents/template/",title:"HTML5Rocks - HTML's New template Tag"},{url:"http://polymer-project.org",title:"Polymer project (polyfill & web components framework)"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:70.19,usage_perc_a:0,ucprefix:false,parent:"",keywords:"web components, template",ie_id:"templateelement",chrome_id:"5207287069147136",firefox_id:"html-templates",webkit_id:"feature-template-element"},opus:{title:"Opus",description:"Royalty-free open audio codec by IETF, which incorporated SILK from Skype and CELT from Xiph.org, to serve higher sound quality and lower latency at the same bitrate.",spec:"https://tools.ietf.org/html/rfc6716",status:"other",links:[{url:"https://hacks.mozilla.org/2012/07/firefox-beta-15-supports-the-new-opus-audio-format/",title:"Introduction of Opus by Mozilla"},{url:"http://www.ietf.org/mail-archive/web/rtcweb/current/msg04953.html",title:"Google's statement about the use of VP8 and Opus codec for WebRTC standard"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6513488-ogg-vorbis-and-opus-audio-formats-support-firefox",title:"Microsoft Edge feature request on UserVoice"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Support refers to use using the `audio` element, not other conditions.\r\n\r\nFor Opera the Linux version may be able to play it when the GStreamer module is up to date and the served mime-type is 'audio/ogg'.",notes_by_num:{},usage_perc_y:39.43,usage_perc_a:0,ucprefix:false,parent:"audio",keywords:"",ie_id:"opusaudioplayback",chrome_id:"4891189287321600",firefox_id:"",webkit_id:""},jpegxr:{title:"JPEG XR image format",description:"The latest JPEG image format of Joint Photographic Experts Group which boasts better compression and supports lossless compression, alpha channel, and 48-bit deep color over normal jpg format.",spec:"http://www.itu.int/rec/T-REC-T.832",status:"other",links:[{url:"http://msdn.microsoft.com/en-us/library/windows/desktop/hh707223(v=vs.85).aspx",title:"Microsoft JPEG XR Codec Overview"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=500500",title:"Firefox support bug"},{url:"https://code.google.com/p/chromium/issues/detail?id=56908",title:"Chrome support bug (marked as WONTFIX)"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:8.63,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"channel-messaging":{title:"Channel messaging",description:"Method for having two-way communication between browsing contexts (using MessageChannel)",spec:"https://html.spec.whatwg.org/multipage/comms.html#channel-messaging",status:"ls",links:[{url:"https://dev.opera.com/articles/view/window-postmessage-messagechannel/#channel",title:"An Introduction to HTML5 web messaging"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n d #1",27:"n d #1",28:"n d #1",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"u",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Supported in Firefox behind the `dom.messageChannel.enabled` flag. Reported to not work in web workers before version 41."},usage_perc_y:86.44,usage_perc_a:0,ucprefix:false,parent:"x-doc-messaging",keywords:"",ie_id:"messagechannels",chrome_id:"6710044586409984",firefox_id:"",webkit_id:""},"css3-tabsize":{title:"CSS3 tab-size",description:"Method of customizing the width of the tab character. Only effective using 'white-space: pre' or 'white-space: pre-wrap'.",spec:"http://www.w3.org/TR/css3-text/#tab-size",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/tab-size",title:"MDN article"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6524689-tab-size-property",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"a #1",7:"a #1",7.1:"a #1",8:"a #1",9:"a #1",9.1:"a #1",TP:"a #1"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"a x #1",11:"a x #1",11.1:"a x #1",11.5:"a x #1",11.6:"a x #1",12:"a x #1",12.1:"a x #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"a #1",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1",9.3:"a #1"},op_mini:{"5.0-8.0":"a x #1"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a #1","4.4.3-4.4.4":"a #1",47:"a #1"},bb:{7:"a #1",10:"a #1"},op_mob:{10:"n",11:"a x #1",11.1:"a x #1",11.5:"a x #1",12:"a x #1",12.1:"a x #1",36:"y"},and_chr:{49:"y"},and_ff:{45:"a x #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial refers to supporting `<integer>` but not `<length>` values."},usage_perc_y:46.77,usage_perc_a:28.44,ucprefix:false,parent:"",keywords:"tab-size,tab-width",ie_id:"csstabsizeproperty",chrome_id:"",firefox_id:"",webkit_id:""},mutationobserver:{title:"Mutation Observer",description:"Method for observing and reacting to changes to the DOM. Replaces MutationEvents, which is deprecated.",spec:"https://dom.spec.whatwg.org/#mutation-observers",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver",title:"MutationObserver from MDN"},{url:"https://github.com/webcomponents/webcomponentsjs",title:"Polyfill"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y x",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"p",4.1:"p","4.2-4.3":"p",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"p",11:"y"},and_uc:{9.9:"y x"}},notes:"When the content of a node with a single CharacterData child node is changed by innerHTML attribute and the node have a single different one as a result, WebKit browsers consider it as a characterData mutation of the child CharacterData node, while other browsers think it as a childList mutation of the parent node.",notes_by_num:{},usage_perc_y:86.4,usage_perc_a:0,ucprefix:false,parent:"",keywords:"MutationObserver",ie_id:"mutationobservers",chrome_id:"5021194726146048",firefox_id:"",webkit_id:""},"css-selection":{title:"::selection CSS pseudo-element",description:"The ::selection CSS pseudo-element applies rules to the portion of a document that has been highlighted (e.g., selected with the mouse or another pointing device) by the user.",spec:"http://www.w3.org/TR/css-pseudo-4/#selectordef-selection",status:"wd",links:[{url:"http://quirksmode.org/css/selectors/selection.html",title:"::selection test"},{url:"http://docs.webplatform.org/wiki/css/selectors/pseudo-elements/::selection",title:"WebPlatform Docs"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y x"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:71.35,usage_perc_a:0,ucprefix:false,parent:"",keywords:"::selection,selection",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-placeholder":{title:"::placeholder CSS pseudo-element",description:"The ::placeholder pseudo-element represents placeholder text in an input field: text that represents the input and provides a hint to the user on how to fill out the form. For example, a date-input field might have the placeholder text `YYYY/MM/DD` to clarify that numeric dates are to be entered in year-month-day order.",spec:"http://dev.w3.org/csswg/css-pseudo-4/#placeholder-pseudo",status:"wd",links:[{url:"http://msdn.microsoft.com/en-us/library/ie/hh772745(v=vs.85).aspx",title:"MSDN article"},{url:"http://css-tricks.com/snippets/css/style-placeholder-text/",title:"CSS-Tricks article with all prefixes"},{url:"http://wiki.csswg.org/ideas/placeholder-styling",title:"CSSWG discussion"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/::-moz-placeholder",title:"MDN article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a x"},edge:{12:"a x",13:"a x",14:"a x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",10:"a x",11:"a x",12:"a x",13:"a x",14:"a x",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"a x",35:"a x",36:"a x",37:"a x",38:"a x",39:"a x",40:"a x",41:"a x",42:"a x",43:"a x",44:"a x",45:"a x",46:"a x",47:"a x",48:"a x",49:"a x",50:"a x",51:"a x",52:"a x",53:"a x"},safari:{3.1:"n",3.2:"n",4:"n",5:"a x",5.1:"a x",6:"a x",6.1:"a x",7:"a x",7.1:"a x",8:"a x",9:"a x",9.1:"a x",TP:"a x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a x",16:"a x",17:"a x",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"a x",35:"a x",36:"a x",37:"a x",38:"a x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0-7.1":"a x",8:"a x","8.1-8.4":"a x","9.0-9.2":"a x",9.3:"a x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a x",4.1:"a x","4.2-4.3":"a x",4.4:"a x","4.4.3-4.4.4":"a x",47:"a x"},bb:{7:"a x",10:"a x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x"},and_chr:{49:"a x"},and_ff:{45:"y x"},ie_mob:{10:"a x",11:"a x"},and_uc:{9.9:"a x"}},notes:"Partial support refers to using alternate names:\r\n`::-webkit-input-placeholder` for (Chrome/Safari/Opera)\r\n`:-ms-input-placeholder` for IE. \r\n`::-ms-input-placeholder` for Edge (also supports webkit prefix)",notes_by_num:{1:"Firefox 18 and below supported the `:-moz-placeholder` pseudo-class rather than the `::-moz-placeholder` pseudo-element."},usage_perc_y:8.19,usage_perc_a:80.74,ucprefix:false,parent:"",keywords:"::placeholder,placeholder",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-deviceadaptation":{title:"CSS Device Adaptation",description:"A standard way to override the size of viewport in web page using the `@viewport` rule, standardizing and replacing Apple's own popular `<meta>` viewport implementation.",spec:"http://www.w3.org/TR/css-device-adapt/",status:"wd",links:[{url:"https://dev.opera.com/articles/view/an-introduction-to-meta-viewport-and-viewport/",title:"Introduction to meta viewport and @viewport in Opera Mobile"},{url:"http://msdn.microsoft.com/en-us/library/ie/hh708740(v=vs.85).aspx",title:"Device adaptation in Internet Explorer 10"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6777420-unprefix-and-support-all-viewport-properties",title:"Microsoft Edge feature request on UserVoice"},{url:"https://code.google.com/p/chromium/issues/detail?id=155477",title:"Chrome tracking bug"},{url:"https://bugs.webkit.org/show_bug.cgi?id=95959",title:"WebKit tracking bug"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=747754",title:"Mozilla tracking bug"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #1",11:"a x #1"},edge:{12:"a x #1",13:"a x #1",14:"a x #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n d",30:"n d",31:"n d",32:"n d",33:"n d",34:"n d",35:"n d",36:"n d",37:"n d",38:"n d",39:"n d",40:"n d",41:"n d",42:"n d",43:"n d",44:"n d",45:"n d",46:"n d",47:"n d",48:"n d",49:"n d",50:"n d",51:"n d",52:"n d",53:"n d"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"a x #2"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"a x #2",11.1:"a x #2",11.5:"a x #2",12:"a x #2",12.1:"a x #2",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"a x #1",11:"a x #1"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"IE only supports the 'width' and 'height' properties.",2:"Opera Mobile and Opera Mini only support the 'orientation' property."},usage_perc_y:0,usage_perc_a:13.02,ucprefix:false,parent:"",keywords:"viewport",ie_id:"",chrome_id:"4737164243894272",firefox_id:"",webkit_id:""},"text-emphasis":{title:"text-emphasis styling",description:"Method of using small symbols next to each glyph to emphasize a run of text, commonly used in East Asian languages. The `text-emphasis` shorthand, and its `text-emphasis-style` and `text-emphasis-color` longhands, can be used to apply marks to the text. The `text-emphasis-position` property, which inherits separately, allows setting the emphasis marks' position with respect to the text.",spec:"https://drafts.csswg.org/css-text-decor-3/#text-emphasis-property",status:"cr",links:[{url:"https://github.com/zmmbreeze/jquery.emphasis/",title:"A javascript fallback for CSS3 emphasis mark."},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514536-text-decoration-styling",title:"Microsoft Edge feature request on UserVoice"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-emphasis",title:"Mozilla Developer Network"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n d #2",46:"n d #2",47:"n d #2",48:"n d #2"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1",49:"a x #1",50:"a x #1",51:"a x #1",52:"a x #1",53:"a x #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"a x #1",7:"a x #1",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a x #1","4.4.3-4.4.4":"a x #1",47:"a x #1"},bb:{7:"n",10:"a x #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x #1"},and_chr:{49:"a x #1"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x #1"}},notes:"Some old WebKit browsers (like Chrome 24) support `-webkit-text-emphasis`, but does not support CJK languages and is therefore considered unsupported.",notes_by_num:{1:"Partial support refers to incorrect support for `-webkit-text-emphasis-position`. These browsers support `over` and `under` as values, but not the added `left` and `right` values required by the spec.",2:"Can be enabled in Firefox using the `layout.css.text-emphasis.enabled` flag"},usage_perc_y:10.04,usage_perc_a:60.42,ucprefix:false,parent:"",keywords:"text-emphasis,text-emphasis-position,text-emphasis-style,text-emphasis-color",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},midi:{title:"Web MIDI API",description:"The Web MIDI API specification defines a means for web developers to enumerate, manipulate and access MIDI devices",spec:"http://webaudio.github.io/web-midi-api/",status:"wd",links:[{url:"https://github.com/cwilso/WebMIDIAPIShim",title:"Polyfill"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=836897",
title:"Firefox bug"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:46.62,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"webmidiapi",chrome_id:"4923613069180928",firefox_id:"",webkit_id:""},"canvas-blending":{title:"Canvas blend modes",description:"Method of defining the effect resulting from overlaying two layers on a Canvas element.",spec:"http://www.w3.org/TR/compositing-1/#blending",status:"cr",links:[{url:"http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/",title:"Blog post"}],categories:["Canvas"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:70.11,usage_perc_a:0,ucprefix:false,parent:"canvas",keywords:"",ie_id:"compositingandblendingincanvas2d",chrome_id:"",firefox_id:"",webkit_id:""},clipboard:{title:"Clipboard API",description:"API to provide copy, cut and paste events as well as provide access to the OS clipboard.",spec:"http://www.w3.org/TR/clipboard-apis/",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent",title:"MDN page on ClipboardEvent"},{url:"https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/",title:"Guide on cross-platform clipboard access"}],categories:["JS API"],stats:{ie:{5.5:"a #1 #2 #5",6:"a #1 #2 #5",7:"a #1 #2 #5",8:"a #1 #2 #5",9:"a #1 #2 #5",10:"a #1 #2 #5",11:"a #1 #2 #5"},edge:{12:"a #1 #2 #5",13:"a #1 #2 #5",14:"a #1 #2 #5"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"a #2 #3",23:"a #2 #3",24:"a #2 #3",25:"a #2 #3",26:"a #2 #3",27:"a #2 #3",28:"a #2 #3",29:"a #2 #3",30:"a #2 #3",31:"a #2 #3",32:"a #2 #3",33:"a #2 #3",34:"a #2 #3",35:"a #2 #3",36:"a #2 #3",37:"a #2 #3",38:"a #2 #3",39:"a #2 #3",40:"a #2 #3",41:"a #6",42:"a #6",43:"a #6",44:"a #6",45:"a #6",46:"a #6",47:"a #6",48:"a #6"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"a #3 #5",14:"a #3 #5",15:"a #3 #5",16:"a #3 #5",17:"a #3 #5",18:"a #3 #5",19:"a #3 #5",20:"a #3 #5",21:"a #3 #5",22:"a #3 #5",23:"a #3 #5",24:"a #3 #5",25:"a #3 #5",26:"a #3 #5",27:"a #3 #5",28:"a #3 #5",29:"a #3 #5",30:"a #3 #5",31:"a #3 #5",32:"a #3 #5",33:"a #3 #5",34:"a #3 #5",35:"a #3 #5",36:"a #3 #5",37:"a #3 #5",38:"a #3 #5",39:"a #3 #5",40:"a #3 #5",41:"a #3 #5",42:"a #3 #5",43:"a #5 #7",44:"a #5 #7",45:"a #5 #7",46:"a #5 #7",47:"a #5 #7",48:"a #5 #7",49:"a #5 #7",50:"a #5 #7",51:"a #5 #7",52:"a #5 #7",53:"a #5 #7"},safari:{3.1:"u",3.2:"u",4:"a #2 #3 #5",5:"a #2 #3 #5",5.1:"a #2 #3 #5",6:"a #2 #3 #5",6.1:"a #2 #3 #5",7:"a #2 #3 #5",7.1:"a #2 #3 #5",8:"a #2 #3 #5",9:"a #2 #3 #5",9.1:"a #2 #3 #5",TP:"a #2 #5"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"u",12.1:"a #3",15:"a #3 #5",16:"a #3 #5",17:"a #3 #5",18:"a #3 #5",19:"a #3 #5",20:"a #3 #5",21:"a #3 #5",22:"a #3 #5",23:"a #3 #5",24:"a #3 #5",25:"a #3 #5",26:"a #3 #5",27:"a #3 #5",28:"a #3 #5",29:"a #3 #5",30:"a #5 #7",31:"a #5 #7",32:"a #5 #7",33:"a #5 #7",34:"a #5 #7",35:"a #5 #7",36:"a #5 #7",37:"a #5 #7",38:"a #5 #7"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #2 #3 #5","6.0-6.1":"a #2 #3 #5","7.0-7.1":"a #2 #3 #5",8:"a #2 #3 #5","8.1-8.4":"a #2 #3 #5","9.0-9.2":"a #2 #3 #5",9.3:"a #2 #3 #5"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a #2 #5","4.4.3-4.4.4":"a #2 #5",47:"a #2 #5"},bb:{7:"n",10:"a #2 #5"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"u",36:"a #4 #5"},and_chr:{49:"a #5"},and_ff:{45:"a #4"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Internet Explorer will display a security prompt for access to the OS clipboard.\r\n\r\nChrome 42+ and Opera 29+ support clipboard reading/writing only when part of a user action (click, keydown, etc)\r\n\r\nFirefox users [can enable support](https://developer.mozilla.org/en-US/docs/Midas/Security_preferences) with a security preference setting.",notes_by_num:{1:"Only supports `Text` and `URL` data types and uses [a non-standard method](http://msdn.microsoft.com/en-us/library/ie/ms535220%28v=vs.85%29.aspx) of interacting with the clipboard.",2:"Only fires `copy` event on a valid selection and only `cut` and `paste` in focused editable fields.",3:"Only supports OS clipboard reading/writing via shortcut keys, not through `document.execCommand()`.",4:"Only supports `paste` event (on focused editable field).",5:"Does not support the `ClipboardEvent` constructor",6:"Supports `cut` & `copy` events without a focused editable field, but not `paste` (presumably for security reasons)",7:"Supports `cut` & `copy` events without a focused editable field, but does not fire `paste` with `document.execCommand('paste')` "},usage_perc_y:0,usage_perc_a:78.9,ucprefix:false,parent:"",keywords:"cut,copy,paste,clipboarddata,clipboardevent",ie_id:"clipboardapi",chrome_id:"",firefox_id:"",webkit_id:""},rtcpeerconnection:{title:"WebRTC Peer-to-peer connections",description:"Method of allowing two users to communicate directly, browser to browser using the RTCPeerConnection API.",spec:"https://w3c.github.io/webrtc-pc/",status:"wd",links:[{url:"http://www.webrtc.org/",title:"WebRTC Project site"},{url:"https://temasys.atlassian.net/wiki/display/TWPP/WebRTC+Plugins",title:"Plug-in for support in IE & Safari"},{url:"http://www.html5labs.com/prototypes/object-rtc/object-rtc/info",title:"Prototype implementation for ORTC"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x",39:"y x",40:"y x",41:"y x",42:"y x",43:"y x",44:"y x",45:"y x",46:"y x",47:"y x",48:"y x",49:"y x",50:"y x",51:"y x",52:"y x",53:"y x"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y x",38:"y x"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y x"},bb:{7:"n",10:"n #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y x"},and_chr:{49:"y x"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Microsoft is working on a compatible implementation known as [ObjectRTC](http://blogs.msdn.com/b/ie/archive/2014/10/27/bringing-interoperable-real-time-communications-to-the-web.aspx)",notes_by_num:{1:"BlackBerry 10 recognizes RTCPeerConnection but real support is unconfirmed."},usage_perc_y:56.73,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"webrtcwebrtcv10api",chrome_id:"6612462929444864",firefox_id:"webrtc",webkit_id:"specification-webrtc"},"css3-cursors":{title:"CSS3 Cursors (original values)",description:"CSS3 cursor values added in the 2004 spec, including none, context-menu, cell, vertical-text, alias, copy, no-drop, not-allowed, nesw-resize, nwse-resize, col-resize, row-resize and all-scroll. ",spec:"http://www.w3.org/TR/css3-ui/#cursor",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/cursor",title:"MDN Documentation"}],categories:["CSS3"],stats:{ie:{5.5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"y",10:"y",11:"y"},edge:{12:"a #2",13:"a #2",14:"a #2"},firefox:{2:"a",3:"a",3.5:"a",3.6:"a",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"a #2","9.5-9.6":"a #2","10.0-10.1":"a #2",10.5:"a #2",10.6:"a #2",11:"a #2",11.1:"a #2",11.5:"a #2",11.6:"a #2",12:"a #2",12.1:"a #2",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"u"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support refers to no support for the alias, cell, copy, ew-resize, ns-resize, nesw-resize, nwse-resize or context-menu cursors.",2:"Partial support refers to not supporting 'none' nor a URI."},usage_perc_y:49.81,usage_perc_a:2.37,ucprefix:false,parent:"",keywords:"cursors, pointers",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css3-cursors-newer":{title:"CSS3 Cursors: zoom-in & zoom-out",description:"Support for `zoom-in`, `zoom-out` values for the CSS3 `cursor` property.",spec:"http://www.w3.org/TR/css3-ui/#cursor",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/cursor",title:"MDN Documentation"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y x",3:"y x",3.5:"y x",3.6:"y x",4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y x",5:"y x",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y x",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y x",5.1:"y x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"y",12:"y",12.1:"y",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"y x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:44.63,usage_perc_a:0,ucprefix:false,parent:"",keywords:"cursors, pointers",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},webvtt:{title:"WebVTT - Web Video Text Tracks",description:"Format for marking up text captions for multimedia resources.",spec:"https://w3c.github.io/webvtt/",status:"wd",links:[{url:"http://www.html5rocks.com/en/tutorials/track/basics/",title:"Getting Started With the Track Element"},{url:"https://dev.opera.com/articles/view/an-introduction-to-webvtt-and-track/",title:"An Introduction to WebVTT and track"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n d",25:"n d",26:"n d",27:"n d",28:"n d",29:"n d",30:"n d",31:"y #1",32:"y #1",33:"y #1",34:"y #1",35:"y #1",36:"y #1",37:"y #1",38:"y #1",39:"y #1",40:"y #1",41:"y #1",42:"y #1",43:"y #1",44:"y #1",45:"y #1",46:"y #1",47:"y #1",48:"y #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"n"}},notes:"WebVTT must be used with the <track> element.",notes_by_num:{1:"Firefox currently lacks support for the `::cue` pseudo-element. [See bug #865395.](https://bugzilla.mozilla.org/show_bug.cgi?id=865395)"},usage_perc_y:77.54,usage_perc_a:0,ucprefix:false,parent:"video",keywords:"captions,track,vtt,subtitles",ie_id:"",chrome_id:"6719115557339136",firefox_id:"",webkit_id:""},promises:{title:"Promises",description:"A promise represents the eventual result of an asynchronous operation.",spec:"http://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects",status:"other",links:[{url:"http://promises-aplus.github.io/promises-spec/",title:"Promises/A+ spec"},{url:"http://www.chromestatus.com/features/5681726336532480",title:"Chromium dashboard - ES6 Promises"},{url:"http://www.html5rocks.com/en/tutorials/es6/promises/",title:"JavaScript Promises: There and back again - HTML5 Rocks"},{url:"https://github.com/jakearchibald/ES6-Promises",title:"A polyfill for ES6-style Promises"}],categories:["JS API"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"p",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"a",28:"a",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"p",26:"p",27:"p",28:"p",29:"p",30:"p",31:"p",32:"a",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"p",6.1:"p",7:"p",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"p","9.5-9.6":"p","10.0-10.1":"p",10.5:"p",10.6:"p",11:"p",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"p",16:"p",17:"p",18:"p",19:"a",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"p","4.4.3-4.4.4":"y",47:"y"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"p"}},notes:"",notes_by_num:{},usage_perc_y:67.54,usage_perc_a:.08,ucprefix:false,parent:"",keywords:"futures",ie_id:"",chrome_id:"5681726336532480",firefox_id:"promise",webkit_id:""},"css-sticky":{title:"CSS position:sticky",description:'Keeps elements positioned as "fixed" or "relative" depending on how it appears in the viewport. As a result the element is "stuck" when necessary while scrolling.',spec:"https://drafts.csswg.org/css-position/#sticky-pos",status:"unoff",links:[{url:"http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit",title:"HTML5Rocks"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/position",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/properties/position",title:"WebPlatform Docs"},{url:"https://github.com/filamentgroup/fixed-sticky",title:"Polyfill"},{url:"https://github.com/wilddeer/stickyfill",title:"Another polyfill"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n d #1",27:"n d #1",28:"n d #1",29:"n d #1",30:"n d #1",31:"n d #1",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n d #2",24:"n d #2",25:"n d #2",26:"n d #2",27:"n d #2",28:"n d #2",29:"n d #2",30:"n d #2",31:"n d #2",32:"n d #2",33:"n d #2",34:"n d #2",35:"n d #2",36:"n d #2",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y x",7:"y x",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox by setting the about:config preference layout.css.sticky.enabled to true",2:'Enabled in Chrome 23-36 through the "experimental Web Platform features" flag in chrome://flags (removed in 37+)'},usage_perc_y:18.04,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"positionsticky",chrome_id:"6190250464378880",firefox_id:"",webkit_id:"feature-position:-sticky"},dialog:{title:"Dialog element",description:"Method of easily creating custom dialog boxes to display to the user with modal or non-modal options. Also includes a `::backdrop` pseudo-element for behind the element.",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-dialog-element",status:"ls",links:[{url:"https://github.com/GoogleChrome/dialog-polyfill",title:"Polyfill"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n d #2",20:"n d #2",21:"n d #2",22:"n d #2",23:"n d #2",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled through the "Experimental Web Platform features" flag in `chrome://flags`',2:'Enabled through the "Experimental Web Platform features" flag in `opera://flags`'},usage_perc_y:47.32,usage_perc_a:0,ucprefix:false,parent:"",keywords:"HTMLDialogElement,showModal,backdrop",ie_id:"dialogelementformodals",chrome_id:"5770237022568448",firefox_id:"",webkit_id:""},"css-variables":{title:"CSS Variables (Custom Properties)",description:"Permits the declaration and usage of cascading variables in stylesheets.",spec:"https://drafts.csswg.org/css-variables/",status:"wd",links:[{url:"https://hacks.mozilla.org/2013/12/css-variables-in-firefox-nightly/",title:"Mozilla hacks article (older syntax)"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables",title:"MDN article"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n d #1",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n d #1",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled through the "Experimental Web Platform features" flag in `chrome://flags`'},usage_perc_y:40.53,usage_perc_a:0,ucprefix:false,parent:"",keywords:"css variables,custom properties",ie_id:"cssvariables",chrome_id:"6401356696911872",firefox_id:"",webkit_id:""},vibration:{title:"Vibration API",description:"Method to access the vibration mechanism of the hosting device.",spec:"http://www.w3.org/TR/vibration/",status:"rec",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/Guide/API/Vibration",title:"MDN article"},{url:"http://davidwalsh.name/vibration-api",title:"Vibration API sample code & demo"},{url:"http://code.tutsplus.com/tutorials/html5-vibration-api--mobile-22585",title:"Tuts+ article"},{url:"http://aurelio.audero.it/demo/vibration-api-demo.html",title:"Demo"},{url:"http://www.illyism.com/journal/vibration-api",title:"Article and Usage Examples"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:68.07,usage_perc_a:0,ucprefix:false,parent:"",keywords:"vibration,mobile,device",ie_id:"vibrationapi",chrome_id:"5698768766763008",firefox_id:"vibration",webkit_id:""},"css-backgroundblendmode":{title:"CSS background-blend-mode",description:"Allows blending between CSS background images, gradients, and colors.",spec:"http://www.w3.org/TR/compositing-1/#propdef-background-blend-mode",status:"cr",links:[{url:"http://codepen.io/bennettfeely/pen/rxoAc",title:"codepen example"},{url:"https://medium.com/web-design-technique/6b51bf53743a",title:"Blog post"},{url:"http://bennettfeely.com/gradients",title:"Demo"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"a #2",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"a #1",8:"a #1",9:"a #1",9.1:"a #1",TP:"a #1"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"a #2",
34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1",9.3:"a #1"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a #2"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial in Safari refers to not supporting the `hue`, `saturation`, `color`, and `luminosity` blend modes.",2:"Chrome 46 has some [serious bugs](https://code.google.com/p/chromium/issues/detail?id=543583) with multiply, difference, and exclusion blend modes"},usage_perc_y:55.09,usage_perc_a:10.13,ucprefix:false,parent:"",keywords:"css blend modes,css blending modes,blending,multiply,screen,background",ie_id:"",chrome_id:"5768037999312896",firefox_id:"",webkit_id:""},"css-mixblendmode":{title:"Blending of HTML/SVG elements",description:"Allows blending between arbitrary SVG and HTML elements",spec:"http://www.w3.org/TR/compositing-1/#mix-blend-mode",status:"cr",links:[{url:"http://codepen.io/bennettfeely/pen/csjzd",title:"codepen example"},{url:"http://css-tricks.com/basics-css-blend-modes/",title:"Blog post"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"a #2",8:"a #2",9:"a #2",9.1:"a #2",TP:"a #2"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2",9.3:"a #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags',2:"Partial in Safari refers to not supporting the `hue`, `saturation`, `color`, and `luminosity` blend modes."},usage_perc_y:54.73,usage_perc_a:9.78,ucprefix:false,parent:"",keywords:"mix-blend-mode,css blend modes,css blending modes",ie_id:"mixblendmode",chrome_id:"6362616360337408",firefox_id:"",webkit_id:""},"speech-recognition":{title:"Speech Recognition API",description:"Method to provide speech input in a web browser.",spec:"https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-section",status:"unoff",links:[{url:"http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API",title:"HTML5Rocks article"},{url:"http://www.sitepoint.com/introducing-web-speech-api/",title:"SitePoint article"},{url:"http://aurelio.audero.it/demo/web-speech-api-demo.html",title:"Demo"},{url:"http://zenorocha.github.io/voice-elements/#recognition-element",title:"Advanced demo and resource"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n d #2",23:"n d #2",24:"n d #2",25:"n d #2",26:"n d #2",27:"n d #2",28:"n d #2",29:"n d #2",30:"n d #2",31:"n d #2",32:"n d #2",33:"n d #2",34:"n d #2",35:"n d #2",36:"n d #2",37:"n d #2",38:"n d #2",39:"n d #2",40:"n d #2",41:"n d #2",42:"n d #2",43:"n d #2",44:"n d #2",45:"n d #2",46:"n d #2",47:"n d #2",48:"n d #2"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1",49:"a x #1",50:"a x #1",51:"a x #1",52:"a x #1",53:"a x #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"a x #1"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support refers to some attributes missing.",2:"Supported in Firefox in about:config using the `media.webspeech.recognition.enable` flag."},usage_perc_y:0,usage_perc_a:48.47,ucprefix:false,parent:"",keywords:"#web-speech,speech,recognition,ASR",ie_id:"webspeechapiinput",chrome_id:"5908775487668224",firefox_id:"",webkit_id:""},"high-resolution-time":{title:"High Resolution Time API",description:"Method to provide the current time in sub-millisecond resolution and such that it is not subject to system clock skew or adjustments. Called using `performance.now()`",spec:"http://www.w3.org/TR/hr-time/",status:"rec",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Performance.now()",title:"MDN article"},{url:"http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now",title:"HTML5Rocks article"},{url:"http://www.sitepoint.com/discovering-the-high-resolution-time-api/",title:"SitePoint article"},{url:"http://aurelio.audero.it/demo/high-resolution-time-api-demo.html",title:"Demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"y x",21:"y x",22:"y x",23:"y x",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y","8.1-8.4":"n","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:85.79,usage_perc_a:0,ucprefix:false,parent:"",keywords:"performance,now,testing",ie_id:"highresolutiontime",chrome_id:"5349124069130240",firefox_id:"",webkit_id:""},"battery-status":{title:"Battery Status API",description:"Method to provide information about the battery status of the hosting device.",spec:"http://www.w3.org/TR/battery-status/",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/WebAPI/Battery_Status",title:"MDN Docs"},{url:"http://www.smartjava.org/examples/webapi-battery/",title:"Simple demo"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"a #1",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n d",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a #1"}},notes:"",notes_by_num:{1:"Partial support refers to support for the older specification's `navigator.battery` rather than `navigator.getBattery()` to access the `BatteryManager`."},usage_perc_y:54.11,usage_perc_a:10.46,ucprefix:false,parent:"",keywords:"navigator.battery,navigator.getbattery,batterymanager",ie_id:"batterystatusapi",chrome_id:"4537134732017664",firefox_id:"",webkit_id:""},serviceworkers:{title:"Service Workers",description:"Method that enables applications to take advantage of persistent background processing, including hooks to enable bootstrapping of web applications while offline.",spec:"https://slightlyoff.github.io/ServiceWorker/spec/service_worker/",status:"wd",links:[{url:"http://www.html5rocks.com/en/tutorials/service-worker/introduction/",title:"HTML5Rocks article (introduction)"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker_API",title:"MDN article"},{url:"https://jakearchibald.github.io/isserviceworkerready/resources.html",title:"List of various resources"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"n d #1",43:"n d #1",44:"a",45:"a",46:"a",47:"a",48:"a"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"a",41:"a",42:"a",43:"a",44:"a",45:"a",46:"a",47:"a",48:"a",49:"a",50:"a",51:"a",52:"a",53:"a"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a",37:"a",38:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"a"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a"},and_chr:{49:"a"},and_ff:{45:"a"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Details on partial support can be found on [is ServiceWorker Ready?](https://jakearchibald.github.io/isserviceworkerready/)",notes_by_num:{1:"Partial support can be enabled in Firefox with the `dom.serviceWorkers.enabled` flag."},usage_perc_y:0,usage_perc_a:53.5,ucprefix:false,parent:"",keywords:"",ie_id:"serviceworker",chrome_id:"6561526227927040",firefox_id:"service-worker",webkit_id:"specification-service-workers"},"text-decoration":{title:"text-decoration styling",description:"Method of defining the type, style and color of lines in the text-decoration property. These can be defined as shorthand (e.g. `text-decoration: line-through dashed blue`) or as single properties (e.g. `text-decoration-color: blue`)",spec:"http://www.w3.org/TR/css-text-decor-3/#line-decoration",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-style",title:"MDN Documentation for text-decoration-style"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-color",title:"MDN Documentation for text-decoration-color"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-line",title:"MDN Documentation for text-decoration-line"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514536-text-decoration-styling",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"y x",7:"y x",8:"y x",9:"y x",10:"y x",11:"y x",12:"y x",13:"y x",14:"y x",15:"y x",16:"y x",17:"y x",18:"y x",19:"y x",20:"y x",21:"y x",22:"y x",23:"y x",24:"y x",25:"y x",26:"y x",27:"y x",28:"y x",29:"y x",30:"y x",31:"y x",32:"y x",33:"y x",34:"y x",35:"y x",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n x d #1",27:"n x d #1",28:"n x d #1",29:"n x d #1",30:"n x d #1",31:"n x d #1",32:"n x d #1",33:"n x d #1",34:"n x d #1",35:"n x d #1",36:"n x d #1",37:"n x d #1",38:"n x d #1",39:"n x d #1",40:"n x d #1",41:"n x d #1",42:"n x d #1",43:"n x d #1",44:"n x d #1",45:"n x d #1",46:"n x d #1",47:"n x d #1",48:"n x d #1",49:"n x d #1",50:"n x d #1",51:"n x d #1",52:"n x d #1",53:"n x d #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"a x #2",8:"a x #2",9:"a x #2",9.1:"a x #2",TP:"a x #2"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n x d #1",36:"n x d #1",37:"n x d #1",38:"n x d #1"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"a x #2","8.1-8.4":"a x #2","9.0-9.2":"a x #2",9.3:"a x #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n x d #1"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"All browsers support the CSS2 version of `text-decoration`, which matches only the `text-decoration-line` values (`underline`, etc.)",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags',2:"Partial support in Safari refers to not supporting the text-decoration-style property."},usage_perc_y:8.42,usage_perc_a:9.78,ucprefix:false,parent:"",keywords:"text-decoration-line,text-decoration-style,text-decoration-color",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"iframe-srcdoc":{title:"srcdoc attribute for iframes",description:"Override the content specified in the `src` attribute (if present) with HTML content within the attribute.",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-srcdoc",status:"ls",links:[{url:"https://docs.webplatform.org/wiki/html/elements/iframe",title:"WebPlatform Docs"},{url:"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe",title:"MDN Docs"},{url:"https://github.com/jugglinmike/srcdoc-polyfill",title:"Srcdoc Polyfill"},{url:"https://bocoup.com/weblog/third-party-javascript-development-future/",title:"Article"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p"},edge:{12:"p",13:"p",14:"p"},firefox:{2:"n",3:"p",3.5:"p",3.6:"p",4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",12:"p",13:"p",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"p",21:"p",22:"p",23:"p",24:"p",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"p",15:"p",16:"p",17:"p",18:"p",19:"p",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"p",5:"p",5.1:"p",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"p",11.5:"p",11.6:"p",12:"p",12.1:"p",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"p",2.2:"p",2.3:"p",3:"p",4:"p",4.1:"p","4.2-4.3":"p",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"p",10:"y"},op_mob:{10:"n",11:"n",11.1:"p",11.5:"p",12:"p",12.1:"p",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:78.7,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"iframesrcdocattribute",chrome_id:"5222955109842944",firefox_id:"",webkit_id:""},"speech-synthesis":{title:"Speech Synthesis API",description:"A web API for controlling a text-to-speech output.",spec:"https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section",status:"unoff",links:[{url:"http://updates.html5rocks.com/2014/01/Web-apps-that-talk---Introduction-to-the-Speech-Synthesis-API",title:"HTML5Rocks article"},{url:"http://www.sitepoint.com/talking-web-pages-and-the-speech-synthesis-api/",title:"SitePoint article"},{url:"http://aurelio.audero.it/demo/speech-synthesis-api-demo.html",title:"Demo"},{url:"http://zenorocha.github.io/voice-elements/",title:"Advanced demo and resource"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"n d #1",43:"n d #1",44:"n d #1",45:"n d #1",46:"n d #1",47:"n d #1",48:"n d #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox using the `media.webspeech.synth.enabled` about:config flag."},usage_perc_y:57.67,usage_perc_a:0,ucprefix:false,parent:"web-speech",keywords:"speech,synthesis,speechSynthesis,TTS,SpeechSynthesisUtterance,",ie_id:"webspeechapisynthesis",chrome_id:"4782875580825600",firefox_id:"",webkit_id:""},"user-timing":{title:"User Timing API",description:"Method to help web developers measure the performance of their applications by giving them access to high precision timestamps.",spec:"http://www.w3.org/TR/user-timing/",status:"rec",links:[{url:"http://www.sitepoint.com/discovering-user-timing-api/",title:"SitePoint article"},{url:"http://www.html5rocks.com/en/tutorials/webperformance/usertiming/",title:"HTML5Rocks article"},{url:"https://gist.github.com/pmeenan/5902672",title:"Polyfill"},{url:"http://aurelio.audero.it/demo/user-timing-api-demo.html",title:"Demo"},{url:"https://github.com/nicjansma/usertiming.js",title:"UserTiming.js polyfill"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:66.95,usage_perc_a:0,ucprefix:false,parent:"",keywords:"performance,testing,mark,measure",ie_id:"usertimingapi",chrome_id:"5066549580791808",firefox_id:"",webkit_id:""},srcset:{title:"Srcset attribute",description:'Allows authors to define various image resources and "hints" that assist a user agent to determine the most appropriate image source to display (e.g. high-resolution displays, small monitors, etc).',spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset",status:"ls",links:[{url:"https://www.webkit.org/blog/2910/improved-support-for-high-resolution-displays-with-the-srcset-image-attribute/",title:"Improved support for high-resolution displays with the srcset image attribute"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"a #2",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"a #2",35:"a #2",36:"a #2",37:"a #2",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"a #2",8:"a #2",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"a #2","8.1-8.4":"a #2","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox by setting the about:config preference dom.image.srcset.enabled to true",2:"Supports the subset of the syntax for resolution switching (using the `x` descriptor), but not the full syntax that can be used with `sizes` (using the `w` descriptor)."},usage_perc_y:64.48,usage_perc_a:1.57,ucprefix:false,parent:"",keywords:"",ie_id:"imgsrcset",chrome_id:"4644337115725824",firefox_id:"",webkit_id:"feature-srcset-w-descriptor-and-related-sizes-attribute,feature-srcset-x-descriptor"},"ambient-light":{title:"Ambient Light API",description:"Defines events that provide information about the ambient light level, as measured by a device's light sensor.",spec:"http://www.w3.org/TR/ambient-light/",status:"cr",links:[{url:"http://aurelio.audero.it/demo/ambient-light-api-demo.html",title:"Demo"},{url:"http://modernweb.com/2014/05/27/introduction-to-the-ambient-light-api/",title:"Article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"a #1",43:"a #1",44:"a #1",45:"a #1",46:"a #1",47:"a #1",48:"a #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support in desktop Firefox refers to support being limited to Mac OS X. [Support for Windows 7 is in progress](https://bugzilla.mozilla.org/show_bug.cgi?id=754199)"},usage_perc_y:.04,usage_perc_a:8.1,ucprefix:false,parent:"",keywords:"",ie_id:"ambientlightevents",chrome_id:"5298357018820608",firefox_id:"",webkit_id:""},"will-change":{title:"CSS will-change property",description:"Method of optimizing animations by informing the browser which elements will change and what properties will change.",spec:"http://dev.w3.org/csswg/css-will-change/",status:"wd",links:[{url:"https://dev.opera.com/articles/css-will-change-property/",title:"Detailed article"},{url:"http://aerotwist.com/blog/bye-bye-layer-hacks/",title:"Blog post"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",
3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Supported in Firefox behind the `layout.css.will-change.enabled` flag"},usage_perc_y:56.61,usage_perc_a:0,ucprefix:false,parent:"",keywords:"scroll-position",ie_id:"csswillchange",chrome_id:"5954199330226176",firefox_id:"",webkit_id:"specification-css-will-change"},"css-shapes":{title:"CSS Shapes Level 1",description:"Allows geometric shapes to be set in CSS to define an area for text to flow around.",spec:"http://www.w3.org/TR/css-shapes/",status:"cr",links:[{url:"http://html.adobe.com/webplatform/layout/shapes/",title:"Adobe demos and samples"},{url:"http://html.adobe.com/webplatform/layout/shapes/browser-support/",title:"CSS shapes support test by Adobe"},{url:"http://alistapart.com/article/css-shapes-101",title:"A List Apart article"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=1040714",title:"Firefox tracking bug"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n d #1",35:"n d #1",36:"n d #1",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"y x",8:"y x",9:"y x",9.1:"y x",TP:"y x"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:57.09,usage_perc_a:0,ucprefix:false,parent:"",keywords:"circle,ellipse,polygon,inset,shape-outside,shape-inside",ie_id:"shapes",chrome_id:"5163890719588352",firefox_id:"",webkit_id:""},domcontentloaded:{title:"DOMContentLoaded",description:"JavaScript event that fires when the DOM is loaded, but before all page assets are loaded (CSS, images, etc.).",spec:"https://html.spec.whatwg.org/multipage/syntax.html#stop-parsing",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/Reference/Events/DOMContentLoaded",title:"MDN: DOMContentLoaded"}],categories:["DOM"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"y","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:94.72,usage_perc_a:0,ucprefix:false,parent:"",keywords:"dom,domready,onload,contentloaded,document",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},proximity:{title:"Proximity API",description:"Defines events that provide information about the distance between a device and an object, as measured by a proximity sensor.",spec:"http://www.w3.org/TR/proximity/",status:"cr",links:[{url:"http://aurelio.audero.it/demo/proximity-api-demo.html",title:"Demo"},{url:"http://www.sitepoint.com/introducing-proximity-api/",title:"SitePoint article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:8.27,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"kerning-pairs-ligatures":{title:"Improved kerning pairs & ligatures",description:"Currently non-standard method of improving kerning pairs & ligatures using `text-rendering: optimizeLegibility`.",spec:"http://www.w3.org/TR/SVG11/painting.html#TextRenderingProperty",status:"unoff",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-rendering",title:"MDN article"},{url:"http://css-tricks.com/almanac/properties/t/text-rendering/",title:"CSS Tricks article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"u","4.0-4.1":"u","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"a #1",4:"a #1",4.1:"a #1","4.2-4.3":"a #1",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support in Android browser versions is due to a serious bug where `text-rendering: optimizeLegibility` causes custom web fonts to not render."},usage_perc_y:79.45,usage_perc_a:1.36,ucprefix:false,parent:"",keywords:"optimizeLegibility,optimizeSpeed,geometricPrecision",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"iframe-seamless":{title:"seamless attribute for iframes",description:"The seamless attribute makes an iframe's contents actually part of a page, and adopts the styles from its hosting page. The attribute has been [removed from the current specification](https://github.com/whatwg/html/issues/331). ",spec:"https://www.w3.org/TR/html51/semantics.html#attr-iframe-seamless",status:"unoff",links:[{url:"https://github.com/ornj/seamless-polyfill",title:"Experimental polyfill"},{url:"http://labs.ft.com/2013/01/seamless-iframes-not-quite-seamless/",title:"Article"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=631218",title:"Bug on Firefox support"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"u",47:"u",48:"u"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n d",21:"n d",22:"n d",23:"n d",24:"n d",25:"n d",26:"n d",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n #1",7.1:"n #1",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n #1",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Chrome 20-26 had partial support behind a flag, though this was [later removed](http://crbug.com/229421).",notes_by_num:{1:"Hides the border of seamless iframes and recognizes the 'seamless' DOM property, but does not provide actual support."},usage_perc_y:8.97,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"iframeseamlessattribute",chrome_id:"6630329993396224",firefox_id:"",webkit_id:""},"css-image-orientation":{title:"CSS3 image-orientation",description:'CSS property used generally to fix the intended orientation of an image. This can be done using 90 degree increments or based on the image\'s EXIF data using the "from-image" value.',spec:"http://www.w3.org/TR/css3-images/#image-orientation",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/image-orientation",title:"MDN article"},{url:"http://sethfowler.org/blog/2013/09/13/new-in-firefox-26-css-image-orientation/",title:"Blog post"},{url:"http://jsbin.com/EXUTolo/4",title:"Demo (Chinese)"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"a #1","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1",8:"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1",9.3:"a #1"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Opening the image in a new tab in Chrome results in the image shown in the orientation according to the EXIF data.",notes_by_num:{1:"Partial support in iOS refers to the browser using EXIF data by default, though it does not actually support the property."},usage_perc_y:8.05,usage_perc_a:8.01,ucprefix:false,parent:"",keywords:"image-orientation,from-image,flip",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},picture:{title:"Picture element",description:"A responsive images method to control which image resource a user agent presents to a user, based on resolution, media query and/or support for a particular image format",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element",status:"ls",links:[{url:"http://responsiveimages.org/demos/",title:"Demo"},{url:"http://code.tutsplus.com/tutorials/better-responsive-images-with-the-picture-element--net-36583",title:"Tutorial"},{url:"http://usecases.responsiveimages.org/",title:"Read about the use cases"},{url:"http://responsiveimages.org/",title:"General information about Responsive Images"},{url:"https://dev.opera.com/articles/responsive-images/",title:"Blog post on usage"},{url:"http://www.html5rocks.com/tutorials/responsive/picture-element/",title:"HTML5 Rocks tutorial"},{url:"https://github.com/scottjehl/picturefill",title:"Picturefill - polyfill for picture, srcset, sizes, and more"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n d #3",35:"n d #3",36:"n d #3",37:"n d #3",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n d #1",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n d #2",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags',2:'Enabled in Opera through the "experimental Web Platform features" flag in opera://flags',3:"Enabled in Firefox by setting the about:config preference dom.image.picture.enable to true"},usage_perc_y:57.32,usage_perc_a:0,ucprefix:false,parent:"",keywords:"<picture>",ie_id:"pictureelement",chrome_id:"5910974510923776",firefox_id:"",webkit_id:"feature-picture-element"},woff2:{title:"WOFF 2.0 - Web Open Font Format",description:"TrueType/OpenType font that provides better compression than WOFF 1.0.",spec:"http://www.w3.org/TR/WOFF2/",status:"wd",links:[{url:"https://gist.github.com/sergejmueller/cf6b4f2133bcb3e2f64a",title:"Basics about WOFF 2.0"},{url:"http://everythingfonts.com/ttf-to-woff2",title:"WOFF 2.0 converter"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u d #1"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Supported in WebKit Nightly",notes_by_num:{1:"[Edge 'In Development'](https://developer.microsoft.com/en-us/microsoft-edge/platform/status/wofffileformat20), landing version is unknown."},usage_perc_y:54.73,usage_perc_a:0,ucprefix:false,parent:"fontface",keywords:"woff, fontface, webfonts",ie_id:"wofffileformat20",chrome_id:"6718644721549312",firefox_id:"",webkit_id:""},"text-size-adjust":{title:"CSS text-size-adjust",description:"On mobile devices, the text-size-adjust CSS property allows Web authors to control if and how the text-inflating algorithm is applied to the textual content of the element it is applied to.",spec:"http://dev.w3.org/csswg/css-size-adjust/",status:"unoff",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust",title:"MDN Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n #2",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n #2",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x",8:"y x","8.1-8.4":"y x","9.0-9.2":"y x",9.3:"y x"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"y x"},ie_mob:{10:"y x #1",11:"y x #1"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{1:"If the viewport size is set using a `<meta>` element, the `-ms-text-size-adjust` property is ignored. See [MSDN](https://msdn.microsoft.com/en-us/library/ie/dn793579%28v=vs.85%29.aspx)",2:"Old versions of WebKit-based desktop browsers (Chrome<27, Safari<6) [suffer from a bug](https://bugs.webkit.org/show_bug.cgi?id=56543) where if `-webkit-text-size-adjust` is explicitly set to `none`, instead of ignoring the property, the browsers will prevent the user from zooming in or out on the webpage."},usage_perc_y:17.77,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"web-animation":{title:"Web Animations API",description:"Lets you create animations that are run in the browser and as well as inspect and manipulate animations created through declarative means like CSS.",spec:"http://w3c.github.io/web-animations/",status:"wd",links:[{url:"http://updates.html5rocks.com/2014/05/Web-Animations---element-animate-is-now-in-Chrome-36",title:"HTML5 Rocks"},{url:"http://updates.html5rocks.com/2013/12/New-Web-Animations-engine-in-Blink-drives-CSS-Animations-Transitions",title:"HTML5 Rocks"},{url:"https://birtles.github.io/areweanimatedyet/",title:"Current Firefox status"},{url:"https://github.com/web-animations/web-animations-js",title:"Polyfill"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"a d #3",34:"a d #3",35:"a d #3",36:"a d #3",37:"a d #3",38:"a d #3",39:"a d #3",40:"a d #3",41:"a d #3",42:"a d #3",43:"a d #3",44:"a d #3",45:"a d #3",46:"a d #3",47:"a #3",48:"a #3"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"a #1",37:"a #1",38:"a #1",39:"a #2",40:"a #2",41:"a #2",42:"a #2",43:"a #2",44:"a #2",45:"a #2",46:"a #2",47:"a #2",48:"a #2",49:"a #2",50:"a #2",51:"a #2",52:"a #2",53:"a #2"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"a #1",24:"a #1",25:"a #1",26:"a #2",27:"a #2",28:"a #2",29:"a #2",30:"a #2",31:"a #2",32:"a #2",33:"a #2",34:"a #2",35:"a #2",36:"a #2",37:"a #2",38:"a #2"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"a #1"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a #1"},and_chr:{49:"a #1"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support refers to basic support of `element.animate()`",2:"Partial support refers to basic support of `element.animate()` and [playback control of AnimationPlayer](https://www.chromestatus.com/features/5633748733263872)",3:"Partial support in Firefox is detailed in [Are we animated yet?](https://birtles.github.io/areweanimatedyet/)"},usage_perc_y:0,usage_perc_a:55.18,ucprefix:false,parent:"",keywords:"animate,play,pause,reverse,finish,currentTime,startTime,playbackRate,playState",ie_id:"webanimationsjavascriptapi",chrome_id:"4854343836631040,5633748733263872",firefox_id:"",webkit_id:""},"resource-timing":{title:"Resource Timing",description:"Method to help web developers to collect complete timing information related to resources on a document.",spec:"http://www.w3.org/TR/resource-timing/",status:"cr",links:[{url:"http://aurelio.audero.it/demo/resource-timing-api-demo.html",title:"Demo"},{url:"http://googledevelopers.blogspot.com/2013/12/measuring-network-performance-with.html",title:"Blog post"},{url:"http://www.sitepoint.com/introduction-resource-timing-api/",title:"SitePoint article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox using the dom.enable_resource_timing flag"},usage_perc_y:67.13,usage_perc_a:0,ucprefix:false,parent:"",keywords:"performance,testing,resource",ie_id:"resourcetimingapi",chrome_id:"5796350423728128",firefox_id:"",webkit_id:""},"custom-elements":{title:"Custom Elements",description:"Method of defining and using new types of DOM elements in a document.",spec:"http://www.w3.org/TR/custom-elements/",status:"wd",links:[{url:"http://w3c.github.io/webcomponents/spec/custom/",title:"W3C Editor's Draft spec (closer to current implementations)"},{url:"http://www.polymer-project.org/platform/custom-elements.html",title:"Polymer project (polyfill & web components framework)"},{url:"http://www.html5rocks.com/tutorials/webcomponents/customelements/",title:"HTML5Rocks - Custom Elements: defining new elements in HTML"},{url:"https://code.google.com/p/chromium/issues/detail?id=234509",title:"Chromium tracking bug: Implement Custom Elements"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=889230",title:"Firefox tracking bug: Implement Custom Elements (from Web Components)"},{url:"http://status.modern.ie/customelements",title:"IE Web Platform Status and Roadmap: Custom Elements"},{url:"https://github.com/WebReflection/document-register-element",title:"document.registerElement polyfill in 3KB minified & gzipped"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"p",11:"p"},edge:{12:"p",13:"p",14:"p"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n d #1",24:"n d #1",25:"n d #1",26:"n d #1",27:"n d #1",28:"n d #1",29:"n d #1",30:"p d #1",31:"p d #1",32:"p d #1",33:"p d #1",34:"p d #1",35:"p d #1",36:"p d #1",37:"p d #1",38:"p d #1",39:"p d #1",40:"p d #1",41:"p d #1",42:"p d #1",43:"p d #1",44:"p d #1",45:"p d #1",46:"p d #1",47:"p d #1",48:"p d #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n d",28:"n d",29:"n d",30:"n d",31:"n d",32:"n d",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"p",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"p"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n d",16:"n d",17:"n d",18:"n d",19:"n d",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"p",8:"p","8.1-8.4":"p","9.0-9.2":"p",9.3:"p"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"p d #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled through the "dom.webcomponents.enabled" preference in about:config'},usage_perc_y:48.6,usage_perc_a:0,ucprefix:false,parent:"",keywords:"web components,registerElement",ie_id:"customelements",chrome_id:"4642138092470272",firefox_id:"custom-elements",webkit_id:"feature-custom-elements"},imports:{title:"HTML Imports",description:"Method of including and reusing HTML documents in other HTML documents.",
spec:"http://www.w3.org/TR/html-imports/",status:"wd",links:[{url:"http://www.polymer-project.org/platform/html-imports.html",title:"Polymer project (polyfill & web components framework)"},{url:"http://www.html5rocks.com/tutorials/webcomponents/imports/",title:"HTML5Rocks - HTML Imports: #include for the web"},{url:"https://code.google.com/p/chromium/issues/detail?id=240592",title:"Chromium tracking bug: Implement HTML Imports"},{url:"https://bugzilla.mozilla.org/show_bug.cgi?id=877072",title:"Firefox tracking bug: Implement HTML Imports"},{url:"http://status.modern.ie/htmlimports",title:"IE Web Platform Status and Roadmap: HTML Imports"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"p",11:"p"},edge:{12:"p",13:"p",14:"p"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"p",31:"p",32:"p d #1",33:"p d #1",34:"p d #1",35:"p d #1",36:"p d #1",37:"p d #1",38:"p d #1",39:"p d #1",40:"p d #1",41:"p d #1",42:"p d #1",43:"p d #1",44:"p d #1",45:"p d #1",46:"p d #1",47:"p d #1",48:"p d #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n d #2",31:"n d #2",32:"n d #2",33:"n d #2",34:"n d #2",35:"p d #3",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"p",6.1:"p",7:"p",7.1:"p",8:"p",9:"p",9.1:"p",TP:"p"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n d #4",18:"n d #4",19:"n d #4",20:"n d #4",21:"n d #4",22:"p d #5",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"p",8:"p","8.1-8.4":"p","9.0-9.2":"p",9.3:"p"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"p"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Firefox [has no plans to support HTML imports](https://hacks.mozilla.org/2014/12/mozilla-and-web-components/) though for now it can be enabled through the "dom.webcomponents.enabled" preference in about:config',2:'Enabled through the "Enable HTML Imports" flag in chrome://flags',3:'Enabled through the "Experimental Web Platform features" flag in chrome://flags',4:'Enabled through the "Enable HTML Imports" flag in opera://flags',5:'Enabled through the "Experimental Web Platform features" flag in opera://flags'},usage_perc_y:47.41,usage_perc_a:0,ucprefix:false,parent:"",keywords:"web components",ie_id:"htmlimports",chrome_id:"5144752345317376",firefox_id:"html-imports",webkit_id:"feature-html-imports"},"input-file-multiple":{title:"Multiple file selection",description:"Allows users to select multiple files in the file picker.",spec:"https://html.spec.whatwg.org/multipage/forms.html#attr-input-multiple",status:"ls",links:[{url:"https://code.google.com/p/chromium/issues/detail?id=348912",title:"Chrome bug (for Android)"},{url:"http://www.raymondcamden.com/2012/2/28/Working-with-HTML5s-multiple-file-upload-support",title:"Article"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n #1"},android:{2.1:"n #1",2.2:"n #1",2.3:"n #1",3:"n #1",4:"n #1",4.1:"n #1","4.2-4.3":"n #1",4.4:"n #1","4.4.3-4.4.4":"n #1",47:"n #1"},bb:{7:"n",10:"n"},op_mob:{10:"n #1",11:"n #1",11.1:"n #1",11.5:"n #1",12:"n #1",12.1:"n #1",36:"n #1"},and_chr:{49:"a #1"},and_ff:{45:"n #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n #1"}},notes:"",notes_by_num:{1:"Not supported on Android 4.x and below, presumably an OS limitation. Only seems to work in Android 5.x for the Chrome browser."},usage_perc_y:58.7,usage_perc_a:16.47,ucprefix:false,parent:"forms",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"atob-btoa":{title:"Base64 encoding and decoding",description:"Utility functions for of encoding and decoding strings to and from base 64: window.atob() and window.btoa().",spec:"https://html.spec.whatwg.org/multipage/webappapis.html#atob",status:"ls",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa",title:"MDN article on btoa()"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/Window.atob",title:"MDN article on atob()"},{url:"https://github.com/davidchambers/Base64.js",title:"Polyfill"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"y",3.2:"y",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"u",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:94.15,usage_perc_a:0,ucprefix:false,parent:"",keywords:"atob,btoa",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-appearance":{title:"CSS Appearance",description:"The `appearance` property defines how elements (particularly form controls) appear by default. By setting the value to `none` the default appearance can be entirely redefined using other CSS properties.",spec:"https://drafts.csswg.org/css-ui-4/#appearance-switching",status:"wd",links:[{url:"http://css-tricks.com/almanac/properties/a/appearance/",title:"CSS Tricks article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"a #1 #2",13:"a #1 #2",14:"a #1 #2"},firefox:{2:"a x #1",3:"a x #1",3.5:"a x #1",3.6:"a x #1",4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1"},chrome:{4:"a x #1",5:"a x #1",6:"a x #1",7:"a x #1",8:"a x #1",9:"a x #1",10:"a x #1",11:"a x #1",12:"a x #1",13:"a x #1",14:"a x #1",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1",39:"a x #1",40:"a x #1",41:"a x #1",42:"a x #1",43:"a x #1",44:"a x #1",45:"a x #1",46:"a x #1",47:"a x #1",48:"a x #1",49:"a x #1",50:"a x #1",51:"a x #1",52:"a x #1",53:"a x #1"},safari:{3.1:"a x #1",3.2:"a x #1",4:"a x #1",5:"a x #1",5.1:"a x #1",6:"a x #1",6.1:"a x #1",7:"a x #1",7.1:"a x #1",8:"a x #1",9:"a x #1",9.1:"a x #1",TP:"a x #1"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a x #1",16:"a x #1",17:"a x #1",18:"a x #1",19:"a x #1",20:"a x #1",21:"a x #1",22:"a x #1",23:"a x #1",24:"a x #1",25:"a x #1",26:"a x #1",27:"a x #1",28:"a x #1",29:"a x #1",30:"a x #1",31:"a x #1",32:"a x #1",33:"a x #1",34:"a x #1",35:"a x #1",36:"a x #1",37:"a x #1",38:"a x #1"},ios_saf:{3.2:"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0-7.1":"a x #1",8:"a x #1","8.1-8.4":"a x #1","9.0-9.2":"a x #1",9.3:"a x #1"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x #1",2.2:"a x #1",2.3:"a x #1",3:"a x #1",4:"a x #1",4.1:"a x #1","4.2-4.3":"a x #1",4.4:"a x #1","4.4.3-4.4.4":"a x #1",47:"a x #1"},bb:{7:"a x #1",10:"a x #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x #1"},and_chr:{49:"a x #1"},and_ff:{45:"a x #1"},ie_mob:{10:"n",11:"a #1 #2"},and_uc:{9.9:"a x #1"}},notes:"",notes_by_num:{1:"The appearance property is supported with the `none` value, but not `auto`. Webkit, Blink, and Gecko browsers also support additional vendor specific values.",2:"Microsoft Edge and IE Mobile support this property with the `-webkit-` prefix, rather than `-ms-` for interop reasons."},usage_perc_y:0,usage_perc_a:82.75,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},objectrtc:{title:"Object RTC (ORTC) API for WebRTC",description:"Enables mobile endpoints to talk to servers and web browsers with Real-Time Communications (RTC) capabilities via native and simple JavaScript APIs",spec:"https://www.w3.org/community/ortc/",status:"other",links:[{url:"http://blogs.msdn.com/b/ie/archive/2014/10/27/bringing-interoperable-real-time-communications-to-the-web.aspx",title:"Bringing Interoperable Real-Time Communications to the Web"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"n",52:"n",53:"n"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n #1"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"ORTC is often dubbed WebRTC 1.1. It is possible to make ORTC communicate with WebRTC 1.0 endpoints. See [WebRTC 1.0](http://caniuse.com/#feat=rtcpeerconnection) for support details for that API.",notes_by_num:{},usage_perc_y:.97,usage_perc_a:0,ucprefix:false,parent:"",keywords:"RTC,WebRTC,ORTC,ObjectRTC,RTCIceTransport,RTCIceGatherer,RTCRtpSender,RTCRtpReceiver,Real Time,video,webcam",ie_id:"webrtcobjectrtcapi",chrome_id:"",firefox_id:"",webkit_id:""},"css-background-offsets":{title:"CSS background-position edge offsets",description:"Allows CSS background images to be positioned relative to the specified edge using the 3 to 4 value syntax. For example: `background-position: right 5px bottom 5px;` for positioning 5px from the bottom-right corner.",spec:"http://www.w3.org/TR/css3-background/#background-position",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position",title:"MDN article on background-position"},{url:"http://briantree.se/quick-tip-06-use-four-value-syntax-properly-position-background-images/",title:"Basic information"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:83.44,usage_perc_a:0,ucprefix:false,parent:"",keywords:"4 value syntax",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-supports-api":{title:"CSS.supports() API",description:"The CSS.supports() static methods returns a Boolean value indicating if the browser supports a given CSS feature, or not.",spec:"http://dev.w3.org/csswg/css-conditional/#the-css-interface",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports",title:"MDN Docs"},{url:"http://jsbin.com/rimevilotari/1/edit",title:"Demo (Chinese)"},{url:"https://dev.opera.com/articles/native-css-feature-detection/",title:"Native CSS Feature Detection via the @supports Rule"},{url:"http://davidwalsh.name/css-supports",title:"CSS @supports"},{url:"http://blog.csdn.net/hfahe/article/details/8619480",title:"Article (Chinese)"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n d",21:"n d",22:"n d",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"y #1",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"See also [@supports in CSS](#feat=css-featurequeries)\r\n\r\nSee the [WebKit Bug](http://trac.webkit.org/changeset/142739) for status in Safari",notes_by_num:{1:"Opera 12 uses a different method name('window.supportsCSS')"},usage_perc_y:69.41,usage_perc_a:0,ucprefix:false,parent:"",keywords:"conditional",ie_id:"conditionalrules",chrome_id:"4993981813358592",firefox_id:"",webkit_id:""},"css-touch-action":{title:"CSS touch-action property",description:"touch-action is a CSS property that controls filtering of gesture events, providing developers with a declarative mechanism to selectively disable touch scrolling (in one or both axes), pinch-zooming or double-tap-zooming.",spec:"http://www.w3.org/TR/pointerevents/#the-touch-action-css-property",status:"rec",links:[{url:"http://msdn.microsoft.com/en-us/library/windows/apps/hh767313.aspx",title:"MSDN Docs"},{url:"http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away",title:"300ms tap delay, gone away"},{url:"http://blogs.telerik.com/appbuilder/posts/13-11-21/what-exactly-is.....-the-300ms-click-delay",title:"What Exactly Is..... The 300ms Click Delay"},{url:"http://thx.github.io/mobile/300ms-click-delay/",title:"What Exactly Is..... The 300ms Click Delay (Chinese)"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action",title:"Mozilla Developer Network"},{url:"https://bugs.webkit.org/show_bug.cgi?id=149854",title:"WebKit bug 149854: Implement touch-action: manipulation; for iOS"},{url:"https://bugs.webkit.org/show_bug.cgi?id=133112",title:"WebKit bug 133112: touch-action CSS property support"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x #2",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n d #1",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"n d #1",43:"n d #1",44:"n d #1",45:"n d #1",46:"n d #1",47:"n d #1",48:"n d #1"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"n"},ie_mob:{10:"y x #2",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Supported in Firefox behind the `layout.css.touch_action.enabled` flag, Firefox for Windows 8 Touch ('Metro') enabled by default.",2:"IE10+ has already supported these property which are not in standard at present such as'pinch-zoom','double-tap-zoom','cross-slide-x','cross-slide-y'."},usage_perc_y:57.08,usage_perc_a:0,ucprefix:false,parent:"",keywords:"touch action",ie_id:"csstouchaction",chrome_id:"5912074022551552",firefox_id:"",webkit_id:""},autofocus:{title:"Autofocus attribute",description:"Allows a form field to be immediately focused on page load.",spec:"https://html.spec.whatwg.org/multipage/forms.html#autofocusing-a-form-control:-the-autofocus-attribute",status:"ls",links:[{url:"http://davidwalsh.name/autofocus",title:"Article on autofocus"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"y","10.0-10.1":"y",10.5:"y",10.6:"y",11:"y",11.1:"y",11.5:"y",11.6:"y",12:"y",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"While not supported in iOS Safari, it does work in iOS WebViews.",notes_by_num:{},usage_perc_y:72.13,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-clip-path":{title:"CSS clip-path property",description:"Method of defining the visible region of an element using SVG or a shape definition.",spec:"http://www.w3.org/TR/css-masking-1/#the-clip-path",status:"cr",links:[{url:"http://css-tricks.com/almanac/properties/c/clip/",title:"CSS Tricks article"},{url:"http://codepen.io/dubrod/details/myNNyW/",title:"Codepen Example Clipping an Image with a Polygon"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"a #1",3.6:"a #1",4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #1",12:"a #1",13:"a #1",14:"a #1",15:"a #1",16:"a #1",17:"a #1",18:"a #1",19:"a #1",20:"a #1",21:"a #1",22:"a #1",23:"a #1",24:"a #1",25:"a #1",26:"a #1",27:"a #1",28:"a #1",29:"a #1",30:"a #1",31:"a #1",32:"a #1",33:"a #1",34:"a #1",35:"a #1",36:"a #1",37:"a #1",38:"a #1",39:"a #1",40:"a #1",41:"a #1",42:"a #1",43:"a #1",44:"a #1",45:"a #1",46:"a #1",47:"a #1 #3",48:"a #1 #3"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"a x #2",25:"a x #2",26:"a x #2",27:"a x #2",28:"a x #2",29:"a x #2",30:"a x #2",31:"a x #2",32:"a x #2",33:"a x #2",34:"a x #2",35:"a x #2",36:"a x #2",37:"a x #2",38:"a x #2",39:"a x #2",40:"a x #2",41:"a x #2",42:"a x #2",43:"a x #2",44:"a x #2",45:"a x #2",46:"a x #2",47:"a x #2",48:"a x #2",49:"a x #2",50:"a x #2",51:"a x #2",52:"a x #2",53:"a x #2"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"a x #2",7.1:"a x #2",8:"a x #2",9:"a x #2",9.1:"a x #2",TP:"a x #2"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a x #2",16:"a x #2",17:"a x #2",18:"a x #2",19:"a x #2",20:"a x #2",21:"a x #2",22:"a x #2",23:"a x #2",24:"a x #2",25:"a x #2",26:"a x #2",27:"a x #2",28:"a x #2",29:"a x #2",30:"a x #2",31:"a x #2",32:"a x #2",33:"a x #2",34:"a x #2",35:"a x #2",36:"a x #2",37:"a x #2",38:"a x #2"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"a x #2",8:"a x #2","8.1-8.4":"a x #2","9.0-9.2":"a x #2",9.3:"a x #2"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"a x #2","4.4.3-4.4.4":"a x #2",47:"a x #2"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a x #2"},and_chr:{49:"a x #2"},and_ff:{45:"a #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support refers to only supporting the `url()` syntax.",2:"Partial support refers to supporting shapes and the `url(#foo)` syntax for inline SVG, but not shapes in external SVGs.",3:"Supports shapes behind the `layout.css.clip-path-shapes.enabled` flag"},usage_perc_y:0,usage_perc_a:69.91,ucprefix:false,parent:"css-masks",keywords:"clippath",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},getrandomvalues:{title:"crypto.getRandomValues()",description:"Method of generating cryptographically random values.",spec:"http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y x"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"y",7:"y",7.1:"y",8:"y",9:"y",9.1:"y",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y",8:"y","8.1-8.4":"y","9.0-9.2":"y",9.3:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"y x"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:77.35,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"screen-orientation":{title:"Screen Orientation",description:"Provides the ability to read the screen orientation state, to be informed when this state changes, and to be able to lock the screen orientation to a specific state.",spec:"http://www.w3.org/TR/screen-orientation/",status:"wd",links:[{url:"http://aurelio.audero.it/demo/screen-orientation-api-demo.html",title:"Demo"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation",title:"MDN article"},{url:"http://www.sitepoint.com/introducing-screen-orientation-api/",title:"SitePoint article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"a x"},edge:{12:"a x",13:"a x",14:"a x"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"a x",19:"a x",20:"a x",21:"a x",22:"a x",23:"a x",24:"a x",25:"a x",26:"a x",27:"a x",28:"a x",29:"a x",30:"a x",31:"a x",32:"a x",33:"a x",34:"a x",35:"a x",36:"a x",37:"a x",38:"a x",39:"a x",40:"a x",41:"a x",42:"a x",43:"a x",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"a x"},and_uc:{9.9:"y"}},notes:"Partial support refers to an [older version](http://www.w3.org/TR/2014/WD-screen-orientation-20140220/) of the draft specification, and the spec has undergone significant changes since, for example renaming the `screen.lockOrientation` method to `screen.orientation.lock`.",notes_by_num:{},usage_perc_y:62.66,usage_perc_a:9.25,ucprefix:false,parent:"",keywords:"lockorientation,unlockorientation",ie_id:"screenorientationapi",chrome_id:"6191285283061760",firefox_id:"screen-orientation",webkit_id:""},"font-loading":{title:"CSS Font Loading",
description:"This CSS module defines a scripting interface to font faces in CSS, allowing font faces to be easily created and loaded from script. It also provides methods to track the loading status of an individual font, or of all the fonts on an entire page.",spec:"http://dev.w3.org/csswg/css-font-loading/",status:"cr",links:[{url:"https://www.igvita.com/2014/01/31/optimizing-web-font-rendering-performance/#font-load-events",title:"Optimizing with font load events"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6509785-css-font-loading",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox using the `layout.css.font-loading-api.enabled` flag. Enabled by default in Firefox 41. See [this bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1149381)"},usage_perc_y:54.64,usage_perc_a:0,ucprefix:false,parent:"",keywords:"fontface,fontfaceset,fontfacesource",ie_id:"",chrome_id:"6244676289953792",firefox_id:"",webkit_id:""},"font-unicode-range":{title:"Font unicode-range subsetting",description:"This @font-face descriptor defines the set of Unicode codepoints that may be supported by the font face for which it is declared. The descriptor value is a comma-delimited list of Unicode range (<urange>) values. The union of these ranges defines the set of codepoints that serves as a hint for user agents when deciding whether or not to download a font resource for a given text run.",spec:"http://dev.w3.org/csswg/css-fonts/#descdef-unicode-range",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-range",title:"MDN: unicode-range"},{url:"https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/css/property/unicode-range",title:"Safari CSS Reference: unicode-range"},{url:"http://docs.webplatform.org/wiki/css/properties/unicode-range",title:"Web Platform Docs: unicode-range"},{url:"http://jsbin.com/jeqoguzeye/1/edit?html,output",title:"Demo"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6510254-unicode-range",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"a"},edge:{12:"a",13:"a",14:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n d #1",37:"n d #1",38:"n d #1",39:"n d #1",40:"n d #1",41:"n d #1",42:"n d #1",43:"n d #1",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",13:"a",14:"a",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a",28:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a",9:"a",9.1:"a",TP:"a"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"a",16:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a","8.1-8.4":"a","9.0-9.2":"a",9.3:"a"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"a",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",47:"y"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"a"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:"Partial support indicates that unnecessary code-ranges are downloaded by the browser - see [browser test matrix](https://docs.google.com/a/chromium.org/spreadsheets/d/18h-1gaosu4-KYxH8JUNL6ZDuOsOKmWfauoai3CS3hPY/edit?pli=1#gid=0).",notes_by_num:{1:"Can be enabled in Firefox using the `layout.css.unicode-range.enabled` flag"},usage_perc_y:53.84,usage_perc_a:33.58,ucprefix:false,parent:"",keywords:"font face,unicode,unicode-range",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},gamepad:{title:"Gamepad API",description:"API to support input from USB gamepad controllers through JavaScript.",spec:"http://www.w3.org/TR/gamepad/",status:"wd",links:[{url:"http://luser.github.io/gamepadtest/",title:"Controller demo"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API",title:"MDN article"},{url:"http://www.html5rocks.com/en/tutorials/doodles/gamepad/",title:"HTML5Rocks article"},{url:"http://gamedevelopment.tutsplus.com/tutorials/using-the-html5-gamepad-api-to-add-controller-support-to-browser-games--cms-21345",title:"Detailed tutorial"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"y x",22:"y x",23:"y x",24:"y x",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:57.75,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"gamepadapi",chrome_id:"5118776383111168",firefox_id:"gamepad",webkit_id:""},"css-font-stretch":{title:"CSS font-stretch",description:"If a font has multiple types of variations based on the width of characters, the `font-stretch` property allows the appropriate one to be selected. The property in itself does not cause the browser to stretch to a font.",spec:"http://www.w3.org/TR/css-fonts-3/#font-stretch-prop",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/font-stretch",title:"MDN article"},{url:"http://css-tricks.com/almanac/properties/f/font-stretch/",title:"CSS Tricks article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"y"},and_chr:{49:"n"},and_ff:{45:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:44.92,usage_perc_a:0,ucprefix:false,parent:"",keywords:"font stretch",ie_id:"cssfontstretch",chrome_id:"4598830058176512",firefox_id:"",webkit_id:""},"font-size-adjust":{title:"CSS font-size-adjust",description:"Method of adjusting the font size in a matter that relates to the height of lowercase vs. uppercase letters. This makes it easier to set the size of fallback fonts.",spec:"http://www.w3.org/TR/css-fonts-3/#font-size-adjust-prop",status:"cr",links:[{url:"http://webdesignernotebook.com/css/the-little-known-font-size-adjust-css3-property/",title:"Article on font-size-adjust"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/font-size-adjust",title:"MDN article on font-size-adjust"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514821-font-size-adjust-other-font-properties",title:"Microsoft Edge feature request on UserVoice"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n d #1",44:"n d #1",45:"n d #1",46:"n d #1",47:"n d #1",48:"n d #1",49:"n d #1",50:"n d #1",51:"n d #1",52:"n d #1",53:"n d #1"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"n",9.1:"n",TP:"n"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n d #1",31:"n d #1",32:"n d #1",33:"n d #1",34:"n d #1",35:"n d #1",36:"n d #1",37:"n d #1",38:"n d #1"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n",8:"n","8.1-8.4":"n","9.0-9.2":"n",9.3:"n"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",36:"n"},and_chr:{49:"n"},and_ff:{45:"n #2"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled through the "experimental Web Platform features" flag in chrome://flags',2:"Does not appear to work on Firefox mobile, despite recognition of the property."},usage_perc_y:8.47,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"5720910061371392",firefox_id:"",webkit_id:""},"link-icon-png":{title:"PNG favicons",description:"Icon used by browsers to identify a webpage or site. While all browsers support the `.ico` format, the PNG format can be preferable.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#rel-icon",status:"ls",links:[{url:"http://css-tricks.com/favicon-quiz/",title:"Detailed info on favicons for various uses"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"y",3:"y",3.5:"y",3.6:"y",4:"y",5:"y",6:"y",7:"y",8:"y",9:"y",10:"y",11:"y",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"y #1",5:"y #1",6:"y #1",7:"y #1",8:"y #1",9:"y #1",10:"y #1",11:"y #1",12:"y #1",13:"y #1",14:"y #1",15:"y #1",16:"y #1",17:"y #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y #1",24:"y #1",25:"y #1",26:"y #1",27:"y #1",28:"y #1",29:"y #1",30:"y #1",31:"y #1",32:"y #1",33:"y #1",34:"y #1",35:"y #1",36:"y #1",37:"y #1",38:"y #1",39:"y #1",40:"y #1",41:"y #1",42:"y #1",43:"y #1",44:"y #1",45:"y #1",46:"y #1",47:"y #1",48:"y #1",49:"y #1",50:"y #1",51:"y #1",52:"y #1",53:"y #1"},safari:{3.1:"y #2",3.2:"y #2",4:"y #2",5:"y #2",5.1:"y #2",6:"y #2",6.1:"y #2",7:"y #2",7.1:"y #2",8:"y #2",9:"y #2",9.1:"y #2",TP:"y #2"},opera:{9:"y #3","9.5-9.6":"y #3","10.0-10.1":"y #3",10.5:"y #3",10.6:"y #3",11:"y #3",11.1:"y #3",11.5:"y #3",11.6:"y #3",12:"y #3",12.1:"y #3",15:"y #1",16:"y #1",17:"y #1",18:"y #1",19:"y #1",20:"y #1",21:"y #1",22:"y #1",23:"y #1",24:"y #1",25:"y #1",26:"y #1",27:"y #1",28:"y #1",29:"y #1",30:"y #1",31:"y #1",32:"y #1",33:"y #1",34:"y #1",35:"y #1",36:"y #1",37:"y #1",38:"y #1"},ios_saf:{3.2:"n #4","4.0-4.1":"n #4","4.2-4.3":"n #4","5.0-5.1":"n #4","6.0-6.1":"n #4","7.0-7.1":"n #4",8:"n #4","8.1-8.4":"n #4","9.0-9.2":"n #4",9.3:"n #4"},op_mini:{"5.0-8.0":"n #4"},android:{2.1:"y",2.2:"y",2.3:"y",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y #3","4.4.3-4.4.4":"y #3",47:"y #3"},bb:{7:"y",10:"n #4"},op_mob:{10:"n #4",11:"n #4",11.1:"n #4",11.5:"n #4",12:"n #4",12.1:"n #4",36:"n #4"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"n #4",11:"n #4"},and_uc:{9.9:"y #2"}},notes:"Win8/IE10+ and iOS Safari support other types of icons for webpages too, using alternate tags.\r\n\r\nSee also [SVG favicons](#feat=link-icon-svg).",notes_by_num:{1:"If both ICO and PNG are available, will use ICO over PNG if ICO has better matching sizes set.",2:"If both ICO and PNG are available, will ALWAYS use ICO file, regardless of sizes set.",3:"If multiple formats are available, will use the last one loaded, regardless of sizes (effectively picks at random).",4:"Does not use favicons at all (but may have alternative for bookmarks, etc.)."},usage_perc_y:80.01,usage_perc_a:0,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"link-icon-svg":{title:"SVG favicons",description:"Icon used by browsers to identify a webpage or site. While all browsers support the `.ico` format, the SVG format can be preferable to more easily support higher resolutions or larger icons.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#rel-icon",status:"ls",links:[{url:"http://crbug.com/294179",title:"Chrome bug"},{url:"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6509196-svg-favicons",title:"Microsoft Edge feature request on UserVoice"}],categories:["HTML5","SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},edge:{12:"n",13:"n",14:"u"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"a #2",17:"a #2",18:"a #2",19:"a #2",20:"a #2",21:"a #2",22:"a #2",23:"a #2",24:"a #2",25:"a #2",26:"a #2",27:"a #2",28:"a #2",29:"a #2",30:"a #2",31:"a #2",32:"a #2",33:"a #2",34:"a #2",35:"a #2",36:"a #2",37:"a #2",38:"a #2",39:"a #2",40:"a #2",41:"y #4",42:"y #4",43:"y #4",44:"y #4",45:"y #4",46:"y #4",47:"y #4",48:"y #4"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",13:"n",14:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n",39:"n",40:"n",41:"n",42:"n",43:"n",44:"n",45:"n",46:"n",47:"n",48:"n",49:"n",50:"n",51:"u",52:"u",53:"u"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"n",7:"n",7.1:"n",8:"n",9:"a #3",9.1:"a #3",TP:"a #3"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"n",11.1:"n",11.5:"n",11.6:"n",12:"n",12.1:"n",15:"n",16:"n",17:"n",18:"n",19:"n",20:"n",21:"n",22:"n",23:"n",24:"n",25:"n",26:"n",27:"n",28:"n",29:"n",30:"n",31:"n",32:"n",33:"n",34:"n",35:"n",36:"n",37:"n",38:"n"},ios_saf:{3.2:"n #1","4.0-4.1":"n #1","4.2-4.3":"n #1","5.0-5.1":"n #1","6.0-6.1":"n #1","7.0-7.1":"n #1",8:"n #1","8.1-8.4":"n #1","9.0-9.2":"a #3",9.3:"a #3"},op_mini:{"5.0-8.0":"n #1"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"n",4.1:"n","4.2-4.3":"n",4.4:"n","4.4.3-4.4.4":"n",47:"n"},bb:{7:"n",10:"n #1"},op_mob:{10:"n #1",11:"n #1",11.1:"n #1",11.5:"n #1",12:"n #1",12.1:"n #1",36:"n #1"},and_chr:{49:"n"},and_ff:{45:"n"},ie_mob:{10:"n #1",11:"n #1"},and_uc:{9.9:"n"}},notes:"See also [PNG favicons](#feat=link-icon-png).",notes_by_num:{1:"Does not use favicons at all",2:"Partial support in Firefox before version 41 refers to only loading the SVG favicon the first time, but not [on subsequent loads](https://bugzilla.mozilla.org/show_bug.cgi?id=366324#c14).",3:'Safari 9 has support for "[pinned tab](https://developer.apple.com/library/prerelease/mac/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW20)" SVG icons, but this requires an unofficial `rel="mask-icon"` to be set and only works for all-black icons on Pinned Tabs.',4:"Firefox [requires](https://bugzilla.mozilla.org/show_bug.cgi?id=366324#c50) the served mime-type to be 'image/svg+xml'."},usage_perc_y:7.11,usage_perc_a:10.01,ucprefix:false,parent:"",keywords:"",ie_id:"",chrome_id:"",firefox_id:"",webkit_id:""},"css-media-resolution":{title:"Media Queries: resolution feature",description:"Allows a media query to be set based on the device pixels used per CSS unit. While the standard uses `min`/`max-resolution` for this, some browsers support the older non-standard `device-pixel-ratio` media query.",spec:"http://www.w3.org/TR/css3-mediaqueries/#resolution",status:"rec",links:[{url:"http://www.w3.org/blog/CSS/2012/06/14/unprefix-webkit-device-pixel-ratio/",title:"How to unprefix -webkit-device-pixel-ratio"},{url:"https://bugs.webkit.org/show_bug.cgi?id=78087",title:"WebKit Bug 78087: Implement the 'resolution' media query"}],categories:["CSS","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a #1",10:"a #1",11:"a #1"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"n",3:"n",3.5:"a #2",3.6:"a #2",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #2",10:"a #2",11:"a #2",12:"a #2",13:"a #2",14:"a #2",15:"a #2",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a x #3",5:"a x #3",6:"a x #3",7:"a x #3",8:"a x #3",9:"a x #3",10:"a x #3",11:"a x #3",12:"a x #3",13:"a x #3",14:"a x #3",15:"a x #3",16:"a x #3",17:"a x #3",18:"a x #3",19:"a x #3",20:"a x #3",21:"a x #3",22:"a x #3",23:"a x #3",24:"a x #3",25:"a x #3",26:"a x #3",27:"a x #3",28:"a x #3",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y",49:"y",50:"y",51:"y",52:"y",53:"y"},safari:{3.1:"n",3.2:"n",4:"a x #3",5:"a x #3",5.1:"a x #3",6:"a x #3",6.1:"a x #3",7:"a x #3",7.1:"a x #3",8:"a x #3",9:"a x #3",9.1:"a x #3",TP:"a x #3"},opera:{9:"n","9.5-9.6":"a x #3","10.0-10.1":"a x #3",10.5:"a x #3",10.6:"a x #3",11:"a x #3",11.1:"a x #3",11.5:"a x #3",11.6:"a x #3",12:"a x #3",12.1:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y"},ios_saf:{3.2:"u","4.0-4.1":"a x #3","4.2-4.3":"a x #3","5.0-5.1":"a x #3","6.0-6.1":"a x #3","7.0-7.1":"a x #3",8:"a x #3","8.1-8.4":"a x #3","9.0-9.2":"a x #3",9.3:"a x #3"},op_mini:{"5.0-8.0":"a #1"},android:{2.1:"u",2.2:"u",2.3:"a x #3",3:"a x #3",4:"a x #3",4.1:"a x #3","4.2-4.3":"a x #3",4.4:"y","4.4.3-4.4.4":"y",47:"y"},bb:{7:"a x #3",10:"a x #3"},op_mob:{10:"a x #3",11:"a x #3",11.1:"a x #3",11.5:"a x #3",12:"a x #3",12.1:"y",36:"y"},and_chr:{49:"y"},and_ff:{45:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"a x #3"}},notes:"",notes_by_num:{1:"Supports the `dpi` unit, but does not support `dppx` or `dpcm` units.",2:"Firefox before 16 supports only `dpi` unit, but you can set `2dppx` per `min--moz-device-pixel-ratio: 2`",3:"Supports the non-standard `min`/`max-device-pixel-ratio`"},usage_perc_y:60.78,usage_perc_a:33.86,ucprefix:false,parent:"css-mediaqueries",keywords:"@media,device-pixel-ratio,resolution,dppx,dpcm,dpi",ie_id:"mediaqueriesresolutionfeature,dppxunitfortheresolutionmediaquery",chrome_id:"5944509615570944",firefox_id:"",webkit_id:""},"xml-serializer":{title:"DOM Parsing and Serialization",description:"Various DOM parsing and serializing functions, specifically `DOMParser`, `XMLSerializer`, `innerHTML`, `outerHTML` and `adjacentHTML`.",spec:"http://www.w3.org/TR/DOM-Parsing/",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/XMLSerializer",title:"MDN - XMLSerializer"},{url:"http://ejohn.org/blog/dom-insertadjacenthtml/",title:"Article on insertAdjucentHTML"}],categories:["DOM","JS API"],stats:{ie:{5.5:"a #2",6:"a #2",7:"a #2",8:"a #2",9:"a #1",10:"y",11:"y"},edge:{12:"y",13:"y",14:"y"},firefox:{2:"a #2",3:"a #2",3.5:"a #2",3.6:"a #2",4:"a #2",5:"a #2",6:"a #2",7:"a #2",8:"a #3",9:"a #3",10:"a #3",11:"a #1",12:"y",13:"y",14:"y",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y",43:"y",44:"y",45:"y",46:"y",47:"y",48:"y"},chrome:{4:"a #1",5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment