diff --git a/css/main.css b/css/main.css index 18ba18a6..4f314994 100644 --- a/css/main.css +++ b/css/main.css @@ -1 +1 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}*{box-sizing:border-box}b,strong{font-weight:600}em,i{font-style:italic}[type=checkbox]{box-sizing:border-box;padding:0}a,a:hover{color:#812ce5;text-decoration:none}a:active,a:hover{outline-width:0}a:not([href]){color:inherit;text-decoration:none}p{margin-bottom:1em;margin-top:0}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:1.5em}h1{font-size:32px}h2{font-size:24px}h3{font-size:20px}h4{font-size:16px}h5{font-size:14px}h6{font-size:13.6px}ol,ul{margin-bottom:1em;margin-top:0;padding-left:2em}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-top:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}li{word-wrap:break-all}li>p{margin-top:1em}li+li{margin-top:.25em}img{border-style:none;box-sizing:content-box;max-width:100%}img[align=right]{padding-left:1.25em}img[align=left]{padding-right:1.25em}table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:16px;margin-top:0;overflow:auto;width:100%}table tr{background-color:transparent;border-top:1px solid #dfe2e5}table tr:nth-child(2n){background-color:#f6f8fa}table td,table th{border:1px solid #dfe2e5;padding:6px 13px}table th{background-color:inherit;font-weight:600}table td,table th{color:inherit}blockquote{color:#6a737d;font-size:16px;margin:0 0 16px;padding:0 1em}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}code{background-color:rgba(27,31,35,.05);border-radius:3px;color:inherit;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:85%;margin:0;padding:3.2px 6.4px}pre{margin-bottom:16px}pre code{background-color:transparent;border:0;display:inline;font-size:85%;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;white-space:pre;word-break:normal;word-wrap:normal}kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:68.75%;line-height:10px;padding:3px 5px;vertical-align:middle}hr{border:1px solid #dfe2e5;box-sizing:content-box;margin:1.5em 0;overflow:hidden;padding:0}hr:after,hr:before{content:"";display:table}hr:after{clear:both}body{background-color:#fff;min-height:100vh;text-rendering:optimizeLegibility}@media only screen and (min-width:736px){body{display:flex;flex-direction:column}}article:after,article:before{content:"";display:table}article:after{clear:both}article>:first-child{margin-top:0}article>:last-child{margin-bottom:0}article iframe,article p img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.anchor{display:block;position:relative;top:-80px}.hash-link{line-height:1;margin-left:-20px;opacity:0;padding-right:4px;transition:opacity .3s}.hash-link:hover{opacity:1!important;transition:none}.hash-link .hash-link-icon{vertical-align:middle}.button{border:1px solid #812ce5;border-radius:3px;color:#812ce5;display:inline-block;font-size:14px;font-weight:400;line-height:1.2em;padding:10px;text-decoration:none!important;text-transform:uppercase;transition:background .3s,color .3s}.button:hover{background:#812ce5;color:#fff}h1:hover .hash-link,h2:hover .hash-link,h3:hover .hash-link,h4:hover .hash-link{opacity:.5;transition:none}blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564;padding:15px 30px 15px 15px}.wrapper{margin:0 auto;max-width:1100px;padding:0 20px}.wrapper blockquote>p:first-child{padding-top:0}.center{display:block}.center,.homeContainer{text-align:center}.homeContainer .homeWrapper{padding:2em 10px}.homeContainer .homeWrapper .wrapper{margin:0 auto;max-width:900px;padding:0 20px}.homeContainer .homeWrapper .projectLogo img{height:100px;margin-bottom:0}.homeContainer .homeWrapper #project_title{font-size:300%;letter-spacing:-.08em;line-height:1em;margin-bottom:80px}.homeContainer .homeWrapper #project_tagline{font-size:200%;letter-spacing:-.04em;line-height:1em}.projectLogo{display:none;pointer-events:none}.projectLogo img{height:100px;margin-bottom:0}.projectIntro{margin:40px 0}.projectTitle{color:#812ce5;font-size:250%;line-height:1em}.projectTitle>small{display:block;font-weight:400;font-size:50%;line-height:1em;margin:.7em 0 1.3em}@media only screen and (min-width:480px){.projectTitle{font-size:300%;margin:.3em 0}.projectLogo img{height:200px;margin-bottom:10px}.homeContainer .homeWrapper{padding-left:10px;padding-right:10px}}@media only screen and (min-width:736px){.homeContainer .homeWrapper{position:relative}.homeContainer .homeWrapper #inner{max-width:600px;padding-right:40px}}@media only screen and (min-width:1200px){.homeContainer .homeWrapper #inner{max-width:750px}.homeContainer .homeWrapper .projectLogo{align-items:center;bottom:0;display:flex;justify-content:flex-end;left:0;padding:2em 100px 4em;position:absolute;right:0;top:0}.homeContainer .homeWrapper .projectLogo img{height:100%;max-height:250px}}@media only screen and (min-width:1500px){.homeContainer .homeWrapper #inner{max-width:1100px;padding-bottom:40px;padding-top:40px}.wrapper{max-width:1400px}}.mainContainer{flex:1 1 0%;max-width:100%;padding:40px 0}.mainContainer .wrapper{text-align:left}.mainContainer .wrapper .allShareBlock{padding:10px 0}.mainContainer .wrapper .allShareBlock .pluginBlock{margin:12px 0;padding:0}.mainContainer .wrapper .post{position:relative}.mainContainer .wrapper .post.basicPost{margin-top:30px}.mainContainer .wrapper .post .postHeader{margin-bottom:16px}.mainContainer .wrapper .post .postHeaderTitle{margin-top:0;padding:0}.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:90px;margin-top:-90px;visibility:hidden;pointer-events:none}.mainContainer .wrapper .post .postSocialPlugins{padding-top:1em}.mainContainer .wrapper .post .docPagination{background:#812ce5;bottom:0;left:0;position:absolute;right:0}.mainContainer .wrapper .post .docPagination .pager{display:inline-block;width:50%}.mainContainer .wrapper .post .docPagination .pagingNext{float:right;text-align:right}.mainContainer .wrapper .post .docPagination a{border:none;color:#fff;display:block;padding:4px 12px}.mainContainer .wrapper .post .docPagination a:hover{background-color:#f9f9f9;color:#393939}.mainContainer .wrapper .post .docPagination a .pagerLabel{display:inline}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:none}@media only screen and (min-width:480px){.mainContainer .wrapper .post .docPagination a .pagerLabel{display:none}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:inline}}@media only screen and (min-width:1024px){.mainContainer .wrapper .post{display:block}.mainContainer .wrapper .posts .post{width:100%}}@media only screen and (max-width:1023px){.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:200px;margin-top:-200px;visibility:hidden;pointer-events:none}}.fixedHeaderContainer{background:#812ce5;color:#fff;min-height:50px;padding:8px 0;position:fixed;width:100%;z-index:9999;transform:translateZ(0)}@media only screen and (min-width:1024px){.fixedHeaderContainer{flex-shrink:0}}.fixedHeaderContainer a{align-items:center;border:0;color:#fff;display:flex;flex-flow:row nowrap;height:34px;z-index:10000}.fixedHeaderContainer header{display:flex;flex-flow:row nowrap;position:relative;text-align:left}.fixedHeaderContainer header img{height:100%;margin-right:10px}.fixedHeaderContainer header .headerTitle{font-size:1.25em;margin:0}.fixedHeaderContainer header .headerTitleWithLogo{font-size:1.25em;line-height:18px;margin:0;position:relative;z-index:9999}.fixedHeaderContainer header h3{color:#fff;font-size:16px;margin:0 0 0 10px;text-decoration:underline}@media (max-width:480px){.headerTitle{font-size:17px}.headerTitleWithLogo{display:none!important}}.promoSection{display:flex;flex-flow:column wrap;font-size:125%;line-height:1.6em;position:relative;z-index:99}.promoSection .promoRow{padding:10px 0}.promoSection .promoRow .pluginWrapper{display:block}.promoSection .promoRow .pluginWrapper.ghStarWrapper,.promoSection .promoRow .pluginWrapper.ghWatchWrapper{height:28px}.promoSection .promoRow .pluginRowBlock{display:flex;flex-wrap:wrap;justify-content:center;margin:0 -2px}.promoSection .promoRow .pluginRowBlock .pluginWrapper{padding:0 2px}.promoSection .promoRow .pluginRowBlock iframe{margin-left:2px;margin-top:5px}input[type=search]{-moz-appearance:none;-webkit-appearance:none}.navSearchWrapper{align-items:center;align-self:center;display:flex;justify-content:center;padding-left:10px;position:absolute;right:10px;top:10px}.navSearchWrapper:before{border:3px solid #e5e5e5;border-radius:50%;content:" ";display:block;height:6px;left:15px;position:absolute;top:50%;transform:translateY(-58%);width:6px;z-index:1}.navSearchWrapper:after{background:#e5e5e5;content:" ";height:7px;left:24px;position:absolute;top:55%;transform:rotate(-45deg);width:3px;z-index:1}.navSearchWrapper .aa-dropdown-menu{background:#f9f9f9;border:3px solid rgba(57,57,57,.25);color:#393939;font-size:14px;left:auto!important;line-height:1.2em;right:0!important}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header{background:#812ce5;color:#fff;font-size:14px;font-weight:400}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#812ce5;color:#fff}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--title .algolia-docsearch-suggestion--highlight{color:#812ce5}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion__secondary{border-color:rgba(57,57,57,.3)}input#search_input_react{background-color:rgba(0,0,0,.2);border:none;border-radius:20px;color:#fff;font-size:14px;font-weight:300;line-height:20px;outline:none;padding-left:25px;position:relative;transition:width .5s ease;width:170px}.navSearchWrapper:before{left:24px}.navSearchWrapper:after{left:35px}input#search_input_react:active,input#search_input_react:focus{color:#fff;width:220px}.navigationSlider .slidingNav .navSearchWrapper .algolia-docsearch-footer a{height:auto}@media only screen and (max-width:735px){.navSearchWrapper{width:40%}}input::-moz-placeholder{color:#e5e5e5}input::placeholder{color:#e5e5e5}.hljs{padding:1.25rem 1.5rem}.gridBlock{padding:0}.gridBlock>*{box-sizing:border-box}.gridBlock .fourByGridBlock img,.gridBlock .threeByGridBlock img,.gridBlock .twoByGridBlock img{max-width:100%}.gridBlock .gridClear{clear:both}@media only screen and (max-width:735px){.gridBlock .fourByGridBlock{flex:1 0 26%}}@media only screen and (min-width:736px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}.gridBlock>*{margin:0 12px}.gridBlock>:first-child{margin-left:0}.gridBlock>:last-child{margin-right:0}.gridBlock .twoByGridBlock{flex:1 0 40%}.gridBlock .threeByGridBlock{flex:1 0 26%}.gridBlock .fourByGridBlock{flex:1 0 20%}h2+.gridBlock{padding-top:20px}}@media only screen and (min-width:1400px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}}.alignCenter{text-align:center}.alignRight{text-align:right}.imageAlignSide{display:flex;flex-flow:row wrap}.blockImage{max-width:730px}.imageAlignSide .blockImage{flex:0 1 500px;max-width:500px}@media only screen and (max-width:735px){.imageAlignSide .blockImage{display:none}}.imageAlignSide .blockContent{flex:1 1}.imageAlignBottom .blockImage{margin:0 auto 20px;max-width:730px}.imageAlignBottom.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignTop .blockImage{max-width:80px}.imageAlignTop.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignRight .blockImage{margin-left:40px}.imageAlignLeft .blockImage{margin-right:40px}.container .gridBlock .blockContent p{padding:0}.container .wrapper .alignCenter h2{text-align:center}.container .wrapper .imageAlignSide h2{text-align:left}.container .wrapper .imageAlignSide p{margin:0 0 40px;max-width:560px}.highlightBackground{background:rgba(153,66,79,.7);color:#fff}.highlightBackground a{font-weight:800}.container.highlightBackground .wrapper h1,.container.highlightBackground .wrapper h2,.container.highlightBackground .wrapper h3,.container.highlightBackground .wrapper h4,.container.highlightBackground .wrapper h5,.highlightBackground a{border-color:#fff;color:#fff}.lightBackground{background:#f7f7f7}.darkBackground{background:grey;color:#fff}.darkBackground a,.darkBackground code{color:#d6b3b8}.container.darkBackground .wrapper h1,.container.darkBackground .wrapper h2,.container.darkBackground .wrapper h3,.container.darkBackground .wrapper h4,.container.darkBackground .wrapper h5{border-color:#fff;color:#fff}.container.paddingAll{padding:40px}.container.paddingBottom{padding-bottom:80px}.container.paddingLeft{padding-left:40px}.container.paddingRight{padding-right:40px}.container.paddingTop{padding-top:80px}@media only screen and (max-width:735px){.container.paddingBottom{padding-bottom:40px}.container.paddingTop{padding-top:20px}}@media only screen and (max-width:1023px){.responsiveList .blockContent{position:relative}.responsiveList .blockContent>div{padding-left:20px}.responsiveList .blockContent:before{content:"\2022";position:absolute}}.navigationSlider .navSlideout{cursor:pointer;padding-top:4px;position:absolute;right:10px;top:0;transition:top .3s;z-index:101}.navigationSlider .slidingNav{bottom:auto;box-sizing:border-box;left:0;position:fixed;right:0;top:0}.navigationSlider .slidingNav.slidingNavActive{height:auto;padding-top:42px;width:300px}.navigationSlider .slidingNav ul{background:#ffaf00;box-sizing:border-box;color:#fff;display:flex;flex-wrap:nowrap;list-style:none;margin-top:50px;padding:0;width:100%}.navigationSlider .slidingNav.slidingNavActive ul{display:block}.navigationSlider .slidingNav ul li{flex:1 1 auto;margin:0;text-align:center;white-space:nowrap}.navigationSlider .slidingNav ul li a{align-items:center;box-sizing:border-box;color:#812ce5;color:inherit;display:flex;font-size:.9em;height:auto;height:50px;justify-content:center;margin:0;padding:10px;transition:background-color .3s}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a,.navigationSlider .slidingNav ul li>a:focus,.navigationSlider .slidingNav ul li>a:hover{background-color:#812ce5}.languages-icon{width:20px}#languages-dropdown{pointer-events:none;position:absolute;width:100%}#languages-dropdown.visible{display:flex}#languages-dropdown.hide{display:none}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:column;min-width:120px;pointer-events:all}#languages li{display:block}.navPusher{left:0;min-height:100%;padding-top:100px;position:relative;z-index:99}.singleRowMobileNav.navPusher{padding-top:50px}.navPusher:after{background:rgba(0,0,0,.4);content:"";height:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .5s,width .1s .5s,height .1s .5s;width:0}@media screen and (min-width:1024px){.navPusher{display:flex;flex-direction:column;min-height:calc(100vh - 50px);padding-top:50px}.navPusher,.navPusher>:first-child{flex-grow:1}}.sliderActive .navPusher:after{height:100%;opacity:1;transition:opacity .5s;width:100%;z-index:100}@media only screen and (max-width:1024px){.reactNavSearchWrapper input#search_input_react{background-color:rgba(242,196,178,.25);border:none;border-radius:20px;box-sizing:border-box;color:#393939;font-size:14px;line-height:20px;outline:none;padding-left:38px;position:relative;transition:background-color .2s cubic-bezier(.68,-.55,.265,1.55),width .2s cubic-bezier(.68,-.55,.265,1.55),color .2s ease;width:100%;height:30px}.reactNavSearchWrapper input#search_input_react:active,.reactNavSearchWrapper input#search_input_react:focus{background-color:#812ce5;color:#fff}.reactNavSearchWrapper .algolia-docsearch-suggestion--subcategory-inline{display:none}.reactNavSearchWrapper>span{width:100%}.reactNavSearchWrapper .aa-dropdown-menu{font-size:12px;line-height:2em;padding:0;border-width:1px;min-width:500px}.reactNavSearchWrapper .algolia-docsearch-suggestion__secondary{border-top:none}.aa-suggestions{min-height:140px;max-height:60vh;-webkit-overflow-scrolling:touch;overflow-y:scroll}#languages-dropdown{left:0;top:50px}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:row}}@media only screen and (min-width:1024px){.navSearchWrapper{padding-left:10px;position:relative;right:auto;top:auto}.reactNavSearchWrapper input#search_input_react{height:100%;padding-top:8px;padding-bottom:8px;padding-left:38px}.navSearchWrapper .algolia-autocomplete{display:block}.navigationSlider{height:34px;margin-left:auto;position:relative}.navigationSlider .navSlideout{display:none}.navigationSlider nav.slidingNav{background:none;height:auto;position:relative;right:auto;top:auto;width:auto}.navigationSlider .slidingNav ul{background:none;display:flex;flex-flow:row nowrap;margin:0;padding:0;width:auto}.navigationSlider .slidingNav ul li a{border:0;color:hsla(0,0%,100%,.8);display:flex;font-size:16px;font-size:1em;font-weight:300;height:32px;line-height:1.2em;margin:0;padding:6px 10px}.navigationSlider .slidingNav ul li.siteNavGroupActive a,.navigationSlider .slidingNav ul li.siteNavItemActive a,.navigationSlider .slidingNav ul li a:hover{color:#fff}}@media only screen and (max-width:735px){.navigationSlider .slidingNav ul{overflow-x:auto}.navigationSlider .slidingNav ul::-webkit-scrollbar{display:none}.reactNavSearchWrapper .aa-dropdown-menu{min-width:400px}}@media only screen and (max-width:475px){.reactNavSearchWrapper .aa-dropdown-menu{min-width:300px}}.docMainWrapper .wrapper{padding-left:0;padding-right:0;padding-top:10px}@media only screen and (min-width:1024px){.docMainWrapper{width:100%}.docMainWrapper>*{margin:0 24px}.docMainWrapper>:first-child{margin-left:0}.docMainWrapper>:last-child{margin-right:0}.docMainWrapper .mainContainer{min-width:0}}.edit-page-link{float:right;font-size:10px;font-weight:400;margin-top:3px;text-decoration:none}@media only screen and (max-width:1023px){.edit-page-link{display:none}}.docLastUpdate{font-size:13px;font-style:italic;margin:20px 0;text-align:right}.docs-prevnext{margin:20px 0}.docs-prevnext:after{clear:both;content:" ";display:table}.docs-next{float:right}.docs-prev{float:left}@media only screen and (max-width:735px){.docs-next{clear:both;float:left}.docs-next,.docs-prev{margin:10px 0}.arrow-next{float:right;margin-left:10px}.arrow-prev{float:left;margin-right:10px}.function-name-prevnext{width:200px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hide{display:none}.collapsible{cursor:pointer}.collapsible .arrow{float:right;margin-right:8px;margin-top:-4px;transform:rotate(90deg);transition:transform .2s linear}.collapsible .arrow.rotate{transform:rotate(180deg)}@media only screen and (max-width:1023px){.docsNavContainer{background:#fff;left:0;position:fixed;width:100%;z-index:100}}@media only screen and (min-width:1024px){.docsNavContainer{flex:0 0 240px;height:calc(100vh - 50px);position:sticky;overflow-y:auto;top:50px}}.docsSliderActive.docsNavContainer{box-sizing:border-box;height:100%;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior:contain;padding-bottom:50px}.docsNavContainer .toc .navBreadcrumb{background-color:#f1f1f1;box-sizing:border-box;display:flex;flex-flow:row nowrap;font-size:12px;height:48px;overflow:hidden;padding:8px 20px}.docsNavContainer .toc .navWrapper{padding:0}@media only screen and (min-width:1024px){.docsNavContainer .toc .navBreadcrumb{display:none}.navBreadcrumb h2{padding:0 10px}.separateOnPageNav .docsNavContainer{flex:0 0 240px}}.navBreadcrumb a,.navBreadcrumb span{border:0;color:#393939}@media only screen and (max-width:735px){.anchor{top:-144px}}@media only screen and (min-width:1024px){.toc{padding:40px 0}}.toc section{padding:0;position:relative}.toc section .navGroups{display:none;padding:48px 20px 60px}.toc .toggleNav{color:#393939;position:relative}.toc .toggleNav .navToggle{cursor:pointer;height:32px;margin-right:10px;position:relative;text-align:left;width:18px}.hamburger-menu{position:absolute;top:6px;width:100%}.line1,.line2,.line3{width:100%;height:3px;background-color:#393939;margin:3px 0;transition:.4s;border-radius:10px}.docsSliderActive .hamburger-menu{top:12px}.docsSliderActive .line1{position:absolute;top:50%;transform:rotate(-45deg)}.docsSliderActive .line2{display:none}.docsSliderActive .line3{position:absolute;top:50%;transform:rotate(45deg)}.toggleNav h2 i{padding:0 4px}.toc .toggleNav .navGroup{margin-bottom:16px}.toc .toggleNav .subNavGroup{margin-bottom:0}.toc .toggleNav .navGroup .navGroupCategoryTitle{color:#393939;font-size:18px;font-weight:500;line-height:1.2em;margin-bottom:8px;margin-top:0}.toc .toggleNav .navGroup .navGroupSubcategoryTitle{color:#393939;font-size:14px;font-weight:500;line-height:1.5;margin-bottom:0;margin-top:0;padding:4px 0}.toc .toggleNav .navGroup .navListItem{margin:0}.toc .toggleNav .navGroup h3 i:not(:empty){box-sizing:border-box;color:rgba(57,57,57,.5);display:inline-block;height:16px;margin-right:10px;text-align:center;transition:color .2s;width:16px}.toc .toggleNav ul{padding:0 8px}.docsSliderActive .toc .toggleNav ul{padding-left:0}.toc .toggleNav ul li{list-style-type:none;padding:0}.toc .toggleNav ul li a{border:none;color:#717171;display:block;font-size:14px;padding:4px 0;transition:color .3s}.toc .toggleNav ul li.navListItemActive a,.toc .toggleNav ul li a:focus,.toc .toggleNav ul li a:hover{color:#812ce5}.docsSliderActive .toc .navBreadcrumb,.tocActive .navBreadcrumb{border-bottom:1px solid #ccc;margin-bottom:20px;position:fixed;width:100%}.toc .toggleNav .navBreadcrumb h2{border:0;flex-grow:1;font-size:16px;font-weight:600;line-height:32px;margin:0;padding:0}.docsSliderActive .toc section .navGroups{display:block;padding-top:60px}.tocToggler{cursor:pointer;height:32px;line-height:32px;margin-right:-10px;padding:0 10px}.icon-toc{box-sizing:border-box;display:inline-block;line-height:normal;position:relative;top:-1px;vertical-align:middle}.icon-toc,.icon-toc:after,.icon-toc:before{background-color:currentColor;border:1px solid;border-radius:50%;box-sizing:border-box;height:4px;width:4px}.icon-toc:after,.icon-toc:before{content:"";position:absolute}.icon-toc:before{left:-1px;top:-7px}.icon-toc:after{left:-1px;top:5px}.tocActive .icon-toc{border-radius:0;height:16px;transform:rotate(45deg);width:3px}.tocActive .icon-toc:before{border-radius:0;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);width:16px}.tocActive .icon-toc:after{content:""}@media only screen and (min-width:1024px){.docMainWrapper{display:flex;flex-flow:row nowrap}.docMainWrapper .wrapper{padding-top:0;padding-left:0;padding-right:0}}.onPageNav{display:none;margin-bottom:40px}.onPageNav::-webkit-scrollbar{width:7px}.onPageNav::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb:hover{background:#555}.onPageNav a{color:#717171}.onPageNav .toc-headings>li>a.active,.onPageNav .toc-headings>li>a.hover{font-weight:600;color:#812ce5}.onPageNav ul{list-style:none}.onPageNav ul li{font-size:12px;line-height:16px;padding-bottom:8px}.onPageNav ul ul{padding:8px 0 0 20px}.onPageNav ul ul li{padding-bottom:5px}@media only screen and (min-width:1024px){.toc section .navGroups{display:block;padding:8px 0 0}.navBreadcrumb h2{padding:0 10px}}@supports (position:sticky){@media only screen and (max-width:1023px){.tocActive .onPageNav{background:#fff;bottom:0;display:block;left:0;overflow-y:auto;overscroll-behavior:contain;padding:0 20px;position:fixed;right:0;top:148px;z-index:10;margin-bottom:0}.tocActive .singleRowMobileNav .onPageNav{top:98px}.tocActive .navBreadcrumb h2,.tocActive .navToggle{visibility:hidden}.tocActive .onPageNav>.toc-headings{padding:12px 0}}@media only screen and (min-width:1024px){.separateOnPageNav .headerWrapper.wrapper,.separateOnPageNav .wrapper{max-width:1400px}.separateOnPageNav .toc{width:auto}.separateOnPageNav.sideNavVisible .navPusher .mainContainer{flex:1 auto;max-width:100%;min-width:0}.onPageNav{align-self:flex-start;display:block;flex:0 0 240px;max-height:calc(100vh - 90px);overflow-y:auto;position:sticky;top:90px}.onPageNav>.toc-headings{border-left:1px solid #e0e0e0;padding:10px 0 2px 15px}.tocToggler{display:none}}}.blog .wrapper{max-width:1100px}.blogContainer .posts .post{border-bottom:1px solid #e0e0e0;border-radius:3px;margin-bottom:20px;padding-bottom:20px}.blogContainer .postHeader{margin-bottom:10px}.blogContainer .postHeaderTitle{margin-top:0}.blogContainer .postHeader p.post-meta{margin-bottom:10px;padding:0}.blogContainer .postHeader .authorBlock{display:flex}.blogContainer .postHeader .post-authorName{color:rgba(57,57,57,.7);display:flex;flex-direction:column;font-size:14px;font-weight:400;justify-content:center;margin-right:10px;margin-top:0;margin-bottom:0;padding:0}.blogContainer .postHeader .authorPhoto{border-radius:50%;height:30px;overflow:hidden;width:30px}.blogContainer .postHeader .authorPhoto.authorPhotoBig{height:50px;width:50px}.blog-recent{margin:20px 0}.blog-recent>a{float:left}@media only screen and (max-width:735px){.blog-recent{height:40px}}.blogSocialSection{display:block;padding:36px 0}.blogSocialSection .blogSocialSectionItem{padding-bottom:5px}.fb-like{display:block;margin-bottom:20px;width:100%}.more-users{margin:0 auto;max-width:560px;text-align:center}.productShowcaseSection{padding:0 20px;text-align:center}.productShowcaseSection.paddingTop{padding-top:20px}.productShowcaseSection.paddingBottom{padding-bottom:80px}.productShowcaseSection h2{color:#812ce5;font-size:30px;line-height:1em;margin-top:20px;padding:10px 0;text-align:center}.productShowcaseSection p{margin:0 auto;max-width:560px;padding:.8em 0}.productShowcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center;padding:20px}.productShowcaseSection .logos img{max-height:110px;padding:20px;width:110px}@media only screen and (max-width:735px){.productShowcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.showcaseSection{margin:0 auto;max-width:900px}.showcaseSection,.showcaseSection .prose h1{text-align:center}.showcaseSection .prose{margin:0 auto;max-width:560px;text-align:center}.showcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center}.showcaseSection .logos img{max-height:128px;padding:20px;width:128px}@media only screen and (max-width:735px){.showcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.nav-footer{background:#20232a;border:none;color:#202020;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:24px;padding-bottom:2em;padding-top:2em;position:relative}@media only screen and (min-width:1024px){.nav-footer{flex-shrink:0}}.nav-footer .sitemap{display:flex;justify-content:space-between;margin:0 auto 3em;max-width:1080px}.nav-footer .sitemap div{flex:1}.nav-footer .sitemap .nav-home{display:table;height:72px;margin:-12px 20px 0 0;opacity:.4;padding:10px;transition:opacity .15s ease-in-out;width:72px}.nav-footer .sitemap .nav-home:focus,.nav-footer .sitemap .nav-home:hover{opacity:1}@media only screen and (max-width:735px){.nav-footer .sitemap{display:flex;flex-direction:column;margin:0 2em 3em;width:calc(100% - 4em)}.nav-footer .sitemap>div{margin-bottom:18px}}.nav-footer .sitemap a{color:hsla(0,0%,100%,.6);display:block;margin:2px 0;padding:3px 0}.nav-footer .sitemap a:focus,.nav-footer .sitemap a:hover,.nav-footer .sitemap h5>a:focus,.nav-footer .sitemap h5>a:hover{color:#fff;text-decoration:none}.nav-footer .sitemap h5,.nav-footer .sitemap h6{margin:0 0 10px}.nav-footer .sitemap h5,.nav-footer .sitemap h5>a,.nav-footer .sitemap h6,.nav-footer .sitemap h6>a{color:#fff}.nav-footer .sitemap h5>a,.nav-footer .sitemap h6>a{margin:0 -10px}.nav-footer .fbOpenSource{display:block;margin:1em auto;opacity:.4;transition:opacity .15s ease-in-out;width:170px}.nav-footer .fbOpenSource:hover{opacity:1}.nav-footer .copyright{color:hsla(0,0%,100%,.4);text-align:center}.nav-footer .social{padding:5px 0}.tabs{border-top:1px solid #cfcfcf}.nav-tabs{display:flex;border-bottom:4px solid #e0e0e0;width:100%;padding:0;overflow-x:auto;white-space:nowrap;max-height:100%}.nav-tabs::-webkit-scrollbar{display:none}.tabs .tab-pane:focus{outline:none}.tabs .nav-tabs>div{font-size:14px;line-height:1.14286;padding:12px 16px;text-decoration:none;display:block;cursor:pointer}.tabs .nav-tabs>div.active{border-bottom:4px solid #812ce5}.tab-pane{display:none}.tab-pane.active{display:block}.tab-pane>pre{white-space:pre-wrap}.tab-pane>pre>code{margin-top:0;border-radius:0;box-shadow:none}html body{font-family:Montserrat,sans-serif;overflow-x:hidden}.fixedHeaderContainer{background-color:#222}.fixedHeaderContainer header .headerTitleWithLogo{display:block;color:#fff}.fixedHeaderContainer header .logo{height:50px}.fixedHeaderContainer header a:nth-child(2){position:absolute;right:0}.fixedHeaderContainer header a:nth-child(2) h3{font-size:14px}.fixedHeaderContainer header a:nth-child(2) h3:before{content:"v: "}.navigationSlider{margin-right:80px}.navigationSlider .slidingNav ul{background:#222}.navigationSlider .slidingNav ul li a{color:#c7d4fd}.navigationSlider .slidingNav ul li a:focus,.navigationSlider .slidingNav ul li a:hover{color:#fff;background-color:inherit}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a{background-color:inherit}.homeContainer{background:linear-gradient(#812ce5,#ffaf00);padding:25px 0}.splashLogo{display:block;margin:0 auto;width:65%}.projectTitle{color:#fff;font-variant:small-caps;font-weight:300}.promoSection .button{border:2px solid #fff;color:#fff;font-size:19px;margin:10px}.promoSection .button:hover{background:inherit;border:2px solid #fff;color:#fff}.landingPage{padding:0}.productShowcaseSection{padding:45px 20px 30px}div.productShowcaseSection{color:#6c6c6c;padding-top:40px}#quickstart{padding-top:80px}.productShowcaseSection>h2{font-variant:small-caps;font-weight:360;margin:0;padding:0;color:#5b1861}.productShowcaseSection p{font-weight:360}# Subtitles for key features .productShowcaseSection .blockContent>div span p{font-size:18px}.productShowcaseSection div.container{padding:10px 0 40px}.productShowcaseSection img{height:100px}.gridBlock .fourByGridBlock img{max-width:200%}.productShowcaseSection li{padding:10px 0}.productShowcaseSection pre{margin:10px 0}.productShowcaseSection code{background:#fff}.container .wrapper .alignCenter h2{color:#222}div#quickstart{background:#efefef}div#quickstart ol{margin-bottom:0}.nav-footer{background-color:#222}.nav-footer .sitemap a{color:#c7d4fd}.nav-footer .sitemap a:hover{color:#fff}.social{text-align:center}a,a:hover,p a,p a:hover{color:#4872f9}.imageAlignTop .blockImage{margin-bottom:20px;max-width:200px}.tutorialBody{margin-top:-20px;color:#6c6c6c}.tutorialBody h1{margin:0}.tutorialBody h1,.tutorialBody h2,.tutorialBody h3{color:#222}.tutorialBody pre{font-family:IBM Plex Mono,monospace;font-size:14px;margin:0}.tutorialBody .input_prompt,.tutorialBody .output_prompt{color:#8b0000;font-size:12px}.tutorialBody .highlight{background:#f3f4f7;padding:10px 20px;border:1px solid #d3d3d3;border-radius:3px}.tutorialBody .cell{margin:20px}.tutorialBody .output_stderr{background-color:#fdede9}.tutorialBody .anchor-link{color:#d3d3d3}.tutorialBody iframe{width:100%;height:100vh}.tutorialButtonWrapper,.tutorialRuntime{margin:20px}.colabButtonWrapper,.tutorialButtonWrapper{float:left;margin:5px}.colabButtonWrapper img{padding-right:.25em}.colabButton{width:24px}.tutorialButtonsWrapper{display:flex;align-items:center;padding-bottom:15px}.tutorialButton svg{height:15px;margin-right:5px}.tutorialButton:hover{color:#4872f9;background-color:inherit}.wrapper{max-width:1400px}@media only screen and (min-device-width:360px) and (max-device-width:736px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:150px}.promoSection .button{font-size:12px;margin:3px}.inner h2{margin-top:0}.splashLogo{width:90%}.headerTitleWithLogo{display:block!important}.blockContent>div span p{margin-bottom:30px}.productShowcaseSection div.container{padding-top:0}.productShowcaseSection>h2{padding-bottom:20px}}@media only screen and (max-width:1023px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:200px}}.socialBanner{font-weight:700;font-size:20px;padding:20px;max-width:768px;margin:0 auto;text-align:center}.socialBanner a{text-decoration:underline}.highlight .hll{background-color:#ffc}.highlight .c{color:#60a0b0;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:#007020;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#60a0b0;font-style:italic}.highlight .cp{color:#007020}.highlight .c1{color:#60a0b0;font-style:italic}.highlight .cs{color:#60a0b0;background-color:#fff0f0}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:grey}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#0040d0}.highlight .kc,.highlight .kd,.highlight .kn{color:#007020;font-weight:700}.highlight .kp{color:#007020}.highlight .kr{color:#007020;font-weight:700}.highlight .kt{color:#902000}.highlight .m{color:#40a070}.highlight .na,.highlight .s{color:#4070a0}.highlight .nb{color:#007020}.highlight .nc{color:#0e84b5;font-weight:700}.highlight .no{color:#60add5}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#d55537;font-weight:700}.highlight .ne{color:#007020}.highlight .nf{color:#06287e}.highlight .nl{color:#002070;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#062873;font-weight:700}.highlight .nv{color:#bb60d5}.highlight .ow{color:#007020;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#40a070}.highlight .sb,.highlight .sc{color:#4070a0}.highlight .sd{color:#4070a0;font-style:italic}.highlight .s2{color:#4070a0}.highlight .se{color:#4070a0;font-weight:700}.highlight .sh{color:#4070a0}.highlight .si{color:#70a0d0;font-style:italic}.highlight .sx{color:#c65d09}.highlight .sr{color:#235388}.highlight .s1{color:#4070a0}.highlight .ss{color:#517918}.highlight .bp{color:#007020}.highlight .vc,.highlight .vg,.highlight .vi{color:#bb60d5}.highlight .il{color:#40a070} \ No newline at end of file +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}*{box-sizing:border-box}b,strong{font-weight:600}em,i{font-style:italic}[type=checkbox]{box-sizing:border-box;padding:0}a,a:hover{color:#812ce5;text-decoration:none}a:active,a:hover{outline-width:0}a:not([href]){color:inherit;text-decoration:none}p{margin-bottom:1em;margin-top:0}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:1.5em}h1{font-size:32px}h2{font-size:24px}h3{font-size:20px}h4{font-size:16px}h5{font-size:14px}h6{font-size:13.6px}ol,ul{margin-bottom:1em;margin-top:0;padding-left:2em}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-top:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}li{word-wrap:break-all}li>p{margin-top:1em}li+li{margin-top:.25em}img{border-style:none;box-sizing:content-box;max-width:100%}img[align=right]{padding-left:1.25em}img[align=left]{padding-right:1.25em}table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:16px;margin-top:0;overflow:auto;width:100%}table tr{background-color:transparent;border-top:1px solid #dfe2e5}table tr:nth-child(2n){background-color:#f6f8fa}table td,table th{border:1px solid #dfe2e5;padding:6px 13px}table th{background-color:inherit;font-weight:600}table td,table th{color:inherit}blockquote{color:#6a737d;font-size:16px;margin:0 0 16px;padding:0 1em}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}code{background-color:rgba(27,31,35,.05);border-radius:3px;color:inherit;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:85%;margin:0;padding:3.2px 6.4px}pre{margin-bottom:16px}pre code{background-color:transparent;border:0;display:inline;font-size:85%;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;white-space:pre;word-break:normal;word-wrap:normal}kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:68.75%;line-height:10px;padding:3px 5px;vertical-align:middle}hr{border:1px solid #dfe2e5;box-sizing:content-box;margin:1.5em 0;overflow:hidden;padding:0}hr:after,hr:before{content:"";display:table}hr:after{clear:both}body{background-color:#fff;min-height:100vh;text-rendering:optimizeLegibility}@media only screen and (min-width:736px){body{display:flex;flex-direction:column}}article:after,article:before{content:"";display:table}article:after{clear:both}article>:first-child{margin-top:0}article>:last-child{margin-bottom:0}article iframe,article p img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.anchor{display:block;position:relative;top:-80px}.hash-link{line-height:1;margin-left:-20px;opacity:0;padding-right:4px;transition:opacity .3s}.hash-link:hover{opacity:1!important;transition:none}.hash-link .hash-link-icon{vertical-align:middle}.button{border:1px solid #812ce5;border-radius:3px;color:#812ce5;display:inline-block;font-size:14px;font-weight:400;line-height:1.2em;padding:10px;text-decoration:none!important;text-transform:uppercase;transition:background .3s,color .3s}.button:hover{background:#812ce5;color:#fff}h1:hover .hash-link,h2:hover .hash-link,h3:hover .hash-link,h4:hover .hash-link{opacity:.5;transition:none}blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564;padding:15px 30px 15px 15px}.wrapper{margin:0 auto;max-width:1100px;padding:0 20px}.wrapper blockquote>p:first-child{padding-top:0}.center{display:block}.center,.homeContainer{text-align:center}.homeContainer .homeWrapper{padding:2em 10px}.homeContainer .homeWrapper .wrapper{margin:0 auto;max-width:900px;padding:0 20px}.homeContainer .homeWrapper .projectLogo img{height:100px;margin-bottom:0}.homeContainer .homeWrapper #project_title{font-size:300%;letter-spacing:-.08em;line-height:1em;margin-bottom:80px}.homeContainer .homeWrapper #project_tagline{font-size:200%;letter-spacing:-.04em;line-height:1em}.projectLogo{display:none;pointer-events:none}.projectLogo img{height:100px;margin-bottom:0}.projectIntro{margin:40px 0}.projectTitle{color:#812ce5;font-size:250%;line-height:1em}.projectTitle>small{display:block;font-weight:400;font-size:50%;line-height:1em;margin:.7em 0 1.3em}@media only screen and (min-width:480px){.projectTitle{font-size:300%;margin:.3em 0}.projectLogo img{height:200px;margin-bottom:10px}.homeContainer .homeWrapper{padding-left:10px;padding-right:10px}}@media only screen and (min-width:736px){.homeContainer .homeWrapper{position:relative}.homeContainer .homeWrapper #inner{max-width:600px;padding-right:40px}}@media only screen and (min-width:1200px){.homeContainer .homeWrapper #inner{max-width:750px}.homeContainer .homeWrapper .projectLogo{align-items:center;bottom:0;display:flex;justify-content:flex-end;left:0;padding:2em 100px 4em;position:absolute;right:0;top:0}.homeContainer .homeWrapper .projectLogo img{height:100%;max-height:250px}}@media only screen and (min-width:1500px){.homeContainer .homeWrapper #inner{max-width:1100px;padding-bottom:40px;padding-top:40px}.wrapper{max-width:1400px}}.mainContainer{flex:1 1 0%;max-width:100%;padding:40px 0}.mainContainer .wrapper{text-align:left}.mainContainer .wrapper .allShareBlock{padding:10px 0}.mainContainer .wrapper .allShareBlock .pluginBlock{margin:12px 0;padding:0}.mainContainer .wrapper .post{position:relative}.mainContainer .wrapper .post.basicPost{margin-top:30px}.mainContainer .wrapper .post .postHeader{margin-bottom:16px}.mainContainer .wrapper .post .postHeaderTitle{margin-top:0;padding:0}.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:90px;margin-top:-90px;visibility:hidden;pointer-events:none}.mainContainer .wrapper .post .postSocialPlugins{padding-top:1em}.mainContainer .wrapper .post .docPagination{background:#812ce5;bottom:0;left:0;position:absolute;right:0}.mainContainer .wrapper .post .docPagination .pager{display:inline-block;width:50%}.mainContainer .wrapper .post .docPagination .pagingNext{float:right;text-align:right}.mainContainer .wrapper .post .docPagination a{border:none;color:#fff;display:block;padding:4px 12px}.mainContainer .wrapper .post .docPagination a:hover{background-color:#f9f9f9;color:#393939}.mainContainer .wrapper .post .docPagination a .pagerLabel{display:inline}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:none}@media only screen and (min-width:480px){.mainContainer .wrapper .post .docPagination a .pagerLabel{display:none}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:inline}}@media only screen and (min-width:1024px){.mainContainer .wrapper .post{display:block}.mainContainer .wrapper .posts .post{width:100%}}@media only screen and (max-width:1023px){.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:200px;margin-top:-200px;visibility:hidden;pointer-events:none}}.fixedHeaderContainer{background:#812ce5;color:#fff;min-height:50px;padding:8px 0;position:fixed;width:100%;z-index:9999;transform:translateZ(0)}@media only screen and (min-width:1024px){.fixedHeaderContainer{flex-shrink:0}}.fixedHeaderContainer a{align-items:center;border:0;color:#fff;display:flex;flex-flow:row nowrap;height:34px;z-index:10000}.fixedHeaderContainer header{display:flex;flex-flow:row nowrap;position:relative;text-align:left}.fixedHeaderContainer header img{height:100%;margin-right:10px}.fixedHeaderContainer header .headerTitle{font-size:1.25em;margin:0}.fixedHeaderContainer header .headerTitleWithLogo{font-size:1.25em;line-height:18px;margin:0;position:relative;z-index:9999}.fixedHeaderContainer header h3{color:#fff;font-size:16px;margin:0 0 0 10px;text-decoration:underline}@media (max-width:480px){.headerTitle{font-size:17px}.headerTitleWithLogo{display:none!important}}.promoSection{display:flex;flex-flow:column wrap;font-size:125%;line-height:1.6em;position:relative;z-index:99}.promoSection .promoRow{padding:10px 0}.promoSection .promoRow .pluginWrapper{display:block}.promoSection .promoRow .pluginWrapper.ghStarWrapper,.promoSection .promoRow .pluginWrapper.ghWatchWrapper{height:28px}.promoSection .promoRow .pluginRowBlock{display:flex;flex-wrap:wrap;justify-content:center;margin:0 -2px}.promoSection .promoRow .pluginRowBlock .pluginWrapper{padding:0 2px}.promoSection .promoRow .pluginRowBlock iframe{margin-left:2px;margin-top:5px}input[type=search]{-moz-appearance:none;-webkit-appearance:none}.navSearchWrapper{align-items:center;align-self:center;display:flex;justify-content:center;padding-left:10px;position:absolute;right:10px;top:10px}.navSearchWrapper:before{border:3px solid #e5e5e5;border-radius:50%;content:" ";display:block;height:6px;left:15px;position:absolute;top:50%;transform:translateY(-58%);width:6px;z-index:1}.navSearchWrapper:after{background:#e5e5e5;content:" ";height:7px;left:24px;position:absolute;top:55%;transform:rotate(-45deg);width:3px;z-index:1}.navSearchWrapper .aa-dropdown-menu{background:#f9f9f9;border:3px solid rgba(57,57,57,.25);color:#393939;font-size:14px;left:auto!important;line-height:1.2em;right:0!important}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header{background:#812ce5;color:#fff;font-size:14px;font-weight:400}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#812ce5;color:#fff}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--title .algolia-docsearch-suggestion--highlight{color:#812ce5}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion__secondary{border-color:rgba(57,57,57,.3)}input#search_input_react{background-color:rgba(0,0,0,.2);border:none;border-radius:20px;color:#fff;font-size:14px;font-weight:300;line-height:20px;outline:none;padding-left:25px;position:relative;transition:width .5s ease;width:170px}.navSearchWrapper:before{left:24px}.navSearchWrapper:after{left:35px}input#search_input_react:active,input#search_input_react:focus{color:#fff;width:220px}.navigationSlider .slidingNav .navSearchWrapper .algolia-docsearch-footer a{height:auto}@media only screen and (max-width:735px){.navSearchWrapper{width:40%}}input::-moz-placeholder{color:#e5e5e5}input:-ms-input-placeholder{color:#e5e5e5}input::placeholder{color:#e5e5e5}.hljs{padding:1.25rem 1.5rem}.gridBlock{padding:0}.gridBlock>*{box-sizing:border-box}.gridBlock .fourByGridBlock img,.gridBlock .threeByGridBlock img,.gridBlock .twoByGridBlock img{max-width:100%}.gridBlock .gridClear{clear:both}@media only screen and (max-width:735px){.gridBlock .fourByGridBlock{flex:1 0 26%}}@media only screen and (min-width:736px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}.gridBlock>*{margin:0 12px}.gridBlock>:first-child{margin-left:0}.gridBlock>:last-child{margin-right:0}.gridBlock .twoByGridBlock{flex:1 0 40%}.gridBlock .threeByGridBlock{flex:1 0 26%}.gridBlock .fourByGridBlock{flex:1 0 20%}h2+.gridBlock{padding-top:20px}}@media only screen and (min-width:1400px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}}.alignCenter{text-align:center}.alignRight{text-align:right}.imageAlignSide{display:flex;flex-flow:row wrap}.blockImage{max-width:730px}.imageAlignSide .blockImage{flex:0 1 500px;max-width:500px}@media only screen and (max-width:735px){.imageAlignSide .blockImage{display:none}}.imageAlignSide .blockContent{flex:1 1}.imageAlignBottom .blockImage{margin:0 auto 20px;max-width:730px}.imageAlignBottom.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignTop .blockImage{max-width:80px}.imageAlignTop.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignRight .blockImage{margin-left:40px}.imageAlignLeft .blockImage{margin-right:40px}.container .gridBlock .blockContent p{padding:0}.container .wrapper .alignCenter h2{text-align:center}.container .wrapper .imageAlignSide h2{text-align:left}.container .wrapper .imageAlignSide p{margin:0 0 40px;max-width:560px}.highlightBackground{background:rgba(153,66,79,.7);color:#fff}.highlightBackground a{font-weight:800}.container.highlightBackground .wrapper h1,.container.highlightBackground .wrapper h2,.container.highlightBackground .wrapper h3,.container.highlightBackground .wrapper h4,.container.highlightBackground .wrapper h5,.highlightBackground a{border-color:#fff;color:#fff}.lightBackground{background:#f7f7f7}.darkBackground{background:grey;color:#fff}.darkBackground a,.darkBackground code{color:#d6b3b8}.container.darkBackground .wrapper h1,.container.darkBackground .wrapper h2,.container.darkBackground .wrapper h3,.container.darkBackground .wrapper h4,.container.darkBackground .wrapper h5{border-color:#fff;color:#fff}.container.paddingAll{padding:40px}.container.paddingBottom{padding-bottom:80px}.container.paddingLeft{padding-left:40px}.container.paddingRight{padding-right:40px}.container.paddingTop{padding-top:80px}@media only screen and (max-width:735px){.container.paddingBottom{padding-bottom:40px}.container.paddingTop{padding-top:20px}}@media only screen and (max-width:1023px){.responsiveList .blockContent{position:relative}.responsiveList .blockContent>div{padding-left:20px}.responsiveList .blockContent:before{content:"\2022";position:absolute}}.navigationSlider .navSlideout{cursor:pointer;padding-top:4px;position:absolute;right:10px;top:0;transition:top .3s;z-index:101}.navigationSlider .slidingNav{bottom:auto;box-sizing:border-box;left:0;position:fixed;right:0;top:0}.navigationSlider .slidingNav.slidingNavActive{height:auto;padding-top:42px;width:300px}.navigationSlider .slidingNav ul{background:#ffaf00;box-sizing:border-box;color:#fff;display:flex;flex-wrap:nowrap;list-style:none;margin-top:50px;padding:0;width:100%}.navigationSlider .slidingNav.slidingNavActive ul{display:block}.navigationSlider .slidingNav ul li{flex:1 1 auto;margin:0;text-align:center;white-space:nowrap}.navigationSlider .slidingNav ul li a{align-items:center;box-sizing:border-box;color:#812ce5;color:inherit;display:flex;font-size:.9em;height:auto;height:50px;justify-content:center;margin:0;padding:10px;transition:background-color .3s}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a,.navigationSlider .slidingNav ul li>a:focus,.navigationSlider .slidingNav ul li>a:hover{background-color:#812ce5}.languages-icon{width:20px}#languages-dropdown{pointer-events:none;position:absolute;width:100%}#languages-dropdown.visible{display:flex}#languages-dropdown.hide{display:none}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:column;min-width:120px;pointer-events:all}#languages li{display:block}.navPusher{left:0;min-height:100%;padding-top:100px;position:relative;z-index:99}.singleRowMobileNav.navPusher{padding-top:50px}.navPusher:after{background:rgba(0,0,0,.4);content:"";height:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .5s,width .1s .5s,height .1s .5s;width:0}@media screen and (min-width:1024px){.navPusher{display:flex;flex-direction:column;min-height:calc(100vh - 50px);padding-top:50px}.navPusher,.navPusher>:first-child{flex-grow:1}}.sliderActive .navPusher:after{height:100%;opacity:1;transition:opacity .5s;width:100%;z-index:100}@media only screen and (max-width:1024px){.reactNavSearchWrapper input#search_input_react{background-color:rgba(242,196,178,.25);border:none;border-radius:20px;box-sizing:border-box;color:#393939;font-size:14px;line-height:20px;outline:none;padding-left:38px;position:relative;transition:background-color .2s cubic-bezier(.68,-.55,.265,1.55),width .2s cubic-bezier(.68,-.55,.265,1.55),color .2s ease;width:100%;height:30px}.reactNavSearchWrapper input#search_input_react:active,.reactNavSearchWrapper input#search_input_react:focus{background-color:#812ce5;color:#fff}.reactNavSearchWrapper .algolia-docsearch-suggestion--subcategory-inline{display:none}.reactNavSearchWrapper>span{width:100%}.reactNavSearchWrapper .aa-dropdown-menu{font-size:12px;line-height:2em;padding:0;border-width:1px;min-width:500px}.reactNavSearchWrapper .algolia-docsearch-suggestion__secondary{border-top:none}.aa-suggestions{min-height:140px;max-height:60vh;-webkit-overflow-scrolling:touch;overflow-y:scroll}#languages-dropdown{left:0;top:50px}#languages-dropdown-items{background-color:#812ce5;display:flex;flex-direction:row}}@media only screen and (min-width:1024px){.navSearchWrapper{padding-left:10px;position:relative;right:auto;top:auto}.reactNavSearchWrapper input#search_input_react{height:100%;padding-top:8px;padding-bottom:8px;padding-left:38px}.navSearchWrapper .algolia-autocomplete{display:block}.navigationSlider{height:34px;margin-left:auto;position:relative}.navigationSlider .navSlideout{display:none}.navigationSlider nav.slidingNav{background:none;height:auto;position:relative;right:auto;top:auto;width:auto}.navigationSlider .slidingNav ul{background:none;display:flex;flex-flow:row nowrap;margin:0;padding:0;width:auto}.navigationSlider .slidingNav ul li a{border:0;color:hsla(0,0%,100%,.8);display:flex;font-size:16px;font-size:1em;font-weight:300;height:32px;line-height:1.2em;margin:0;padding:6px 10px}.navigationSlider .slidingNav ul li.siteNavGroupActive a,.navigationSlider .slidingNav ul li.siteNavItemActive a,.navigationSlider .slidingNav ul li a:hover{color:#fff}}@media only screen and (max-width:735px){.navigationSlider .slidingNav ul{overflow-x:auto}.navigationSlider .slidingNav ul::-webkit-scrollbar{display:none}.reactNavSearchWrapper .aa-dropdown-menu{min-width:400px}}@media only screen and (max-width:475px){.reactNavSearchWrapper .aa-dropdown-menu{min-width:300px}}.docMainWrapper .wrapper{padding-left:0;padding-right:0;padding-top:10px}@media only screen and (min-width:1024px){.docMainWrapper{width:100%}.docMainWrapper>*{margin:0 24px}.docMainWrapper>:first-child{margin-left:0}.docMainWrapper>:last-child{margin-right:0}.docMainWrapper .mainContainer{min-width:0}}.edit-page-link{float:right;font-size:10px;font-weight:400;margin-top:3px;text-decoration:none}@media only screen and (max-width:1023px){.edit-page-link{display:none}}.docLastUpdate{font-size:13px;font-style:italic;margin:20px 0;text-align:right}.docs-prevnext{margin:20px 0}.docs-prevnext:after{clear:both;content:" ";display:table}.docs-next{float:right}.docs-prev{float:left}@media only screen and (max-width:735px){.docs-next{clear:both;float:left}.docs-next,.docs-prev{margin:10px 0}.arrow-next{float:right;margin-left:10px}.arrow-prev{float:left;margin-right:10px}.function-name-prevnext{width:200px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hide{display:none}.collapsible{cursor:pointer}.collapsible .arrow{float:right;margin-right:8px;margin-top:-4px;transform:rotate(90deg);transition:transform .2s linear}.collapsible .arrow.rotate{transform:rotate(180deg)}@media only screen and (max-width:1023px){.docsNavContainer{background:#fff;left:0;position:fixed;width:100%;z-index:100}}@media only screen and (min-width:1024px){.docsNavContainer{flex:0 0 240px;height:calc(100vh - 50px);position:sticky;overflow-y:auto;top:50px}}.docsSliderActive.docsNavContainer{box-sizing:border-box;height:100%;-webkit-overflow-scrolling:touch;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding-bottom:50px}.docsNavContainer .toc .navBreadcrumb{background-color:#f1f1f1;box-sizing:border-box;display:flex;flex-flow:row nowrap;font-size:12px;height:48px;overflow:hidden;padding:8px 20px}.docsNavContainer .toc .navWrapper{padding:0}@media only screen and (min-width:1024px){.docsNavContainer .toc .navBreadcrumb{display:none}.navBreadcrumb h2{padding:0 10px}.separateOnPageNav .docsNavContainer{flex:0 0 240px}}.navBreadcrumb a,.navBreadcrumb span{border:0;color:#393939}@media only screen and (max-width:735px){.anchor{top:-144px}}@media only screen and (min-width:1024px){.toc{padding:40px 0}}.toc section{padding:0;position:relative}.toc section .navGroups{display:none;padding:48px 20px 60px}.toc .toggleNav{color:#393939;position:relative}.toc .toggleNav .navToggle{cursor:pointer;height:32px;margin-right:10px;position:relative;text-align:left;width:18px}.hamburger-menu{position:absolute;top:6px;width:100%}.line1,.line2,.line3{width:100%;height:3px;background-color:#393939;margin:3px 0;transition:.4s;border-radius:10px}.docsSliderActive .hamburger-menu{top:12px}.docsSliderActive .line1{position:absolute;top:50%;transform:rotate(-45deg)}.docsSliderActive .line2{display:none}.docsSliderActive .line3{position:absolute;top:50%;transform:rotate(45deg)}.toggleNav h2 i{padding:0 4px}.toc .toggleNav .navGroup{margin-bottom:16px}.toc .toggleNav .subNavGroup{margin-bottom:0}.toc .toggleNav .navGroup .navGroupCategoryTitle{color:#393939;font-size:18px;font-weight:500;line-height:1.2em;margin-bottom:8px;margin-top:0}.toc .toggleNav .navGroup .navGroupSubcategoryTitle{color:#393939;font-size:14px;font-weight:500;line-height:1.5;margin-bottom:0;margin-top:0;padding:4px 0}.toc .toggleNav .navGroup .navListItem{margin:0}.toc .toggleNav .navGroup h3 i:not(:empty){box-sizing:border-box;color:rgba(57,57,57,.5);display:inline-block;height:16px;margin-right:10px;text-align:center;transition:color .2s;width:16px}.toc .toggleNav ul{padding:0 8px}.docsSliderActive .toc .toggleNav ul{padding-left:0}.toc .toggleNav ul li{list-style-type:none;padding:0}.toc .toggleNav ul li a{border:none;color:#717171;display:block;font-size:14px;padding:4px 0;transition:color .3s}.toc .toggleNav ul li.navListItemActive a,.toc .toggleNav ul li a:focus,.toc .toggleNav ul li a:hover{color:#812ce5}.docsSliderActive .toc .navBreadcrumb,.tocActive .navBreadcrumb{border-bottom:1px solid #ccc;margin-bottom:20px;position:fixed;width:100%}.toc .toggleNav .navBreadcrumb h2{border:0;flex-grow:1;font-size:16px;font-weight:600;line-height:32px;margin:0;padding:0}.docsSliderActive .toc section .navGroups{display:block;padding-top:60px}.tocToggler{cursor:pointer;height:32px;line-height:32px;margin-right:-10px;padding:0 10px}.icon-toc{box-sizing:border-box;display:inline-block;line-height:normal;position:relative;top:-1px;vertical-align:middle}.icon-toc,.icon-toc:after,.icon-toc:before{background-color:currentColor;border:1px solid;border-radius:50%;box-sizing:border-box;height:4px;width:4px}.icon-toc:after,.icon-toc:before{content:"";position:absolute}.icon-toc:before{left:-1px;top:-7px}.icon-toc:after{left:-1px;top:5px}.tocActive .icon-toc{border-radius:0;height:16px;transform:rotate(45deg);width:3px}.tocActive .icon-toc:before{border-radius:0;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);width:16px}.tocActive .icon-toc:after{content:""}@media only screen and (min-width:1024px){.docMainWrapper{display:flex;flex-flow:row nowrap}.docMainWrapper .wrapper{padding-top:0;padding-left:0;padding-right:0}}.onPageNav{display:none;margin-bottom:40px}.onPageNav::-webkit-scrollbar{width:7px}.onPageNav::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb:hover{background:#555}.onPageNav a{color:#717171}.onPageNav .toc-headings>li>a.active,.onPageNav .toc-headings>li>a.hover{font-weight:600;color:#812ce5}.onPageNav ul{list-style:none}.onPageNav ul li{font-size:12px;line-height:16px;padding-bottom:8px}.onPageNav ul ul{padding:8px 0 0 20px}.onPageNav ul ul li{padding-bottom:5px}@media only screen and (min-width:1024px){.toc section .navGroups{display:block;padding:8px 0 0}.navBreadcrumb h2{padding:0 10px}}@supports (position:sticky){@media only screen and (max-width:1023px){.tocActive .onPageNav{background:#fff;bottom:0;display:block;left:0;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding:0 20px;position:fixed;right:0;top:148px;z-index:10;margin-bottom:0}.tocActive .singleRowMobileNav .onPageNav{top:98px}.tocActive .navBreadcrumb h2,.tocActive .navToggle{visibility:hidden}.tocActive .onPageNav>.toc-headings{padding:12px 0}}@media only screen and (min-width:1024px){.separateOnPageNav .headerWrapper.wrapper,.separateOnPageNav .wrapper{max-width:1400px}.separateOnPageNav .toc{width:auto}.separateOnPageNav.sideNavVisible .navPusher .mainContainer{flex:1 auto;max-width:100%;min-width:0}.onPageNav{align-self:flex-start;display:block;flex:0 0 240px;max-height:calc(100vh - 90px);overflow-y:auto;position:sticky;top:90px}.onPageNav>.toc-headings{border-left:1px solid #e0e0e0;padding:10px 0 2px 15px}.tocToggler{display:none}}}.blog .wrapper{max-width:1100px}.blogContainer .posts .post{border-bottom:1px solid #e0e0e0;border-radius:3px;margin-bottom:20px;padding-bottom:20px}.blogContainer .postHeader{margin-bottom:10px}.blogContainer .postHeaderTitle{margin-top:0}.blogContainer .postHeader p.post-meta{margin-bottom:10px;padding:0}.blogContainer .postHeader .authorBlock{display:flex}.blogContainer .postHeader .post-authorName{color:rgba(57,57,57,.7);display:flex;flex-direction:column;font-size:14px;font-weight:400;justify-content:center;margin-right:10px;margin-top:0;margin-bottom:0;padding:0}.blogContainer .postHeader .authorPhoto{border-radius:50%;height:30px;overflow:hidden;width:30px}.blogContainer .postHeader .authorPhoto.authorPhotoBig{height:50px;width:50px}.blog-recent{margin:20px 0}.blog-recent>a{float:left}@media only screen and (max-width:735px){.blog-recent{height:40px}}.blogSocialSection{display:block;padding:36px 0}.blogSocialSection .blogSocialSectionItem{padding-bottom:5px}.fb-like{display:block;margin-bottom:20px;width:100%}.more-users{margin:0 auto;max-width:560px;text-align:center}.productShowcaseSection{padding:0 20px;text-align:center}.productShowcaseSection.paddingTop{padding-top:20px}.productShowcaseSection.paddingBottom{padding-bottom:80px}.productShowcaseSection h2{color:#812ce5;font-size:30px;line-height:1em;margin-top:20px;padding:10px 0;text-align:center}.productShowcaseSection p{margin:0 auto;max-width:560px;padding:.8em 0}.productShowcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center;padding:20px}.productShowcaseSection .logos img{max-height:110px;padding:20px;width:110px}@media only screen and (max-width:735px){.productShowcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.showcaseSection{margin:0 auto;max-width:900px}.showcaseSection,.showcaseSection .prose h1{text-align:center}.showcaseSection .prose{margin:0 auto;max-width:560px;text-align:center}.showcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center}.showcaseSection .logos img{max-height:128px;padding:20px;width:128px}@media only screen and (max-width:735px){.showcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.nav-footer{background:#20232a;border:none;color:#202020;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:24px;padding-bottom:2em;padding-top:2em;position:relative}@media only screen and (min-width:1024px){.nav-footer{flex-shrink:0}}.nav-footer .sitemap{display:flex;justify-content:space-between;margin:0 auto 3em;max-width:1080px}.nav-footer .sitemap div{flex:1}.nav-footer .sitemap .nav-home{display:table;height:72px;margin:-12px 20px 0 0;opacity:.4;padding:10px;transition:opacity .15s ease-in-out;width:72px}.nav-footer .sitemap .nav-home:focus,.nav-footer .sitemap .nav-home:hover{opacity:1}@media only screen and (max-width:735px){.nav-footer .sitemap{display:flex;flex-direction:column;margin:0 2em 3em;width:calc(100% - 4em)}.nav-footer .sitemap>div{margin-bottom:18px}}.nav-footer .sitemap a{color:hsla(0,0%,100%,.6);display:block;margin:2px 0;padding:3px 0}.nav-footer .sitemap a:focus,.nav-footer .sitemap a:hover,.nav-footer .sitemap h5>a:focus,.nav-footer .sitemap h5>a:hover{color:#fff;text-decoration:none}.nav-footer .sitemap h5,.nav-footer .sitemap h6{margin:0 0 10px}.nav-footer .sitemap h5,.nav-footer .sitemap h5>a,.nav-footer .sitemap h6,.nav-footer .sitemap h6>a{color:#fff}.nav-footer .sitemap h5>a,.nav-footer .sitemap h6>a{margin:0 -10px}.nav-footer .fbOpenSource{display:block;margin:1em auto;opacity:.4;transition:opacity .15s ease-in-out;width:170px}.nav-footer .fbOpenSource:hover{opacity:1}.nav-footer .copyright{color:hsla(0,0%,100%,.4);text-align:center}.nav-footer .social{padding:5px 0}.tabs{border-top:1px solid #cfcfcf}.nav-tabs{display:flex;border-bottom:4px solid #e0e0e0;width:100%;padding:0;overflow-x:auto;white-space:nowrap;max-height:100%}.nav-tabs::-webkit-scrollbar{display:none}.tabs .tab-pane:focus{outline:none}.tabs .nav-tabs>div{font-size:14px;line-height:1.14286;padding:12px 16px;text-decoration:none;display:block;cursor:pointer}.tabs .nav-tabs>div.active{border-bottom:4px solid #812ce5}.tab-pane{display:none}.tab-pane.active{display:block}.tab-pane>pre{white-space:pre-wrap}.tab-pane>pre>code{margin-top:0;border-radius:0;box-shadow:none}html body{font-family:Montserrat,sans-serif;overflow-x:hidden}.fixedHeaderContainer{background-color:#222}.fixedHeaderContainer header .headerTitleWithLogo{display:block;color:#fff}.fixedHeaderContainer header .logo{height:50px}.fixedHeaderContainer header a:nth-child(2){position:absolute;right:0}.fixedHeaderContainer header a:nth-child(2) h3{font-size:14px}.fixedHeaderContainer header a:nth-child(2) h3:before{content:"v: "}.navigationSlider{margin-right:80px}.navigationSlider .slidingNav ul{background:#222}.navigationSlider .slidingNav ul li a{color:#c7d4fd}.navigationSlider .slidingNav ul li a:focus,.navigationSlider .slidingNav ul li a:hover{color:#fff;background-color:inherit}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a{background-color:inherit}.homeContainer{background:linear-gradient(#812ce5,#ffaf00);padding:25px 0}.splashLogo{display:block;margin:0 auto;width:65%}.projectTitle{color:#fff;font-variant:small-caps;font-weight:300}.promoSection .button{border:2px solid #fff;color:#fff;font-size:19px;margin:10px}.promoSection .button:hover{background:inherit;border:2px solid #fff;color:#fff}.landingPage{padding:0}.productShowcaseSection{padding:45px 20px 30px}div.productShowcaseSection{color:#6c6c6c;padding-top:40px}#quickstart{padding-top:80px}.productShowcaseSection>h2{font-variant:small-caps;font-weight:360;margin:0;padding:0;color:#5b1861}.productShowcaseSection p{font-weight:360}# Subtitles for key features .productShowcaseSection .blockContent>div span p{font-size:18px}.productShowcaseSection div.container{padding:10px 0 40px}.productShowcaseSection img{height:100px}.gridBlock .fourByGridBlock img{max-width:200%}.productShowcaseSection li{padding:10px 0}.productShowcaseSection pre{margin:10px 0}.productShowcaseSection code{background:#fff}.container .wrapper .alignCenter h2{color:#222}div#quickstart{background:#efefef}div#quickstart ol{margin-bottom:0}.nav-footer{background-color:#222}.nav-footer .sitemap a{color:#c7d4fd}.nav-footer .sitemap a:hover{color:#fff}.social{text-align:center}a,a:hover,p a,p a:hover{color:#4872f9}.imageAlignTop .blockImage{margin-bottom:20px;max-width:200px}.tutorialBody{margin-top:-20px;color:#6c6c6c}.tutorialBody h1{margin:0}.tutorialBody h1,.tutorialBody h2,.tutorialBody h3{color:#222}.tutorialBody pre{font-family:IBM Plex Mono,monospace;font-size:14px;margin:0}.tutorialBody .input_prompt,.tutorialBody .output_prompt{color:#8b0000;font-size:12px}.tutorialBody .highlight{background:#f3f4f7;padding:10px 20px;border:1px solid #d3d3d3;border-radius:3px}.tutorialBody .cell{margin:20px}.tutorialBody .output_stderr{background-color:#fdede9}.tutorialBody .anchor-link{color:#d3d3d3}.tutorialBody iframe{width:100%;height:100vh}.tutorialButtonWrapper,.tutorialRuntime{margin:20px}.colabButtonWrapper,.tutorialButtonWrapper{float:left;margin:5px}.colabButtonWrapper img{padding-right:.25em}.colabButton{width:24px}.tutorialButtonsWrapper{display:flex;align-items:center;padding-bottom:15px}.tutorialButton svg{height:15px;margin-right:5px}.tutorialButton:hover{color:#4872f9;background-color:inherit}.wrapper{max-width:1400px}@media only screen and (min-device-width:360px) and (max-device-width:736px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:150px}.promoSection .button{font-size:12px;margin:3px}.inner h2{margin-top:0}.splashLogo{width:90%}.headerTitleWithLogo{display:block!important}.blockContent>div span p{margin-bottom:30px}.productShowcaseSection div.container{padding-top:0}.productShowcaseSection>h2{padding-bottom:20px}}@media only screen and (max-width:1023px){.fixedHeaderContainer header a:nth-child(2){position:absolute;right:200px}}.socialBanner{font-weight:700;font-size:20px;padding:20px;max-width:768px;margin:0 auto;text-align:center}.socialBanner a{text-decoration:underline}.highlight .hll{background-color:#ffc}.highlight .c{color:#60a0b0;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:#007020;font-weight:700}.highlight .o{color:#666}.highlight .cm{color:#60a0b0;font-style:italic}.highlight .cp{color:#007020}.highlight .c1{color:#60a0b0;font-style:italic}.highlight .cs{color:#60a0b0;background-color:#fff0f0}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:grey}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#0040d0}.highlight .kc,.highlight .kd,.highlight .kn{color:#007020;font-weight:700}.highlight .kp{color:#007020}.highlight .kr{color:#007020;font-weight:700}.highlight .kt{color:#902000}.highlight .m{color:#40a070}.highlight .na,.highlight .s{color:#4070a0}.highlight .nb{color:#007020}.highlight .nc{color:#0e84b5;font-weight:700}.highlight .no{color:#60add5}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#d55537;font-weight:700}.highlight .ne{color:#007020}.highlight .nf{color:#06287e}.highlight .nl{color:#002070;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#062873;font-weight:700}.highlight .nv{color:#bb60d5}.highlight .ow{color:#007020;font-weight:700}.highlight .w{color:#bbb}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#40a070}.highlight .sb,.highlight .sc{color:#4070a0}.highlight .sd{color:#4070a0;font-style:italic}.highlight .s2{color:#4070a0}.highlight .se{color:#4070a0;font-weight:700}.highlight .sh{color:#4070a0}.highlight .si{color:#70a0d0;font-style:italic}.highlight .sx{color:#c65d09}.highlight .sr{color:#235388}.highlight .s1{color:#4070a0}.highlight .ss{color:#517918}.highlight .bp{color:#007020}.highlight .vc,.highlight .vg,.highlight .vi{color:#bb60d5}.highlight .il{color:#40a070} \ No newline at end of file diff --git a/docs/batching.html b/docs/batching.html index 44e2b0ef..fb2e8ec8 100644 --- a/docs/batching.html +++ b/docs/batching.html @@ -76,4 +76,4 @@

Use cases for batch modes

The need for different mesh batch modes is inherent to the way PyTorch operators are implemented. To fully utilize the optimized PyTorch ops, the Meshes data structure allows for efficient conversion between the different batch modes. This is crucial when aiming for a fast and efficient training cycle. An example of this is Mesh R-CNN. Here, in the same forward pass different parts of the network assume different inputs, which are computed by converting between the different batch modes. In particular, vert_align assumes a padded input tensor while immediately after graph_conv assumes a packed input tensor.

meshrcnn

-
Last updated by Jeremy Reizenstein
Data loadersCubify
\ No newline at end of file +
Data loadersCubify
\ No newline at end of file diff --git a/docs/batching/index.html b/docs/batching/index.html index 44e2b0ef..fb2e8ec8 100644 --- a/docs/batching/index.html +++ b/docs/batching/index.html @@ -76,4 +76,4 @@

Use cases for batch modes

The need for different mesh batch modes is inherent to the way PyTorch operators are implemented. To fully utilize the optimized PyTorch ops, the Meshes data structure allows for efficient conversion between the different batch modes. This is crucial when aiming for a fast and efficient training cycle. An example of this is Mesh R-CNN. Here, in the same forward pass different parts of the network assume different inputs, which are computed by converting between the different batch modes. In particular, vert_align assumes a padded input tensor while immediately after graph_conv assumes a packed input tensor.

meshrcnn

-
Last updated by Jeremy Reizenstein
Data loadersCubify
\ No newline at end of file +
Data loadersCubify
\ No newline at end of file diff --git a/docs/cameras.html b/docs/cameras.html index 80999654..e0008401 100644 --- a/docs/cameras.html +++ b/docs/cameras.html @@ -136,4 +136,4 @@ The transformation of x and y coordinates between screen and NDC is exactly the px_ndc = - (px_screen - image_width / 2.0) * 2.0 / s py_ndc = - (py_screen - image_height / 2.0) * 2.0 / s -
Last updated by Xiao Xuan
Getting Started
\ No newline at end of file +
Getting Started
\ No newline at end of file diff --git a/docs/cameras/index.html b/docs/cameras/index.html index 80999654..e0008401 100644 --- a/docs/cameras/index.html +++ b/docs/cameras/index.html @@ -136,4 +136,4 @@ The transformation of x and y coordinates between screen and NDC is exactly the px_ndc = - (px_screen - image_width / 2.0) * 2.0 / s py_ndc = - (py_screen - image_height / 2.0) * 2.0 / s -
Last updated by Xiao Xuan
Getting Started
\ No newline at end of file +
Getting Started
\ No newline at end of file diff --git a/docs/cubify.html b/docs/cubify.html index 261ecf9e..3cd52d96 100644 --- a/docs/cubify.html +++ b/docs/cubify.html @@ -66,4 +66,4 @@

The cubify operator converts an 3D occupancy grid of shape BxDxHxW, where B is the batch size, into a mesh instantiated as a Meshes data structure of B elements. The operator replaces every occupied voxel (if its occupancy probability is greater than a user defined threshold) with a cuboid of 12 faces and 8 vertices. Shared vertices are merged, and internal faces are removed resulting in a watertight mesh.

The operator provides three alignment modes {topleft, corner, center} which define the span of the mesh vertices with respect to the voxel grid. The alignment modes are described in the figure below for a 2D grid.

input

-
Last updated by Jeremy Reizenstein
BatchingIoU3D
\ No newline at end of file +
BatchingIoU3D
\ No newline at end of file diff --git a/docs/cubify/index.html b/docs/cubify/index.html index 261ecf9e..3cd52d96 100644 --- a/docs/cubify/index.html +++ b/docs/cubify/index.html @@ -66,4 +66,4 @@

The cubify operator converts an 3D occupancy grid of shape BxDxHxW, where B is the batch size, into a mesh instantiated as a Meshes data structure of B elements. The operator replaces every occupied voxel (if its occupancy probability is greater than a user defined threshold) with a cuboid of 12 faces and 8 vertices. Shared vertices are merged, and internal faces are removed resulting in a watertight mesh.

The operator provides three alignment modes {topleft, corner, center} which define the span of the mesh vertices with respect to the voxel grid. The alignment modes are described in the figure below for a 2D grid.

input

-
Last updated by Jeremy Reizenstein
BatchingIoU3D
\ No newline at end of file +
BatchingIoU3D
\ No newline at end of file diff --git a/docs/datasets.html b/docs/datasets.html index 3487bd02..a0a98fd7 100644 --- a/docs/datasets.html +++ b/docs/datasets.html @@ -70,4 +70,4 @@

R2N2

The R2N2 dataset contains 13 categories that are a subset of the ShapeNetCore v.1 dataset. The R2N2 dataset also contains its own 24 renderings of each object and voxelized models. The R2N2 Dataset can be downloaded following the instructions here.

The PyTorch3D R2N2 data loader is initialized with the paths to the ShapeNet dataset, the R2N2 dataset and the splits file for R2N2. Just like ShapeNetCore, it can be passed to torch.utils.data.DataLoader with a customized collate_fn: collate_batched_R2N2 from the pytorch3d.dataset.r2n2.utils module. It returns all the data that ShapeNetCore returns, and in addition, it returns the R2N2 renderings (24 views for each model) along with the camera calibration matrices and a voxel representation for each model. Similar to ShapeNetCore, it has a customized render function that supports rendering specified models with the PyTorch3D differentiable renderer. In addition, it supports rendering models with the same orientations as R2N2's original renderings.

-
Last updated by Jeremy Reizenstein
Loading from fileBatching
\ No newline at end of file +
Loading from fileBatching
\ No newline at end of file diff --git a/docs/datasets/index.html b/docs/datasets/index.html index 3487bd02..a0a98fd7 100644 --- a/docs/datasets/index.html +++ b/docs/datasets/index.html @@ -70,4 +70,4 @@

R2N2

The R2N2 dataset contains 13 categories that are a subset of the ShapeNetCore v.1 dataset. The R2N2 dataset also contains its own 24 renderings of each object and voxelized models. The R2N2 Dataset can be downloaded following the instructions here.

The PyTorch3D R2N2 data loader is initialized with the paths to the ShapeNet dataset, the R2N2 dataset and the splits file for R2N2. Just like ShapeNetCore, it can be passed to torch.utils.data.DataLoader with a customized collate_fn: collate_batched_R2N2 from the pytorch3d.dataset.r2n2.utils module. It returns all the data that ShapeNetCore returns, and in addition, it returns the R2N2 renderings (24 views for each model) along with the camera calibration matrices and a voxel representation for each model. Similar to ShapeNetCore, it has a customized render function that supports rendering specified models with the PyTorch3D differentiable renderer. In addition, it supports rendering models with the same orientations as R2N2's original renderings.

-
Last updated by Jeremy Reizenstein
Loading from fileBatching
\ No newline at end of file +
Loading from fileBatching
\ No newline at end of file diff --git a/docs/io.html b/docs/io.html index 93608e35..d9f4d06c 100644 --- a/docs/io.html +++ b/docs/io.html @@ -83,4 +83,4 @@ mesh = IO().loadLast updated by Jeremy Reizenstein
Why PyTorch3DLoading from file
\ No newline at end of file +
Why PyTorch3DLoading from file
\ No newline at end of file diff --git a/docs/io/index.html b/docs/io/index.html index 93608e35..d9f4d06c 100644 --- a/docs/io/index.html +++ b/docs/io/index.html @@ -83,4 +83,4 @@ mesh = IO().loadLast updated by Jeremy Reizenstein
Why PyTorch3DLoading from file
\ No newline at end of file +
Why PyTorch3DLoading from file
\ No newline at end of file diff --git a/docs/iou3d.html b/docs/iou3d.html index 7462c72e..04c6cd29 100644 --- a/docs/iou3d.html +++ b/docs/iou3d.html @@ -122,4 +122,4 @@ intersection_vol, iou_3d = box3d_overlap(boxes1, boxes2) year = {2020}, } -
Last updated by Ji Hou
CubifyPlotly Visualization
\ No newline at end of file +
CubifyPlotly Visualization
\ No newline at end of file diff --git a/docs/iou3d/index.html b/docs/iou3d/index.html index 7462c72e..04c6cd29 100644 --- a/docs/iou3d/index.html +++ b/docs/iou3d/index.html @@ -122,4 +122,4 @@ intersection_vol, iou_3d = box3d_overlap(boxes1, boxes2) year = {2020}, } -
Last updated by Ji Hou
CubifyPlotly Visualization
\ No newline at end of file +
CubifyPlotly Visualization
\ No newline at end of file diff --git a/docs/meshes_io.html b/docs/meshes_io.html index 1505540e..db8d4497 100644 --- a/docs/meshes_io.html +++ b/docs/meshes_io.html @@ -116,4 +116,4 @@ are not triangles will be split into triangles. A Meshes object containing a single mesh can be created from this data using

    meshes = Meshes(verts=[verts], faces=[faces])
 
