From a5330cf75152fde1ac9af28a1225cbaf94b5844e Mon Sep 17 00:00:00 2001 From: Anthony Johnson Date: Fri, 18 Nov 2016 14:20:14 -0800 Subject: [PATCH] Scrub search results from ES This scrubs the HTML we display from ES to avoid script injection. --- bower.json | 3 ++- package.json | 4 +++- readthedocs/core/static-src/core/js/doc-embed/search.js | 5 +++-- readthedocs/core/static/core/js/readthedocs-doc-embed.js | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bower.json b/bower.json index 282e4f31d..a8b04ebad 100644 --- a/bower.json +++ b/bower.json @@ -21,7 +21,8 @@ "knockout": "~3.3.0", "jquery.payment": "~1.3.0", "jquery-migrate": "~1.2.1", - "jquery-ui": "1.8.23" + "jquery-ui": "1.8.23", + "xss": "~0.3.1" }, "resolutions": { "jquery": "2.0.3" diff --git a/package.json b/package.json index 75c53dc68..769e79cde 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "version": "0.0.1", "description": "Read the Docs build dependencies", "author": "Anthony Johnson ", - "dependencies": {}, + "dependencies": { + "cssfilter": "0.0.8" + }, "devDependencies": { "bower": "*", "bower-resolve": "^2.2.1", diff --git a/readthedocs/core/static-src/core/js/doc-embed/search.js b/readthedocs/core/static-src/core/js/doc-embed/search.js index c188bcfba..e994246bd 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/search.js +++ b/readthedocs/core/static-src/core/js/doc-embed/search.js @@ -2,7 +2,8 @@ * Sphinx search overrides */ -var rtddata = require('./rtd-data'); +var rtddata = require('./rtd-data'), + xss = require('xss/lib/index'); function init() { @@ -62,7 +63,7 @@ function attach_elastic_search_query(data) { } if (highlight.content.length) { var content = $('
') - .html(highlight.content[0]); + .html(xss(highlight.content[0])); content.find('em').addClass('highlighted'); list_item.append(content); } diff --git a/readthedocs/core/static/core/js/readthedocs-doc-embed.js b/readthedocs/core/static/core/js/readthedocs-doc-embed.js index 1a577f816..220621605 100644 --- a/readthedocs/core/static/core/js/readthedocs-doc-embed.js +++ b/readthedocs/core/static/core/js/readthedocs-doc-embed.js @@ -1 +1 @@ -!function e(t,n,r){function i(a,s){if(!n[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var d=new Error("Cannot find module '"+a+"'");throw d.code="MODULE_NOT_FOUND",d}var l=n[a]={exports:{}};t[a][0].call(l.exports,function(e){var n=t[a][1][e];return i(n?n:e)},l,l.exports,e,t,n,r)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a
"),e(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var n=e(this);expand=e(''),expand.on("click",function(e){return t.toggleCurrent(n),e.stopPropagation(),!1}),n.prepend(expand)})},e.reset=function(){var e=encodeURI(window.location.hash);if(e)try{var t=$(".wy-menu-vertical").find('[href="'+e+'"]');$(".wy-menu-vertical li.toctree-l1 li.current").removeClass("current"),t.closest("li.toctree-l2").addClass("current"),t.closest("li.toctree-l3").addClass("current"),t.closest("li.toctree-l4").addClass("current")}catch(n){console.log("Error expanding nav for anchor",n)}},e.onScroll=function(){this.winScroll=!1;var e=this.win.scrollTop(),t=e+this.winHeight,n=this.navBar.scrollTop(),r=n+(e-this.winPosition);0>e||t>this.docHeight||(this.navBar.scrollTop(r),this.winPosition=e)},e.onResize=function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},e.hashChange=function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},e.toggleCurrent=function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")},e}var i="undefined"!=typeof window?window.jQuery:e("jquery");t.exports.ThemeNav=r(),"undefined"!=typeof window&&(window.SphinxRtdTheme={StickyNav:t.exports.ThemeNav})},{jquery:"jquery"}],2:[function(e,t,n){function r(){var e=a.get(),t={project:e.project,version:e.version,page:e.page,theme:e.get_theme_name(),format:"jsonp"};"docroot"in e&&(t.docroot=e.docroot),"source_suffix"in e&&(t.source_suffix=e.source_suffix),0===window.location.pathname.indexOf("/projects/")&&(t.subproject=!0),$.ajax({url:e.api_host+"/api/v2/footer_html/",crossDomain:!0,xhrFields:{withCredentials:!0},dataType:"jsonp",data:t,success:function(e){s.init(e.version_compare),i(e),o()},error:function(){console.error("Error loading Read the Docs footer")}})}function i(e){var t=a.get();if(t.is_rtd_theme()?$("div.rst-other-versions").html(e.html):$("body").append(e.html),e.version_active?!e.version_supported:$(".rst-current-version").addClass("rst-out-of-date"),e.promo&&t.show_promo()){var n=new c.Promo(e.promo_data.id,e.promo_data.text,e.promo_data.link,e.promo_data.image);n&&n.display()}}function o(){function e(e){return/^(GET|HEAD|OPTIONS|TRACE)$/.test(e)}$.ajaxSetup({beforeSend:function(t,n){e(n.type)||t.setRequestHeader("X-CSRFToken",$("a.bookmark[token]").attr("token"))}})}var a=e("./rtd-data"),s=e("./version-compare"),c=e("../sponsorship");t.exports={init:r}},{"../sponsorship":9,"./rtd-data":4,"./version-compare":7}],3:[function(e,t,n){function r(){var e=i.get();if("builder"in e&&"mkdocs"==e.builder){$("").attr({type:"hidden",name:"project",value:e.project}).appendTo("#rtd-search-form"),$("").attr({type:"hidden",name:"version",value:e.version}).appendTo("#rtd-search-form"),$("").attr({type:"hidden",name:"type",value:"file"}).appendTo("#rtd-search-form"),$("#rtd-search-form").prop("action",e.api_host+"/search/");var t=$("nav.wy-nav-side:first"),n=$(window),r="stickynav",o=function(){t.height()<=n.height()?t.addClass(r):t.removeClass(r)};n.on("resize",o),o()}}var i=e("./rtd-data");t.exports={init:r}},{"./rtd-data":4}],4:[function(e,t,n){function r(){var e=Object.create(i),t={api_host:"https://readthedocs.org"};return $.extend(e,t,window.READTHEDOCS_DATA),e}var i={is_rtd_theme:function(){return"sphinx_rtd_theme"===this.get_theme_name()},is_sphinx_builder:function(){return!("builder"in this)||"mkdocs"!=this.builder},get_theme_name:function(){return"sphinx_rtd_theme"!==this.theme&&1===$("div.rst-other-versions").length?"sphinx_rtd_theme":this.theme},show_promo:function(){return"https://readthedocs.com"!==this.api_host&&this.is_sphinx_builder()&&this.is_rtd_theme()}};t.exports={get:r}},{}],5:[function(e,t,n){function r(){var e=o.get();i(e)}function i(e){var t=e.project,n=e.version,r=e.language||"en",i=e.api_host,o=function(e){var o=$.Deferred(),a=document.createElement("a");a.href=i,a.pathname="/api/v2/docsearch/",a.search="?q="+$.urlencode(e)+"&project="+t+"&version="+n+"&language="+r,o.then(function(n){var r=n.hits||{},i=r.hits||[];if(i.length)for(var o in i){var a=i[o],s=a.fields||{},c=$('
  • '),d=document.createElement("a"),l=a.highlight;if(d.href+=s.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX,d.search="?highlight="+$.urlencode(e),c.append($("").attr("href",d).html(s.title)),s.project!=t&&c.append($("").text(" (from project "+s.project+")")),l.content.length){var h=$('
    ').html(l.content[0]);h.find("em").addClass("highlighted"),c.append(h)}Search.output.append(c),c.slideDown(5)}i.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",i.length)):Search.query_fallback(e)}).fail(function(t){Search.query_fallback(e)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:a.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"undefined"==typeof e.responseJSON||"undefined"==typeof e.responseJSON.results?o.reject():o.resolve(e.responseJSON.results)}}).error(function(e,t,n){return o.reject()})};if("undefined"!=typeof Search&&t&&n){var a=Search.query;Search.query_fallback=a,Search.query=o}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}var o=e("./rtd-data");t.exports={init:r}},{"./rtd-data":4}],6:[function(e,t,n){function r(){var e=i.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";_gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),!("builder"in e)||"builder"in e&&"mkdocs"!=e.builder){var t=o.ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_theme()){var n=jquery("div.wy-side-scroll:first");if(!n.length){var r=jquery("nav.wy-nav-side:first"),a=$("
    ").addClass("wy-side-scroll");r.children().detach().appendTo(a),a.prependTo(r),t.navBar=a}}}}var i=e("./rtd-data"),o=e("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js");t.exports={init:r}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":4}],7:[function(e,t,n){function r(e){var t=i.get();if(!e.is_highest){var n=window.location.pathname.replace(t.version,e.slug),r=$('');r.find("a").attr("href",n).text(e.version);var o=$("div.body");o.length||(o=$("div.document")),o.prepend(r)}}var i=e("./rtd-data");t.exports={init:r}},{"./rtd-data":4}],8:[function(e,t,n){var r=(e("./sponsorship"),e("./doc-embed/footer.js")),i=e("./doc-embed/mkdocs"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),a=e("./doc-embed/search");$(document).ready(function(){r.init(),o.init(),i.init(),a.init()})},{"./doc-embed/footer.js":2,"./doc-embed/mkdocs":3,"./doc-embed/rtd-data":4,"./doc-embed/search":5,"./doc-embed/sphinx":6,"./sponsorship":9}],9:[function(e,t,n){function r(e,t,n,r){this.id=e,this.text=t,this.link=n,this.image=r,this.promo=null}t.exports={Promo:r},r.prototype.create=function(){function e(){_gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",t.id])}var t=this,n=$("nav.wy-nav-side > div.wy-side-scroll");if(n.length){promo=$("
    ").attr("class","wy-menu rst-pro");{var r=$("
    ").attr("class","rst-pro-about"),i=$("").attr("href","http://docs.readthedocs.io/en/latest/ethical-advertising.html").appendTo(r);$("").attr("class","fa fa-info-circle").appendTo(i)}if(r.appendTo(promo),t.image){{var o=$("").attr("class","rst-pro-image-wrapper").attr("href",t.link).attr("target","_blank").on("click",e);$("").attr("class","rst-pro-image").attr("src",t.image).appendTo(o)}promo.append(o)}var a=$("").html(t.text);return $(a).find("a").each(function(){$(this).attr("class","rst-pro-link").attr("href",t.link).attr("target","_blank").on("click",e)}),promo.append(a),promo.appendTo(n),promo.wrapper=$("
    ").attr("class","rst-pro-wrapper").appendTo(n),promo}},r.prototype.display=function(){var e=this.promo;e||(e=this.promo=this.create()),e&&e.show()},r.prototype.disable=function(){},r.from_variants=function(e){if(0==e.length)return null;var t=Math.floor(Math.random()*e.length),n=e[t],i=n.text,o=n.link,a=n.image,s=n.id;return new r(s,i,o,a)}},{}]},{},[8]); \ No newline at end of file +!function t(e,r,n){function i(a,s){if(!r[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[a]={exports:{}};e[a][0].call(u.exports,function(t){var r=e[a][1][t];return i(r?r:t)},u,u.exports,t,e,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a
    "),t(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var r=t(this);expand=t(''),expand.on("click",function(t){return e.toggleCurrent(r),t.stopPropagation(),!1}),r.prepend(expand)})},t.reset=function(){var t=encodeURI(window.location.hash);if(t)try{var e=$(".wy-menu-vertical").find('[href="'+t+'"]');$(".wy-menu-vertical li.toctree-l1 li.current").removeClass("current"),e.closest("li.toctree-l2").addClass("current"),e.closest("li.toctree-l3").addClass("current"),e.closest("li.toctree-l4").addClass("current")}catch(r){console.log("Error expanding nav for anchor",r)}},t.onScroll=function(){this.winScroll=!1;var t=this.win.scrollTop(),e=t+this.winHeight,r=this.navBar.scrollTop(),n=r+(t-this.winPosition);t<0||e>this.docHeight||(this.navBar.scrollTop(n),this.winPosition=t)},t.onResize=function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},t.hashChange=function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},t.toggleCurrent=function(t){var e=t.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")},t}var i="undefined"!=typeof window?window.jQuery:t("jquery");e.exports.ThemeNav=n(),"undefined"!=typeof window&&(window.SphinxRtdTheme={StickyNav:e.exports.ThemeNav})},{jquery:"jquery"}],2:[function(t,e,r){function n(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}function i(t,e,r){}function o(t,e,r){}function a(t,e,r){}function s(t,e,r){}function l(t){return t.replace(S,"<").replace(A,">")}function c(t,e,r,n){if(r=g(r),"href"===e||"src"===e){if(r=_.trim(r),"#"===r)return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===e){if(q.lastIndex=0,q.test(r))return""}else if("style"===e){if(E.lastIndex=0,E.test(r))return"";if(z.lastIndex=0,z.test(r)&&(q.lastIndex=0,q.test(r)))return"";n!==!1&&(n=n||T,r=n.process(r))}return r=m(r)}function u(t){return t.replace(C,""")}function d(t){return t.replace($,'"')}function f(t){return t.replace(j,function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))})}function p(t){return t.replace(I,":").replace(O," ")}function h(t){for(var e="",r=0,n=t.length;r/g,C=/"/g,$=/"/g,j=/&#([a-zA-Z0-9]*);?/gim,I=/:?/gim,O=/&newline;?/gim,q=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,E=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,z=/u\s*r\s*l\s*\(.*/gi,R=//g;r.whiteList=n(),r.getDefaultWhiteList=n,r.onTag=i,r.onIgnoreTag=o,r.onTagAttr=a,r.onIgnoreTagAttr=s,r.safeAttrValue=c,r.escapeHtml=l,r.escapeQuote=u,r.unescapeQuote=d,r.escapeHtmlEntities=f,r.escapeDangerHtml5Entities=p,r.clearNonPrintableCharacter=h,r.friendlyAttrValue=g,r.escapeAttrValue=m,r.onIgnoreTagStripAll=v,r.StripTagBody=b,r.stripCommentTag=w,r.stripBlankChar=y,r.cssFilter=T,r.getDefaultCSSWhiteList=k},{"./util":5,cssfilter:9}],3:[function(t,e,r){function n(t,e){var r=new a(e);return r.process(t)}var i=t("./default"),o=t("./parser"),a=t("./xss");r=e.exports=n,r.FilterXSS=a;for(var s in i)r[s]=i[s];for(var s in o)r[s]=o[s];"undefined"!=typeof window&&(window.filterXSS=e.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(t,e,r){function n(t){var e=t.indexOf(" ");if(e===-1)var r=t.slice(1,-1);else var r=t.slice(1,e+1);return r=d.trim(r).toLowerCase(),"/"===r.slice(0,1)&&(r=r.slice(1)),"/"===r.slice(-1)&&(r=r.slice(0,-1)),r}function i(t){return""===p){o+=r(t.slice(a,s)),d=t.slice(s,c+1),f=n(d),o+=e(s,o.length,f,d,i(d)),a=c+1,s=!1;continue}if(('"'===p||"'"===p)&&"="===t.charAt(c-1)){l=p;continue}}else if(p===l){l=!1;continue}}return a0;e--){var r=t[e];if(" "!==r)return"="===r?e:-1}}function c(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}function u(t){return c(t)?t.substr(1,t.length-2):t}var d=t("./util"),f=/[^a-zA-Z0-9_:\.\-]/gim;r.parseTag=o,r.parseAttr=a},{"./util":5}],5:[function(t,e,r){e.exports={indexOf:function(t,e){var r,n;if(Array.prototype.indexOf)return t.indexOf(e);for(r=0,n=t.length;r";var w=i(s),y=o[r],x=u(w.html,function(t,e){var i=d.indexOf(y,t)!==-1,o=f(r,t,e,i);if(!n(o))return o;if(i)return e=h(r,t,e,m),e?t+'="'+e+'"':t;var o=p(r,t,e,i);return n(o)?void 0:o}),s="<"+r;return x&&(s+=" "+x),w.closing&&(s+=" /"),s+=">"}var b=l(r,s,v);return n(b)?g(s):b},g);return v&&(b=v.remove(b)),b},e.exports=o},{"./default":2,"./parser":4,"./util":5,cssfilter:9}],7:[function(t,e,r){function n(t){return void 0===t||null===t}function i(t){t=t||{},t.whiteList=t.whiteList||o.whiteList,t.onAttr=t.onAttr||o.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||o.onIgnoreAttr,this.options=t}var o=t("./default"),a=t("./parser");t("./util");i.prototype.process=function(t){if(t=t||"",t=t.toString(),!t)return"";var e=this,r=e.options,i=r.whiteList,o=r.onAttr,s=r.onIgnoreAttr,l=a(t,function(t,e,r,a,l){var c=i[r],u=!1;c===!0?u=c:"function"==typeof c?u=c(a):c instanceof RegExp&&(u=c.test(a)),u!==!0&&(u=!1);var d={position:e,sourcePosition:t,source:l,isWhite:u};if(u){var f=o(r,a,d);return n(f)?r+":"+a:f}var f=s(r,a,d);if(!n(f))return f});return l},e.exports=i},{"./default":8,"./parser":10,"./util":11}],8:[function(t,e,r){function n(){var t={};return t["align-content"]=!1,t["align-items"]=!1,t["align-self"]=!1,t["alignment-adjust"]=!1,t["alignment-baseline"]=!1,t.all=!1,t["anchor-point"]=!1,t.animation=!1,t["animation-delay"]=!1,t["animation-direction"]=!1,t["animation-duration"]=!1,t["animation-fill-mode"]=!1,t["animation-iteration-count"]=!1,t["animation-name"]=!1,t["animation-play-state"]=!1,t["animation-timing-function"]=!1,t.azimuth=!1,t["backface-visibility"]=!1,t.background=!0,t["background-attachment"]=!0,t["background-clip"]=!0,t["background-color"]=!0,t["background-image"]=!0,t["background-origin"]=!0,t["background-position"]=!0,t["background-repeat"]=!0,t["background-size"]=!0,t["baseline-shift"]=!1,t.binding=!1,t.bleed=!1,t["bookmark-label"]=!1,t["bookmark-level"]=!1,t["bookmark-state"]=!1,t.border=!0,t["border-bottom"]=!0,t["border-bottom-color"]=!0,t["border-bottom-left-radius"]=!0,t["border-bottom-right-radius"]=!0,t["border-bottom-style"]=!0,t["border-bottom-width"]=!0,t["border-collapse"]=!0,t["border-color"]=!0,t["border-image"]=!0,t["border-image-outset"]=!0,t["border-image-repeat"]=!0,t["border-image-slice"]=!0,t["border-image-source"]=!0,t["border-image-width"]=!0,t["border-left"]=!0,t["border-left-color"]=!0,t["border-left-style"]=!0,t["border-left-width"]=!0,t["border-radius"]=!0,t["border-right"]=!0,t["border-right-color"]=!0,t["border-right-style"]=!0,t["border-right-width"]=!0,t["border-spacing"]=!0,t["border-style"]=!0,t["border-top"]=!0,t["border-top-color"]=!0,t["border-top-left-radius"]=!0,t["border-top-right-radius"]=!0,t["border-top-style"]=!0,t["border-top-width"]=!0,t["border-width"]=!0,t.bottom=!1,t["box-decoration-break"]=!0,t["box-shadow"]=!0,t["box-sizing"]=!0,t["box-snap"]=!0,t["box-suppress"]=!0,t["break-after"]=!0,t["break-before"]=!0,t["break-inside"]=!0,t["caption-side"]=!1,t.chains=!1,t.clear=!0,t.clip=!1,t["clip-path"]=!1,t["clip-rule"]=!1,t.color=!0,t["color-interpolation-filters"]=!0,t["column-count"]=!1,t["column-fill"]=!1,t["column-gap"]=!1,t["column-rule"]=!1,t["column-rule-color"]=!1,t["column-rule-style"]=!1,t["column-rule-width"]=!1,t["column-span"]=!1,t["column-width"]=!1,t.columns=!1,t.contain=!1,t.content=!1,t["counter-increment"]=!1,t["counter-reset"]=!1,t["counter-set"]=!1,t.crop=!1,t.cue=!1,t["cue-after"]=!1,t["cue-before"]=!1,t.cursor=!1,t.direction=!1,t.display=!0,t["display-inside"]=!0,t["display-list"]=!0,t["display-outside"]=!0,t["dominant-baseline"]=!1,t.elevation=!1,t["empty-cells"]=!1,t.filter=!1,t.flex=!1,t["flex-basis"]=!1,t["flex-direction"]=!1,t["flex-flow"]=!1,t["flex-grow"]=!1,t["flex-shrink"]=!1,t["flex-wrap"]=!1,t["float"]=!1,t["float-offset"]=!1,t["flood-color"]=!1,t["flood-opacity"]=!1,t["flow-from"]=!1,t["flow-into"]=!1,t.font=!0,t["font-family"]=!0,t["font-feature-settings"]=!0,t["font-kerning"]=!0,t["font-language-override"]=!0,t["font-size"]=!0,t["font-size-adjust"]=!0,t["font-stretch"]=!0,t["font-style"]=!0,t["font-synthesis"]=!0,t["font-variant"]=!0,t["font-variant-alternates"]=!0,t["font-variant-caps"]=!0,t["font-variant-east-asian"]=!0,t["font-variant-ligatures"]=!0,t["font-variant-numeric"]=!0,t["font-variant-position"]=!0,t["font-weight"]=!0,t.grid=!1,t["grid-area"]=!1,t["grid-auto-columns"]=!1,t["grid-auto-flow"]=!1,t["grid-auto-rows"]=!1,t["grid-column"]=!1,t["grid-column-end"]=!1,t["grid-column-start"]=!1,t["grid-row"]=!1,t["grid-row-end"]=!1,t["grid-row-start"]=!1,t["grid-template"]=!1,t["grid-template-areas"]=!1,t["grid-template-columns"]=!1,t["grid-template-rows"]=!1,t["hanging-punctuation"]=!1,t.height=!0,t.hyphens=!1,t.icon=!1,t["image-orientation"]=!1,t["image-resolution"]=!1,t["ime-mode"]=!1,t["initial-letters"]=!1,t["inline-box-align"]=!1,t["justify-content"]=!1,t["justify-items"]=!1,t["justify-self"]=!1,t.left=!1,t["letter-spacing"]=!0,t["lighting-color"]=!0,t["line-box-contain"]=!1,t["line-break"]=!1,t["line-grid"]=!1,t["line-height"]=!1,t["line-snap"]=!1,t["line-stacking"]=!1,t["line-stacking-ruby"]=!1,t["line-stacking-shift"]=!1,t["line-stacking-strategy"]=!1,t["list-style"]=!0,t["list-style-image"]=!0,t["list-style-position"]=!0,t["list-style-type"]=!0,t.margin=!0,t["margin-bottom"]=!0,t["margin-left"]=!0,t["margin-right"]=!0,t["margin-top"]=!0,t["marker-offset"]=!1,t["marker-side"]=!1,t.marks=!1,t.mask=!1,t["mask-box"]=!1,t["mask-box-outset"]=!1,t["mask-box-repeat"]=!1,t["mask-box-slice"]=!1,t["mask-box-source"]=!1,t["mask-box-width"]=!1,t["mask-clip"]=!1,t["mask-image"]=!1,t["mask-origin"]=!1,t["mask-position"]=!1,t["mask-repeat"]=!1,t["mask-size"]=!1,t["mask-source-type"]=!1,t["mask-type"]=!1,t["max-height"]=!0,t["max-lines"]=!1,t["max-width"]=!0,t["min-height"]=!0,t["min-width"]=!0,t["move-to"]=!1,t["nav-down"]=!1,t["nav-index"]=!1,t["nav-left"]=!1,t["nav-right"]=!1,t["nav-up"]=!1,t["object-fit"]=!1,t["object-position"]=!1,t.opacity=!1,t.order=!1,t.orphans=!1,t.outline=!1,t["outline-color"]=!1,t["outline-offset"]=!1,t["outline-style"]=!1,t["outline-width"]=!1,t.overflow=!1,t["overflow-wrap"]=!1,t["overflow-x"]=!1,t["overflow-y"]=!1,t.padding=!0,t["padding-bottom"]=!0,t["padding-left"]=!0,t["padding-right"]=!0,t["padding-top"]=!0,t.page=!1,t["page-break-after"]=!1,t["page-break-before"]=!1,t["page-break-inside"]=!1,t["page-policy"]=!1,t.pause=!1,t["pause-after"]=!1,t["pause-before"]=!1,t.perspective=!1,t["perspective-origin"]=!1,t.pitch=!1,t["pitch-range"]=!1,t["play-during"]=!1,t.position=!1,t["presentation-level"]=!1,t.quotes=!1,t["region-fragment"]=!1,t.resize=!1,t.rest=!1,t["rest-after"]=!1,t["rest-before"]=!1,t.richness=!1,t.right=!1,t.rotation=!1,t["rotation-point"]=!1,t["ruby-align"]=!1,t["ruby-merge"]=!1,t["ruby-position"]=!1,t["shape-image-threshold"]=!1,t["shape-outside"]=!1,t["shape-margin"]=!1,t.size=!1,t.speak=!1,t["speak-as"]=!1,t["speak-header"]=!1,t["speak-numeral"]=!1,t["speak-punctuation"]=!1,t["speech-rate"]=!1,t.stress=!1,t["string-set"]=!1,t["tab-size"]=!1,t["table-layout"]=!1,t["text-align"]=!0,t["text-align-last"]=!0,t["text-combine-upright"]=!0,t["text-decoration"]=!0,t["text-decoration-color"]=!0,t["text-decoration-line"]=!0,t["text-decoration-skip"]=!0,t["text-decoration-style"]=!0,t["text-emphasis"]=!0,t["text-emphasis-color"]=!0,t["text-emphasis-position"]=!0,t["text-emphasis-style"]=!0,t["text-height"]=!0,t["text-indent"]=!0,t["text-justify"]=!0,t["text-orientation"]=!0,t["text-overflow"]=!0,t["text-shadow"]=!0,t["text-space-collapse"]=!0,t["text-transform"]=!0,t["text-underline-position"]=!0,t["text-wrap"]=!0,t.top=!1,t.transform=!1,t["transform-origin"]=!1,t["transform-style"]=!1,t.transition=!1,t["transition-delay"]=!1,t["transition-duration"]=!1,t["transition-property"]=!1,t["transition-timing-function"]=!1,t["unicode-bidi"]=!1,t["vertical-align"]=!1,t.visibility=!1,t["voice-balance"]=!1,t["voice-duration"]=!1,t["voice-family"]=!1,t["voice-pitch"]=!1,t["voice-range"]=!1,t["voice-rate"]=!1,t["voice-stress"]=!1,t["voice-volume"]=!1,t.volume=!1,t["white-space"]=!1,t.widows=!1,t.width=!0,t["will-change"]=!1,t["word-break"]=!0,t["word-spacing"]=!0,t["word-wrap"]=!0,t["wrap-flow"]=!1,t["wrap-through"]=!1,t["writing-mode"]=!1,t["z-index"]=!1,t}function i(t,e,r){}function o(t,e,r){}r.whiteList=n(),r.getDefaultWhiteList=n,r.onAttr=i,r.onIgnoreAttr=o},{}],9:[function(t,e,r){function n(t,e){var r=new o(e);return r.process(t)}var i=t("./default"),o=t("./css");r=e.exports=n,r.FilterCSS=o;for(var a in i)r[a]=i[a];"undefined"!=typeof window&&(window.filterCSS=e.exports)},{"./css":7,"./default":8}],10:[function(t,e,r){function n(t,e){function r(){if(!o){var r=i.trim(t.slice(a,s)),n=r.indexOf(":");if(n!==-1){var c=i.trim(r.slice(0,n)),u=i.trim(r.slice(n+1));if(c){var d=e(a,l.length,c,u,r);d&&(l+=d+"; ")}}}a=s+1}t=i.trimRight(t),";"!==t[t.length-1]&&(t+=";");for(var n=t.length,o=!1,a=0,s=0,l="";s").attr({type:"hidden",name:"project",value:t.project}).appendTo("#rtd-search-form"),$("").attr({type:"hidden",name:"version",value:t.version}).appendTo("#rtd-search-form"),$("").attr({type:"hidden",name:"type",value:"file"}).appendTo("#rtd-search-form"),$("#rtd-search-form").prop("action",t.api_host+"/search/");var e=$("nav.wy-nav-side:first"),r=$(window),n="stickynav",o=function(){e.height()<=r.height()?e.addClass(n):e.removeClass(n)};r.on("resize",o),o()}}var i=t("./rtd-data");e.exports={init:n}},{"./rtd-data":14}],14:[function(t,e,r){function n(){var t=Object.create(i),e={api_host:"https://readthedocs.org"};return $.extend(t,e,window.READTHEDOCS_DATA),t}var i={is_rtd_theme:function(){return"sphinx_rtd_theme"===this.get_theme_name()},is_sphinx_builder:function(){return!("builder"in this)||"mkdocs"!=this.builder},get_theme_name:function(){return"sphinx_rtd_theme"!==this.theme&&1===$("div.rst-other-versions").length?"sphinx_rtd_theme":this.theme},show_promo:function(){return"https://readthedocs.com"!==this.api_host&&this.is_sphinx_builder()&&this.is_rtd_theme()}};e.exports={get:n}},{}],15:[function(t,e,r){function n(){var t=o.get();i(t)}function i(t){var e=t.project,r=t.version,n=t.language||"en",i=t.api_host,o=function(t){var o=$.Deferred(),s=document.createElement("a");s.href=i,s.pathname="/api/v2/docsearch/",s.search="?q="+$.urlencode(t)+"&project="+e+"&version="+r+"&language="+n,o.then(function(r){var n=r.hits||{},i=n.hits||[];if(i.length)for(var o in i){var s=i[o],l=s.fields||{},c=$('
  • '),u=document.createElement("a"),d=s.highlight;if(u.href+=l.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX,u.search="?highlight="+$.urlencode(t),c.append($("
    ").attr("href",u).html(l.title)),l.project!=e&&c.append($("").text(" (from project "+l.project+")")),d.content.length){var f=$('
    ').html(a(d.content[0]));f.find("em").addClass("highlighted"),c.append(f)}Search.output.append(c),c.slideDown(5)}i.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",i.length)):Search.query_fallback(t)}).fail(function(e){Search.query_fallback(t)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:s.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(t,e){return"undefined"==typeof t.responseJSON||"undefined"==typeof t.responseJSON.results?o.reject():o.resolve(t.responseJSON.results)}}).error(function(t,e,r){return o.reject()})};if("undefined"!=typeof Search&&e&&r){var s=Search.query;Search.query_fallback=s,Search.query=o}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}var o=t("./rtd-data"),a=t("./../../../../../../bower_components/xss/lib/index");e.exports={init:n}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":14}],16:[function(t,e,r){function n(){var t=i.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var t=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";_gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",t])}),!("builder"in t)||"builder"in t&&"mkdocs"!=t.builder){var e=o.ThemeNav;if($(document).ready(function(){setTimeout(function(){e.navBar||e.enable()},1e3)}),t.is_rtd_theme()){var r=jquery("div.wy-side-scroll:first");if(!r.length){var n=jquery("nav.wy-nav-side:first"),a=$("
    ").addClass("wy-side-scroll");n.children().detach().appendTo(a),a.prependTo(n),e.navBar=a}}}}var i=t("./rtd-data"),o=t("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js");e.exports={init:n}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":14}],17:[function(t,e,r){function n(t){var e=i.get();if(!t.is_highest){var r=window.location.pathname.replace(e.version,t.slug),n=$('');n.find("a").attr("href",r).text(t.version);var o=$("div.body");o.length||(o=$("div.document")),o.prepend(n)}}var i=t("./rtd-data");e.exports={init:n}},{"./rtd-data":14}],18:[function(t,e,r){var n=(t("./sponsorship"),t("./doc-embed/footer.js")),i=t("./doc-embed/mkdocs"),o=(t("./doc-embed/rtd-data"),t("./doc-embed/sphinx")),a=t("./doc-embed/search");$(document).ready(function(){n.init(),o.init(),i.init(),a.init()})},{"./doc-embed/footer.js":12,"./doc-embed/mkdocs":13,"./doc-embed/rtd-data":14,"./doc-embed/search":15,"./doc-embed/sphinx":16,"./sponsorship":19}],19:[function(t,e,r){function n(t,e,r,n){this.id=t,this.text=e,this.link=r,this.image=n,this.promo=null}e.exports={Promo:n},n.prototype.create=function(){function t(){_gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}var e=this,r=$("nav.wy-nav-side > div.wy-side-scroll");if(r.length){promo=$("
    ").attr("class","wy-menu rst-pro");var n=$("
    ").attr("class","rst-pro-about"),i=$("").attr("href","http://docs.readthedocs.io/en/latest/ethical-advertising.html").appendTo(n);$("").attr("class","fa fa-info-circle").appendTo(i);if(n.appendTo(promo),e.image){var o=$("").attr("class","rst-pro-image-wrapper").attr("href",e.link).attr("target","_blank").on("click",t);$("").attr("class","rst-pro-image").attr("src",e.image).appendTo(o);promo.append(o)}var a=$("").html(e.text);return $(a).find("a").each(function(){$(this).attr("class","rst-pro-link").attr("href",e.link).attr("target","_blank").on("click",t)}),promo.append(a),promo.appendTo(r),promo.wrapper=$("
    ").attr("class","rst-pro-wrapper").appendTo(r),promo}},n.prototype.display=function(){var t=this.promo;t||(t=this.promo=this.create()),t&&t.show()},n.prototype.disable=function(){},n.from_variants=function(t){if(0==t.length)return null;var e=Math.floor(Math.random()*t.length),r=t[e],i=r.text,o=r.link,a=r.image,s=r.id;return new n(s,i,o,a)}},{}]},{},[18]); \ No newline at end of file