-
Last updated by Jeremy Reizenstein
File IOData loaders
\ No newline at end of file +
File IOData loaders
\ No newline at end of file diff --git a/docs/meshes_io/index.html b/docs/meshes_io/index.html index 1505540e..db8d4497 100644 --- a/docs/meshes_io/index.html +++ b/docs/meshes_io/index.html @@ -116,4 +116,4 @@ are not triangles will be split into triangles. A Meshes object containing a single mesh can be created from this data using

    meshes = Meshes(verts=[verts], faces=[faces])
 
-
Last updated by Jeremy Reizenstein
File IOData loaders
\ No newline at end of file +
File IOData loaders
\ No newline at end of file diff --git a/docs/renderer.html b/docs/renderer.html index 124ea30c..e0c4dc02 100644 --- a/docs/renderer.html +++ b/docs/renderer.html @@ -109,4 +109,4 @@ total_memory = memory_forward_pass + memory_backward_pass

[6] Yifan et al, 'Differentiable Surface Splatting for Point-based Geometry Processing', SIGGRAPH Asia 2019

[7] Loubet et al, 'Reparameterizing Discontinuous Integrands for Differentiable Rendering', SIGGRAPH Asia 2019

[8] Chen et al, 'Learning to Predict 3D Objects with an Interpolation-based Differentiable Renderer', NeurIPS 2019

-
Last updated by Krzysztof Chalupka
Plotly VisualizationGetting Started
\ No newline at end of file +
Plotly VisualizationGetting Started
\ No newline at end of file diff --git a/docs/renderer/index.html b/docs/renderer/index.html index 124ea30c..e0c4dc02 100644 --- a/docs/renderer/index.html +++ b/docs/renderer/index.html @@ -109,4 +109,4 @@ total_memory = memory_forward_pass + memory_backward_pass

[6] Yifan et al, 'Differentiable Surface Splatting for Point-based Geometry Processing', SIGGRAPH Asia 2019

[7] Loubet et al, 'Reparameterizing Discontinuous Integrands for Differentiable Rendering', SIGGRAPH Asia 2019

[8] Chen et al, 'Learning to Predict 3D Objects with an Interpolation-based Differentiable Renderer', NeurIPS 2019

-
Last updated by Krzysztof Chalupka
Plotly VisualizationGetting Started
\ No newline at end of file +
Plotly VisualizationGetting Started
\ No newline at end of file diff --git a/docs/renderer_getting_started.html b/docs/renderer_getting_started.html index b12b0c49..a617b741 100644 --- a/docs/renderer_getting_started.html +++ b/docs/renderer_getting_started.html @@ -168,4 +168,4 @@ renderer = MeshRenderer( SoftSilhouetteShader✔️ -
Last updated by Jeremy Reizenstein
OverviewCameras
\ No newline at end of file +
OverviewCameras
\ No newline at end of file diff --git a/docs/renderer_getting_started/index.html b/docs/renderer_getting_started/index.html index b12b0c49..a617b741 100644 --- a/docs/renderer_getting_started/index.html +++ b/docs/renderer_getting_started/index.html @@ -168,4 +168,4 @@ renderer = MeshRenderer( SoftSilhouetteShader✔️ -
Last updated by Jeremy Reizenstein
OverviewCameras
\ No newline at end of file +
OverviewCameras
\ No newline at end of file diff --git a/docs/visualization.html b/docs/visualization.html index baceb94d..20766b6c 100644 --- a/docs/visualization.html +++ b/docs/visualization.html @@ -75,4 +75,4 @@
fig = ...
 fig.write_image("image_name.png")
 
-
Last updated by Alex Naumann
IoU3DOverview
\ No newline at end of file +
IoU3DOverview
\ No newline at end of file diff --git a/docs/visualization/index.html b/docs/visualization/index.html index baceb94d..20766b6c 100644 --- a/docs/visualization/index.html +++ b/docs/visualization/index.html @@ -75,4 +75,4 @@
fig = ...
 fig.write_image("image_name.png")
 
-
Last updated by Alex Naumann
IoU3DOverview
\ No newline at end of file +
IoU3DOverview
\ No newline at end of file diff --git a/docs/why_pytorch3d.html b/docs/why_pytorch3d.html index 04a628d1..1441decb 100644 --- a/docs/why_pytorch3d.html +++ b/docs/why_pytorch3d.html @@ -65,4 +65,4 @@

Why PyTorch3D

Our goal with PyTorch3D is to help accelerate research at the intersection of deep learning and 3D. 3D data is more complex than 2D images and while working on projects such as Mesh R-CNN and C3DPO, we encountered several challenges including 3D data representation, batching, and speed. We have developed many useful operators and abstractions for working on 3D deep learning and want to share this with the community to drive novel research in this area.

In PyTorch3D we have included efficient 3D operators, heterogeneous batching capabilities, and a modular differentiable rendering API, to equip researchers in this field with a much needed toolkit to implement cutting-edge research with complex 3D inputs.

-
Last updated by Patrick Labatut
\ No newline at end of file +
File IO
\ No newline at end of file diff --git a/docs/why_pytorch3d/index.html b/docs/why_pytorch3d/index.html index 04a628d1..1441decb 100644 --- a/docs/why_pytorch3d/index.html +++ b/docs/why_pytorch3d/index.html @@ -65,4 +65,4 @@

Why PyTorch3D

Our goal with PyTorch3D is to help accelerate research at the intersection of deep learning and 3D. 3D data is more complex than 2D images and while working on projects such as Mesh R-CNN and C3DPO, we encountered several challenges including 3D data representation, batching, and speed. We have developed many useful operators and abstractions for working on 3D deep learning and want to share this with the community to drive novel research in this area.

In PyTorch3D we have included efficient 3D operators, heterogeneous batching capabilities, and a modular differentiable rendering API, to equip researchers in this field with a much needed toolkit to implement cutting-edge research with complex 3D inputs.

-
Last updated by Patrick Labatut
\ No newline at end of file +
File IO
\ No newline at end of file diff --git a/en/help.html b/en/help.html index 37e5c5c9..746d6a5d 100644 --- a/en/help.html +++ b/en/help.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/en/help/index.html b/en/help/index.html index 37e5c5c9..746d6a5d 100644 --- a/en/help/index.html +++ b/en/help/index.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/en/index.html b/en/index.html index 8a3c012e..452e82fd 100644 --- a/en/index.html +++ b/en/index.html @@ -28,4 +28,4 @@ sample_sphere = sample_points_from_meshes(sphere_mesh, 5000) loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test) - \ No newline at end of file + \ No newline at end of file diff --git a/en/users.html b/en/users.html index bc350fc3..f492af80 100644 --- a/en/users.html +++ b/en/users.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); -
\ No newline at end of file +
\ No newline at end of file diff --git a/en/users/index.html b/en/users/index.html index bc350fc3..f492af80 100644 --- a/en/users/index.html +++ b/en/users/index.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); -
\ No newline at end of file +
\ No newline at end of file diff --git a/files/bundle_adjustment.ipynb b/files/bundle_adjustment.ipynb index 1002b457..add5e405 100644 --- a/files/bundle_adjustment.ipynb +++ b/files/bundle_adjustment.ipynb @@ -89,7 +89,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/bundle_adjustment.py b/files/bundle_adjustment.py index 3dcd18c3..baeff48f 100644 --- a/files/bundle_adjustment.py +++ b/files/bundle_adjustment.py @@ -49,7 +49,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/camera_position_optimization_with_differentiable_rendering.ipynb b/files/camera_position_optimization_with_differentiable_rendering.ipynb index 79163a2c..9b9fe593 100644 --- a/files/camera_position_optimization_with_differentiable_rendering.ipynb +++ b/files/camera_position_optimization_with_differentiable_rendering.ipynb @@ -76,7 +76,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/camera_position_optimization_with_differentiable_rendering.py b/files/camera_position_optimization_with_differentiable_rendering.py index 267655d5..e7952dfe 100644 --- a/files/camera_position_optimization_with_differentiable_rendering.py +++ b/files/camera_position_optimization_with_differentiable_rendering.py @@ -36,7 +36,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/dataloaders_ShapeNetCore_R2N2.ipynb b/files/dataloaders_ShapeNetCore_R2N2.ipynb index 6986da28..8c09e6b5 100644 --- a/files/dataloaders_ShapeNetCore_R2N2.ipynb +++ b/files/dataloaders_ShapeNetCore_R2N2.ipynb @@ -51,7 +51,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/dataloaders_ShapeNetCore_R2N2.py b/files/dataloaders_ShapeNetCore_R2N2.py index 370282aa..8887c7fb 100644 --- a/files/dataloaders_ShapeNetCore_R2N2.py +++ b/files/dataloaders_ShapeNetCore_R2N2.py @@ -31,7 +31,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/deform_source_mesh_to_target_mesh.ipynb b/files/deform_source_mesh_to_target_mesh.ipynb index 1b7d0455..a001b47e 100644 --- a/files/deform_source_mesh_to_target_mesh.ipynb +++ b/files/deform_source_mesh_to_target_mesh.ipynb @@ -90,7 +90,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/deform_source_mesh_to_target_mesh.py b/files/deform_source_mesh_to_target_mesh.py index 592cf336..f4e3ca80 100644 --- a/files/deform_source_mesh_to_target_mesh.py +++ b/files/deform_source_mesh_to_target_mesh.py @@ -48,7 +48,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/fit_simple_neural_radiance_field.ipynb b/files/fit_simple_neural_radiance_field.ipynb index 0ad532be..c8880e41 100644 --- a/files/fit_simple_neural_radiance_field.ipynb +++ b/files/fit_simple_neural_radiance_field.ipynb @@ -56,7 +56,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/fit_simple_neural_radiance_field.py b/files/fit_simple_neural_radiance_field.py index c7f618e9..f59dd85e 100644 --- a/files/fit_simple_neural_radiance_field.py +++ b/files/fit_simple_neural_radiance_field.py @@ -42,7 +42,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/fit_textured_mesh.ipynb b/files/fit_textured_mesh.ipynb index 4a183593..92efbc65 100644 --- a/files/fit_textured_mesh.ipynb +++ b/files/fit_textured_mesh.ipynb @@ -68,7 +68,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/fit_textured_mesh.py b/files/fit_textured_mesh.py index 3567108d..f25afc85 100644 --- a/files/fit_textured_mesh.py +++ b/files/fit_textured_mesh.py @@ -31,7 +31,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/fit_textured_volume.ipynb b/files/fit_textured_volume.ipynb index e74bf9e9..d857bc29 100644 --- a/files/fit_textured_volume.ipynb +++ b/files/fit_textured_volume.ipynb @@ -47,7 +47,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/fit_textured_volume.py b/files/fit_textured_volume.py index 5f0d18f8..f89acffb 100644 --- a/files/fit_textured_volume.py +++ b/files/fit_textured_volume.py @@ -32,7 +32,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/implicitron_config_system.ipynb b/files/implicitron_config_system.ipynb index 8d0102f8..d39942ee 100644 --- a/files/implicitron_config_system.ipynb +++ b/files/implicitron_config_system.ipynb @@ -78,7 +78,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/implicitron_config_system.py b/files/implicitron_config_system.py index c2e6b1ba..b160f606 100644 --- a/files/implicitron_config_system.py +++ b/files/implicitron_config_system.py @@ -35,7 +35,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/implicitron_volumes.ipynb b/files/implicitron_volumes.ipynb index bacf7cbd..1f387619 100644 --- a/files/implicitron_volumes.ipynb +++ b/files/implicitron_volumes.ipynb @@ -72,7 +72,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/implicitron_volumes.py b/files/implicitron_volumes.py index 135923bc..645b9829 100644 --- a/files/implicitron_volumes.py +++ b/files/implicitron_volumes.py @@ -30,7 +30,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/render_colored_points.ipynb b/files/render_colored_points.ipynb index 0982a9b5..2ed0b99e 100644 --- a/files/render_colored_points.ipynb +++ b/files/render_colored_points.ipynb @@ -50,7 +50,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/render_colored_points.py b/files/render_colored_points.py index 680ec4b1..49dc8e9f 100644 --- a/files/render_colored_points.py +++ b/files/render_colored_points.py @@ -30,7 +30,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/render_densepose.ipynb b/files/render_densepose.ipynb index 2307165b..cfe1f0eb 100644 --- a/files/render_densepose.ipynb +++ b/files/render_densepose.ipynb @@ -57,7 +57,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/render_densepose.py b/files/render_densepose.py index 2cee1b97..6a00ffdb 100644 --- a/files/render_densepose.py +++ b/files/render_densepose.py @@ -34,7 +34,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/files/render_textured_meshes.ipynb b/files/render_textured_meshes.ipynb index 8c5adc48..daf90c8b 100644 --- a/files/render_textured_meshes.ipynb +++ b/files/render_textured_meshes.ipynb @@ -73,7 +73,7 @@ "except ModuleNotFoundError:\n", " need_pytorch3d=True\n", "if need_pytorch3d:\n", - " if torch.__version__.startswith(\"2.1.\") and sys.platform.startswith(\"linux\"):\n", + " if torch.__version__.startswith(\"2.2.\") and sys.platform.startswith(\"linux\"):\n", " # We try to install PyTorch3D via a released wheel.\n", " pyt_version_str=torch.__version__.split(\"+\")[0].replace(\".\", \"\")\n", " version_str=\"\".join([\n", diff --git a/files/render_textured_meshes.py b/files/render_textured_meshes.py index 4a65b05e..bc332d84 100644 --- a/files/render_textured_meshes.py +++ b/files/render_textured_meshes.py @@ -32,7 +32,7 @@ try: except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ diff --git a/help.html b/help.html index 00991708..f5684a2b 100644 --- a/help.html +++ b/help.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/help/index.html b/help/index.html index 00991708..f5684a2b 100644 --- a/help/index.html +++ b/help/index.html @@ -12,4 +12,4 @@

Ask questions about the documentation and project

Stay up to date

Find out what's new with this project

-
\ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index f5ba2748..69497351 100644 --- a/index.html +++ b/index.html @@ -28,4 +28,4 @@ sample_sphere = sample_points_from_meshes(sphere_mesh, 5000) loss_chamfer, _ = chamfer_distance(sample_sphere, sample_test) - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/bundle_adjustment.html b/tutorials/bundle_adjustment.html index 7be999cf..ab807f6f 100644 --- a/tutorials/bundle_adjustment.html +++ b/tutorials/bundle_adjustment.html @@ -133,7 +133,7 @@ where $d(g_i, g_j)$ is a suitable metric that compares the extrinsics of cameras except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -421,4 +421,4 @@ where $d(g_i, g_j)$ is a suitable metric that compares the extrinsics of cameras - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/bundle_adjustment/index.html b/tutorials/bundle_adjustment/index.html index 7be999cf..ab807f6f 100644 --- a/tutorials/bundle_adjustment/index.html +++ b/tutorials/bundle_adjustment/index.html @@ -133,7 +133,7 @@ where $d(g_i, g_j)$ is a suitable metric that compares the extrinsics of cameras except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -421,4 +421,4 @@ where $d(g_i, g_j)$ is a suitable metric that compares the extrinsics of cameras - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/camera_position_optimization_with_differentiable_rendering.html b/tutorials/camera_position_optimization_with_differentiable_rendering.html index 1ef78739..7d7d1420 100644 --- a/tutorials/camera_position_optimization_with_differentiable_rendering.html +++ b/tutorials/camera_position_optimization_with_differentiable_rendering.html @@ -127,7 +127,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -507,4 +507,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/camera_position_optimization_with_differentiable_rendering/index.html b/tutorials/camera_position_optimization_with_differentiable_rendering/index.html index 1ef78739..7d7d1420 100644 --- a/tutorials/camera_position_optimization_with_differentiable_rendering/index.html +++ b/tutorials/camera_position_optimization_with_differentiable_rendering/index.html @@ -127,7 +127,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -507,4 +507,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/dataloaders_ShapeNetCore_R2N2.html b/tutorials/dataloaders_ShapeNetCore_R2N2.html index c1defc0b..45dc4e81 100644 --- a/tutorials/dataloaders_ShapeNetCore_R2N2.html +++ b/tutorials/dataloaders_ShapeNetCore_R2N2.html @@ -126,7 +126,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -654,4 +654,4 @@ dataset. The R2N2 dataset also contains its own 24 renderings of each object and - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/dataloaders_ShapeNetCore_R2N2/index.html b/tutorials/dataloaders_ShapeNetCore_R2N2/index.html index c1defc0b..45dc4e81 100644 --- a/tutorials/dataloaders_ShapeNetCore_R2N2/index.html +++ b/tutorials/dataloaders_ShapeNetCore_R2N2/index.html @@ -126,7 +126,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -654,4 +654,4 @@ dataset. The R2N2 dataset also contains its own 24 renderings of each object and - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/deform_source_mesh_to_target_mesh.html b/tutorials/deform_source_mesh_to_target_mesh.html index 26249cf2..5ac5efdc 100644 --- a/tutorials/deform_source_mesh_to_target_mesh.html +++ b/tutorials/deform_source_mesh_to_target_mesh.html @@ -146,7 +146,7 @@ the predicted mesh is closer to the target mesh at each optimization step. To ac except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -494,4 +494,4 @@ the predicted mesh is closer to the target mesh at each optimization step. To ac - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/deform_source_mesh_to_target_mesh/index.html b/tutorials/deform_source_mesh_to_target_mesh/index.html index 26249cf2..5ac5efdc 100644 --- a/tutorials/deform_source_mesh_to_target_mesh/index.html +++ b/tutorials/deform_source_mesh_to_target_mesh/index.html @@ -146,7 +146,7 @@ the predicted mesh is closer to the target mesh at each optimization step. To ac except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -494,4 +494,4 @@ the predicted mesh is closer to the target mesh at each optimization step. To ac - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_simple_neural_radiance_field.html b/tutorials/fit_simple_neural_radiance_field.html index bab052cc..7a9a6e15 100644 --- a/tutorials/fit_simple_neural_radiance_field.html +++ b/tutorials/fit_simple_neural_radiance_field.html @@ -127,7 +127,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -952,4 +952,4 @@ described in the previous cell.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_simple_neural_radiance_field/index.html b/tutorials/fit_simple_neural_radiance_field/index.html index bab052cc..7a9a6e15 100644 --- a/tutorials/fit_simple_neural_radiance_field/index.html +++ b/tutorials/fit_simple_neural_radiance_field/index.html @@ -127,7 +127,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -952,4 +952,4 @@ described in the previous cell.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_mesh.html b/tutorials/fit_textured_mesh.html index f83d7435..4c7889b3 100644 --- a/tutorials/fit_textured_mesh.html +++ b/tutorials/fit_textured_mesh.html @@ -125,7 +125,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -883,4 +883,4 @@ If running locally, the data is already available at the correct path.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_mesh/index.html b/tutorials/fit_textured_mesh/index.html index f83d7435..4c7889b3 100644 --- a/tutorials/fit_textured_mesh/index.html +++ b/tutorials/fit_textured_mesh/index.html @@ -125,7 +125,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -883,4 +883,4 @@ If running locally, the data is already available at the correct path.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_volume.html b/tutorials/fit_textured_volume.html index 626af608..3db9413d 100644 --- a/tutorials/fit_textured_volume.html +++ b/tutorials/fit_textured_volume.html @@ -118,7 +118,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -544,4 +544,4 @@ pairs of target_images/rendered_images and targe - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/fit_textured_volume/index.html b/tutorials/fit_textured_volume/index.html index 626af608..3db9413d 100644 --- a/tutorials/fit_textured_volume/index.html +++ b/tutorials/fit_textured_volume/index.html @@ -118,7 +118,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -544,4 +544,4 @@ pairs of target_images/rendered_images and targe - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_config_system.html b/tutorials/implicitron_config_system.html index d7a1d6bb..4e1e4214 100644 --- a/tutorials/implicitron_config_system.html +++ b/tutorials/implicitron_config_system.html @@ -125,7 +125,7 @@ This tutorial provides detailed hands-on experience in using and modifying Impli except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -873,4 +873,4 @@ instead of - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_config_system/index.html b/tutorials/implicitron_config_system/index.html index d7a1d6bb..4e1e4214 100644 --- a/tutorials/implicitron_config_system/index.html +++ b/tutorials/implicitron_config_system/index.html @@ -125,7 +125,7 @@ This tutorial provides detailed hands-on experience in using and modifying Impli except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -873,4 +873,4 @@ instead of - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_volumes.html b/tutorials/implicitron_volumes.html index 3763eff8..b6931b2c 100644 --- a/tutorials/implicitron_volumes.html +++ b/tutorials/implicitron_volumes.html @@ -115,7 +115,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -652,4 +652,4 @@ This is a grid of four rows of images, wrapped in to several large rows, i.e.. - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/implicitron_volumes/index.html b/tutorials/implicitron_volumes/index.html index 3763eff8..b6931b2c 100644 --- a/tutorials/implicitron_volumes/index.html +++ b/tutorials/implicitron_volumes/index.html @@ -115,7 +115,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -652,4 +652,4 @@ This is a grid of four rows of images, wrapped in to several large rows, i.e.. - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/index.html b/tutorials/index.html index 491ad02d..b0c51501 100644 --- a/tutorials/index.html +++ b/tutorials/index.html @@ -62,4 +62,4 @@ }; } }); -

Welcome to the PyTorch3D Tutorials

Here you can learn about the structure and applications of PyTorch3D from examples which are in the form of ipython notebooks.

Run interactively

At the top of each example you can find a button named "Run in Google Colab" which will open the notebook in Google Colaboratory where you can run the code directly in the browser with access to GPU support - it looks like this:

You can modify the code and experiment with varying different settings. Remember to install the latest stable version of PyTorch3D and its dependencies. Code to do this with pip is provided in each notebook.

Run locally

There is also a button to download the notebook and source code to run it locally.

\ No newline at end of file +

Welcome to the PyTorch3D Tutorials

Here you can learn about the structure and applications of PyTorch3D from examples which are in the form of ipython notebooks.

Run interactively

At the top of each example you can find a button named "Run in Google Colab" which will open the notebook in Google Colaboratory where you can run the code directly in the browser with access to GPU support - it looks like this:

You can modify the code and experiment with varying different settings. Remember to install the latest stable version of PyTorch3D and its dependencies. Code to do this with pip is provided in each notebook.

Run locally

There is also a button to download the notebook and source code to run it locally.

\ No newline at end of file diff --git a/tutorials/render_colored_points.html b/tutorials/render_colored_points.html index c730994c..e2c3a7b5 100644 --- a/tutorials/render_colored_points.html +++ b/tutorials/render_colored_points.html @@ -124,7 +124,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -553,4 +553,4 @@ Sphere-based Representations.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_colored_points/index.html b/tutorials/render_colored_points/index.html index c730994c..e2c3a7b5 100644 --- a/tutorials/render_colored_points/index.html +++ b/tutorials/render_colored_points/index.html @@ -124,7 +124,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -553,4 +553,4 @@ Sphere-based Representations.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_densepose.html b/tutorials/render_densepose.html index 07711a7b..03c956ce 100644 --- a/tutorials/render_densepose.html +++ b/tutorials/render_densepose.html @@ -127,7 +127,7 @@ In this tutorial, we provide an example of using DensePose data in PyTorch3D.

except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -502,4 +502,4 @@ In this tutorial, we provide an example of using DensePose data in PyTorch3D.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_densepose/index.html b/tutorials/render_densepose/index.html index 07711a7b..03c956ce 100644 --- a/tutorials/render_densepose/index.html +++ b/tutorials/render_densepose/index.html @@ -127,7 +127,7 @@ In this tutorial, we provide an example of using DensePose data in PyTorch3D.

except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -502,4 +502,4 @@ In this tutorial, we provide an example of using DensePose data in PyTorch3D.

- \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_textured_meshes.html b/tutorials/render_textured_meshes.html index 9f1d3b76..8c984571 100644 --- a/tutorials/render_textured_meshes.html +++ b/tutorials/render_textured_meshes.html @@ -126,7 +126,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -763,4 +763,4 @@ The renderer and associated components can take batched inputs and rende - \ No newline at end of file + \ No newline at end of file diff --git a/tutorials/render_textured_meshes/index.html b/tutorials/render_textured_meshes/index.html index 9f1d3b76..8c984571 100644 --- a/tutorials/render_textured_meshes/index.html +++ b/tutorials/render_textured_meshes/index.html @@ -126,7 +126,7 @@ except ModuleNotFoundError: need_pytorch3d=True if need_pytorch3d: - if torch.__version__.startswith("2.1.") and sys.platform.startswith("linux"): + if torch.__version__.startswith("2.2.") and sys.platform.startswith("linux"): # We try to install PyTorch3D via a released wheel. pyt_version_str=torch.__version__.split("+")[0].replace(".", "") version_str="".join([ @@ -763,4 +763,4 @@ The renderer and associated components can take batched inputs and rende - \ No newline at end of file + \ No newline at end of file diff --git a/users.html b/users.html index c8ebc695..5f3501f9 100644 --- a/users.html +++ b/users.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); - \ No newline at end of file + \ No newline at end of file diff --git a/users/index.html b/users/index.html index c8ebc695..5f3501f9 100644 --- a/users/index.html +++ b/users/index.html @@ -6,4 +6,4 @@ ga('create', 'UA-157376881-1', 'auto'); ga('send', 'pageview'); - \ No newline at end of file + \ No newline at end of file