PageSourceSearch

https://free-time-katas.github.io/guia-composer.html

html free-time-katas.github.io collected 2026-10-03 09:12:48 UTC 67,915 bytes, 105 lines download raw bytes

1<!DOCTYPE html> <html lang="es-ES"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="http://gmpg.org/xfn/11"> 
1<script defer src="https://use.fontawesome.com/releases/v5.0.8/js/all.js"></script>
1 <title>▷ Guía de composer en español | Si eres programador PHP lee esto</title> <style> :root { --header-background: #BF2A2A; --header-color: #E6E7E8; --site-url: https://free-time-katas.github.io; } </style><style>*,dd{margin:0}a,a:hover{color:#0275d8}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6,ol li,p img,ul li{margin-bottom:1rem}.social-facebook.social-icon:before,.social-telegram.social-icon:before{text-indent:0;margin-right:0}.badge,.cookies-btn,.site-nav-trigger{white-space:nowrap}.cookies-banner .cookies-btn:last-child,.cookies-theme-classic .cookies-btn:last-child{min-width:140px}.aligncenter,.banner,.breadcrumbs:after,.clearfix:after,.gallery-masonry.gallery:after,.masonry:after,.pagination:after{clear:both}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}*{padding:0;outline:0;-webkit-overflow-scrolling:touch}audio,canvas,iframe,img,svg,video{vertical-align:middle;max-width:100%}img,video{height:auto}.btn:focus,a,button:focus{outline:0}[role=button]{cursor:pointer}[tabindex="-1"]:focus{outline:0}pre{overflow:hidden}dt{text-decoration:underline}.entry-item .entry-category a,.entry-item .entry-title a,.site-header a,a,a.badge:focus,a.badge:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{text-decoration:none}dd{padding:0 0 .5em}b,strong{color:#000}em,i{font-style:italic}fieldset{padding:1rem}@font-face{font-family:Lato;font-style:normal;font-weight:300;src:url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-300.eot');src:local("Lato Light"),local("Lato-Light"),url('var(') --site-url'/assets/fonts/lato/lato-v13-latin-300.eot?#iefix') format("embedded-opentype"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-300.woff2') format("woff2"),url('var(--site-url') '/assets./fonts/lato/lato-v13-latin-300.woff') format("woff"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-300.ttf') format("truetype"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-300.svg#Lato') format("svg")}@font-face{font-family:Lato;font-style:normal;font-weight:400;src:url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-regular.eot');src:local("Lato Regular"),local("Lato-Regular"),url('var(') --site-url'/assets/fonts/lato/lato-v13-latin-regular.eot?#iefix') format("embedded-opentype"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-regular.woff2') format("woff2"),url('var(--site-url') '/assets./fonts/lato/lato-v13-latin-regular.woff') format("woff"),url('var(') --site-url'/assets/fonts/lato/lato-v13-latin-regular.ttf') format("truetype"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-regular.svg#Lato') format("svg")}@font-face{font-family:Lato;font-style:normal;font-weight:700;src:url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-700.eot');src:local("Lato Bold"),local("Lato-Bold"),url('var(') --site-url'/assets/fonts/lato/lato-v13-latin-700.eot?#iefix') format("embedded-opentype"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-700.woff2') format("woff2"),url('var(--site-url') '/assets./fonts/lato/lato-v13-latin-700.woff') format("woff"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-700.ttf') format("truetype"),url('var(--site-url') '/assets/fonts/lato/lato-v13-latin-700.svg#Lato') format("svg")}@font-face{font-family:Montserrat;font-style:normal;font-weight:400;src:url('var(--site-url') '/assets/fonts/montserrat/montserrat-v10-latin-regular.eot');src:local("Montserrat Regular"),local("Montserrat-Regular"),url('var(') --site-url'/assets./fonts/montserrat/montserrat-v10-latin-regular.eot?#iefix') format("embedded-opentype"),url('var(--site-url') '/assets./fonts/montserrat/montserrat-v10-latin-regular.woff2') format("woff2"),url('var(--site-url') '/assets./fonts/montserrat/montserrat-v10-latin-regular.woff') format("woff"),url('var(--site-url') '/assets./fonts/montserrat/montserrat-v10-latin-regular.ttf') format("truetype"),url('var(--site-url') '/assets./fonts/montserrat/montserrat-v10-latin-regular.svg#Montserrat') format("svg")}@font-face{font-family:Montserrat;font-style:normal;font-weight:700;src:url('var(--site-url') '/assets/fonts/montserrat/montserrat-v10-latin-700.eot');src:local("Montserrat Bold"),local("Montserrat-Bold"),url('var(') --site-url'/assets/fonts/montserrat/montserrat-v10-latin-700.eot?#iefix') format("embedded-opentype"),url('var(') --site-url'/assets/fonts/montserrat/montserrat-v10-latin-700.woff2') format("woff2"),url('var(--site-url') '/assets/fonts/montserrat/montserrat-v10-latin-700.woff') format("woff"),url('var(--site-url') '/assets./fonts/montserrat/montserrat-v10-latin-700.ttf') format("truetype"),url('var(--site-url') '/assets./fonts/montserrat/montserrat-v10-latin-700.svg#Montserrat') format("svg")}body{font-family:Lato,Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:1rem;color:#333;line-height:1.5;word-wrap:break-word;overflow-x:hidden;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}.title,h1,h2,h3,h4,h5,h6{font-family:Montserrat,Arial,"Helvetica Neue",Helvetica,sans-serif}hr{margin:2em 0;height:1px;border:0;border-top:1px solid #ccc}figure{display:inline-block}figure img{margin-bottom:.5rem;line-height:1}figure figcaption{font-size:.9rem;color:#818a91}.flex{-webkit-box-sizing:border-box;box-sizing:border-box;display:flex;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.flex .right{margin-left:auto}.flex .left{margin-right:auto}.flex-fluid{margin-right:-1rem;margin-left:-1rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;color:#111;text-rendering:optimizeLegibility;margin-top:2.5rem}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1.35;letter-spacing:-.02em;font-size:75%}.lead{font-size:1.25rem}h1{font-size:3rem}h2{font-size:2.25rem}h3{font-size:1.75rem;margin-bottom:.25rem}h4{font-size:1.25rem}h5{font-size:1.15rem}h6{font-size:1rem}address,blockquote,dl,fieldset,figure,form,hr,ol,p,pre,table,ul{margin-bottom:1.5rem;font-size:1.125rem}ol,ul{padding-left:2rem}code,kbd,mark,samp{position:relative;top:-1px;padding:4px 4px 2px;display:inline-block;line-height:1;color:rgba(49,52,57,.85)}cite,figcaption,small,time{font-size:.85rem}abbr[title],dfn[title]{border-bottom:1px dotted rgba(0,0,0,.5);cursor:help}.blockquote,blockquote{padding:1rem;border:1px solid #eee;border-left:4px solid rgba(0,0,0,.1);background-color:#fdfdfd;color:rgba(51,51,51,.65)}.blockquote p,blockquote p{margin-bottom:.5rem}mark{background-color:#ff0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}code{background:#e0e1e1}.container{max-width:100%;width:48rem;margin:0 auto;padding:0 1rem}.container-fluid{padding:1rem;max-width:100%;width:100%}.entry-footer{margin:1rem auto}.site-thumbnail{margin-bottom:1.5rem}.site-header{min-height:56px;padding:0;color:#000;font-family:Lato,Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:1rem;background-color:var(--header-background);border-bottom:1px solid #dbdbdb;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.site-header .container,.site-header .container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 1rem}.site-header a{color:var(--header-color);display:block;line-height:1}.site-logo{margin-right:1rem;font-size:1.25rem;padding:.5rem 0}.site-logo p{margin:0}.site-logo img{max-width:150px}.site-logo,.site-navbar,.site-trigger{display:inline-block}.site-navbar-left{margin-left:1rem}.site-navbar-right,.site-trigger{margin-left:auto}.site-nav-trigger{position:relative;display:block;width:24px;height:28px;overflow:hidden;color:transparent;z-index:3}.site-nav-trigger span{position:absolute;top:50%;right:0;-webkit-transition:background .3s .3s;transition:background .3s .3s;display:inline-block;height:3px;width:24px;background:#000}.site-nav-trigger span:after,.site-nav-trigger span:before{content:'';height:3px;width:24px;background:#000;position:absolute;-webkit-backface-visibility:hidden;backface-visibility:hidden;right:0;-webkit-transition:-webkit-transform .3s .3s;transition:-webkit-transform .3s .3s;transition:transform .3s .3s;transition:transform .3s .3s,-webkit-transform .3s .3s}.site-nav-trigger span:before{top:-6px}.site-nav-trigger span:after{top:6px}.navbar-fixed-top{position:fixed;top:0;width:100%}.site-navbar{display:none}.site-navbar ul{list-style-type:none;margin:0;padding:0}.site-navbar ul li{padding-bottom:0;display:inline-block;margin-bottom:0}.site-navbar ul li a{display:block;padding:1.25rem;font-size:1rem}.site-navbar .menu-item-has-children{position:relative}.site-navbar .menu-item-has-children a{padding-right:2.25rem}@media (min-width:64rem){.site-navbar .menu-item-has-children:after{content:"";border:solid #000;border-width:0 2px 2px 0;display:inline-block;padding:3px;position:absolute;right:.75rem;top:48%;-webkit-transform:translateY(-48%) rotate(45deg);transform:translateY(-48%) rotate(45deg)}.site-navbar .sub-menu{background:#fff;border:1px solid #bbb;padding:0;position:absolute;top:100%;left:.5em;display:none;z-index:1000}.site-navbar .sub-menu ul{left:100%;right:auto;top:0}.site-navbar .sub-menu li{display:inline-block;width:14rem}
1.site-navbar .sub-menu li:hover{background-color:#d3d3d3}.site-navbar .sub-menu li a{width:100%;color:#000}.site-navbar .menu-item-has-children:hover>.sub-menu{display:block}.site-navbar.site-navbar-right .sub-menu{right:.5rem;left:auto}.site-navbar.site-navbar-right .sub-menu ul{right:100%}}.site-navbar-open.site-navbar::after{width:0;height:0;opacity:0;-webkit-transition:opacity .5s,width .1s .5s,height .1s .5s;transition:opacity .5s,width .1s .5s,height .1s .5s}.site-navbar-open.site-navbar{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.site-overlay{display:none}@media (min-width:64rem){.site-header{margin-bottom:0}.with-header .site-navbar{margin:0 auto}.site-navbar{display:block}.site-navbar ul li a{display:inline-block}.site-trigger{display:none}}@media (max-width:64rem){body.active{width:100%}.site-navbar{position:fixed;display:-webkit-box;display:-ms-flexbox;display:flex;bottom:9rem;right:1rem;width:200px;-webkit-transform:translateX(300px);transform:translateX(300px);-webkit-transition:.3s ease all;transition:.3s ease all;z-index:100000000;border-left:1px solid #eee;opacity:1;max-height:400px;overflow-y:scroll}.site-navbar ul{width:100%;bottom:0;background:#fff}.site-navbar ul li{width:100%;border-bottom:1px solid #eee}.site-navbar ul li a{color:#000;background:#fff}.site-navbar ul li a[href="#"]{font-weight:700;cursor:default;padding:.75rem}.site-navbar.active{-webkit-transform:translateX(0);transform:translateX(0)}.site-overlay.active{opacity:.75;position:fixed;height:100%;width:100%;top:0;background:#000;display:block}.site-header.with-header{min-height:0;border:none}.site-header.with-header .site-logo{width:100%;text-align:center}.site-header.with-header .site-trigger{margin:0 auto;position:fixed;bottom:4rem;right:1.5rem;z-index:1000000000;width:64px;height:64px;border:0;border-radius:50%;opacity:1;padding:1rem;-webkit-box-shadow:0 5px 10px 0 rgba(0,0,0,.5);box-shadow:0 5px 10px 0 rgba(0,0,0,.5);background-color:#fff;-webkit-transition:.3s ease all;transition:.3s ease all}.site-header.with-header .site-trigger a{color:#000}.site-header.with-header .site-trigger .site-nav-trigger{margin:0 auto}.site-header.with-header .site-trigger span,.site-header.with-header .site-trigger span:after,.site-header.with-header .site-trigger span:before{background-color:#252525;height:5px}.site-header.with-header .site-trigger span:before{top:-8px}.site-header.with-header .site-trigger span:after{top:8px}}.default-header .container,.default-header .title,.featured-item,.jumbotron .container,.jumbotron .title{position:relative}.jumbotron{padding:3rem 0;width:100%;background:center #025aa5;background-size:cover}.jumbotron .title{font-size:2.75rem;margin:0;color:#fff}.jumbotron .subtitle{font-size:1.25rem;font-weight:300;margin-bottom:0;margin-top:1rem;color:#fff;line-height:1.5}.jumbotron .btn{margin-top:3rem}@media (min-width:48rem){.jumbotron .subtitle{font-size:1.3rem}}.default-header{width:100%;padding:2rem 0 0}.default-header .title{font-weight:700;color:#000;font-size:2.75rem;margin-top:0;margin-bottom:0}.default-header .subtitle{font-size:1.25rem;font-weight:400;margin-bottom:0;margin-top:1rem;color:rgba(0,0,0,.75);line-height:1.5}.default-header .btn{margin-top:3rem}.default-header .category{margin:0;text-transform:uppercase;font-size:14px}@media (min-width:48rem){.default-header .subtitle{font-size:1.3rem}}.site-footer{padding:1rem;border-top:1px solid #dbdbdb;letter-spacing:1px;background-color:#fff}.site-footer .widget-area-footer{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 -1rem}.entry-item .entry-title a,.entry-related .entry-related-item a,.featured-item a,.pagination,.site-footer .credits{display:block}@media (max-width:48rem){.site-footer .widget-area-footer{-ms-flex-wrap:wrap;flex-wrap:wrap}}.site-footer .widget-area{color:#000;font-size:14px;padding:0}.site-footer .widget-area .widget-title{font-size:16px;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin-bottom:1rem}.site-footer .widget-area .widget{padding:1.25rem;width:100%}.site-footer .widget-area ul li{line-height:1}.site-footer .widget-area ul li a{font-size:14px;color:#000}.site-footer .widget-area p{font-size:14px}.site-footer .widget-area a{color:#000}.site-footer .credits{padding:1rem 0}.site-footer .credits a{color:#000}.site-footer .credits p{font-size:1rem}.entry-item{padding:1rem;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.entry-item .entry-title{margin-top:0;margin-bottom:.25rem;font-size:1.25rem}.entry-item p{margin-bottom:0;font-size:1rem}.entry-item img{width:100%}.entry-item .entry-header{margin:0;clear:both}.entry-item .entry-date{float:left}.entry-item .entry-date p{font-size:14px;color:grey}.entry-item .entry-category{float:right}.entry-item .entry-category a{color:#000}.entry-item .entry-author p{font-size:14px;color:#666;text-transform:uppercase}.entry-item .entry-read-more{display:block;margin-top:10px}@media (min-width:25.875rem){.entry-item{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.column-list{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}}@media (min-width:48rem){.column-half{-ms-flex-preferred-size:50%;flex-basis:50%;max-width:50%}.column-quarter{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}.column-third{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}}.entry-related .entry-title{margin-top:.5rem;color:#000;font-weight:400;line-height:1.1}.featured-item{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.featured-item .featured-wrapper{position:relative;min-height:360px}@media (max-width:48rem){.featured-item .featured-wrapper{max-height:200px;min-height:200px;overflow:hidden}}.featured-item a:after{content:"";background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.9)));background:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.9) 100%);width:100%;height:100%;position:absolute;top:0;left:0;-webkit-transition:all .3s linear;transition:all .3s linear}.featured-item a:hover:after{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,136,204,0)),to(rgba(0,136,204,.6)));background:linear-gradient(to bottom,rgba(0,136,204,0) 0,rgba(0,136,204,.6) 100%);-webkit-transition:all .3s linear;transition:all .3s linear}.featured-item img{border:none;width:100%;height:100%;position:absolute;-o-object-fit:cover;object-fit:cover;-o-object-position:50% 50%;object-position:50% 50%}.featured-item .entry-title{position:absolute;bottom:0;padding:1rem;margin:0;color:#fff;z-index:10;width:100%;font-size:2rem}@media (min-width:48rem){.featured-item{-ms-flex-preferred-size:33.33333333%;flex-basis:33.33333333%;max-width:33.33333333%}.featured-item:first-child,.featured-item:nth-child(3n+1){padding-left:1rem}.featured-item:nth-child(3n){padding-right:1rem}.home .featured-item{margin-top:2rem}}table{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;empty-cells:show;font-size:15px;line-height:24px}table caption{text-align:left;font-size:14px;font-weight:500;color:#676b72}.alert-link,.cookies-btn,.cookies-header,.list ul a.active,.text-bold,label,th{font-weight:700}th{text-align:left;vertical-align:bottom}.badge,.btn,.button,.cookies-btn,.pagination,.social,.text-center{text-align:center}td{vertical-align:middle}td,th{padding:.5rem;border-bottom:1px solid rgba(0,0,0,.05)}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}@media screen and (max-width:48rem){table{overflow-x:auto;display:block}}.list ul{list-style-type:none;padding:.25rem;margin:0}.list ul li{margin-bottom:-1px;padding:.5rem}.alert,.pagination{margin-bottom:1rem}.list ul a{color:#222}.blockquote-primary{border-left-color:#0275d8}.blockquote-secondary{border-left-color:#ff4081}.blockquote-info{border-left-color:#5bc0de}.blockquote-success{border-left-color:#5cb85c}.blockquote-warning{border-left-color:#f0ad4e}.blockquote-danger{border-left-color:#d9534f}.pagination{padding-left:0;margin-top:1rem;border-radius:.25rem}.pagination:after,.pagination:before{content:" ";display:table}.pagination ul,.pagination ul li{display:inline}.pagination li:first-child span{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.pagination li:first-child a,.pagination li:first-child span{border-top-right-radius:0;border-bottom-right-radius:0}.pagination a,.pagination span{position:relative;float:left;padding:.5rem .75rem;line-height:1.5;color:#333;text-decoration:none;background-color:#fff;border:1px solid #ddd;margin-right:5px;font-size:12px;text-transform:uppercase}.pagination a:focus,.pagination a:hover{background-color:#eceeef;border-color:#ddd}.pagination .current,.pagination .current:focus,.pagination .current:hover{z-index:2;cursor:default;background-color:#eceeef}.pagination .next,.pagination .prev{margin-top:0}.alert{padding:.75rem 1.25rem;border:1px solid transparent;border-radius:.25rem}.alert p{margin-bottom:0}.alert strong,.alert-heading{color:inherit}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d0e9c6;color:#3c763d}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faf2cc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebcccc;color:#a94442}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}.badge{display:inline-block;padding:.25em .4em;font-size:.85rem;line-height:1;color:#fff;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:focus,a.badge:hover{color:#fff;cursor:pointer}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{background-color:#636c72}.badge-default[href]:focus,.badge-default[href]:hover{background-color:#4b5257}.badge-primary{background-color:#0275d8}.badge-primary[href]:focus,.badge-primary[href]:hover{background-color:#025aa5}.badge-success{background-color:#5cb85c}.badge-success[href]:focus,.badge-success[href]:hover{background-color:#449d44}.badge-info{background-color:#5bc0de}.badge-info[href]:focus,.badge-info[href]:hover{background-color:#31b0d5}.badge-warning{background-color:#f0ad4e}.badge-warning[href]:focus,.badge-warning[href]:hover{background-color:#ec971f}.badge-danger{background-color:#d9534f}.badge-danger[href]:focus,.badge-danger[href]:hover{background-color:#c9302c}.breadcrumbs{padding-bottom:.75rem;list-style:none;border-radius:.25rem}.breadcrumbs:after{display:block;content:""}.breadcrumbs .item{float:left}.breadcrumbs .item+.item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#636c72;content:"/"}.breadcrumbs .item+.item:hover::before{text-decoration:underline}.breadcrumbs .item.active{color:#636c72}.gallery-masonry.gallery,.masonry{padding:0;-webkit-column-gap:.5em;column-gap:.5em;margin-left:-.5em;margin-right:-.5em;display:block}.gallery-masonry.gallery:after,.gallery-masonry.gallery:before,.masonry:after,.masonry:before{content:" ";display:table}.gallery-masonry.gallery .gallery-item,.gallery-masonry.gallery .item,.masonry .gallery-item,.masonry .item{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;background:#fff;margin:0 0 .5em;width:100%;min-height:84px;max-width:100%}.gallery-masonry.gallery .gallery-item img,.gallery-masonry.gallery .item img,.masonry .gallery-item img,.masonry .item img{width:100%;margin-bottom:0}.gallery-masonry.gallery .gallery-item .gallery-icon,.gallery-masonry.gallery .item .gallery-icon,.masonry .gallery-item .gallery-icon,.masonry .item .gallery-icon{margin-bottom:.5rem}@media only screen and (min-width:25.875rem){.gallery-masonry.gallery,.masonry{-webkit-column-count:2;column-count:2}}@media only screen and (min-width:48rem){.gallery-masonry.gallery,.masonry{-webkit-column-count:3;column-count:3}}.gallery-masonry.gallery .card,.masonry .card{margin-bottom:0}.btn,.button{padding:.75rem 1.25rem;font-size:1rem;margin:.5rem 1rem .5rem 0;display:inline-block;cursor:pointer;color:#333;background-color:#eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;max-width:100%;border:0;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.2),0 1px 3px 0 rgba(0,0,0,.12);box-shadow:0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.2),0 1px 3px 0 rgba(0,0,0,.12)}@media (max-width:48rem){.btn,.button{width:100%;margin:.5rem 0}}.btn:focus,.btn:hover,.button:focus,.button:hover{text-decoration:none;color:#333;background-color:#ccc}.btn.disabled,.btn:disabled,.button.disabled,.button:disabled{cursor:not-allowed;opacity:.65}.btn-primary{color:#fff;background-color:#0275d8}.btn-primary.active,.btn-primary:active,.btn-primary:active:focus,.btn-primary:active:hover,.btn-primary:focus,.btn-primary:hover{background-color:#0267bf;border-color:#0267bf;color:#fff}.btn-outline-primary{color:#0275d8;background-color:transparent;border:1px solid #0275d8}.btn-outline-primary.active,.btn-outline-primary:active,.btn-outline-primary:active:focus,.btn-outline-primary:active:hover,.btn-outline-primary:focus,.btn-outline-primary:hover{color:#fff;background-color:#0275d8}.btn-secondary{color:#fff;background-color:#ff4081}.btn-secondary.active,.btn-secondary:active,.btn-secondary:active:focus,.btn-secondary:active:hover,.btn-secondary:focus,.btn-secondary:hover{background-color:#ff2770;border-color:#ff2770;color:#fff}.btn-outline-secondary{color:#ff4081;background-color:transparent;border:1px solid #ff4081}.btn-outline-secondary.active,.btn-outline-secondary:active,.btn-outline-secondary:active:focus,.btn-outline-secondary:active:hover,.btn-outline-secondary:focus,.btn-outline-secondary:hover{color:#fff;background-color:#ff4081}.btn-success{color:#fff;background-color:#5cb85c}.btn-success.active,.btn-success:active,.btn-success:active:focus,.btn-success:active:hover,.btn-success:focus,.btn-success:hover{background-color:#4cae4c;border-color:#4cae4c;color:#fff}.btn-outline-success{color:#5cb85c;background-color:transparent;border:1px solid #5cb85c}.btn-outline-success.active,.btn-outline-success:active,.btn-outline-success:active:focus,.btn-outline-success:active:hover,.btn-outline-success:focus,.btn-outline-success:hover{color:#fff;background-color:#5cb85c}.btn-info{color:#fff;background-color:#5bc0de}.btn-info.active,.btn-info:active,.btn-info:active:focus,.btn-info:active:hover,.btn-info:focus,.btn-info:hover{background-color:#46b8da;border-color:#46b8da;color:#fff}.btn-outline-info{color:#5bc0de;background-color:transparent;border:1px solid #5bc0de}.btn-outline-info.active,.btn-outline-info:active,.btn-outline-info:active:focus,.btn-outline-info:active:hover,.btn-outline-info:focus,.btn-outline-info:hover{color:#fff;background-color:#5bc0de}.btn-warning{color:#fff;background-color:#f0ad4e}.btn-warning.active,.btn-warning:active,.btn-warning:active:focus,.btn-warning:active:hover,.btn-warning:focus,.btn-warning:hover{background-color:#eea236;border-color:#eea236;color:#fff}.btn-outline-warning{color:#f0ad4e;background-color:transparent;border:1px solid #f0ad4e}.btn-outline-warning.active,.btn-outline-warning:active,.btn-outline-warning:active:focus,.btn-outline-warning:active:hover,.btn-outline-warning:focus,.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e}.btn-danger{color:#fff;background-color:#d9534f}.btn-danger.active,.btn-danger:active,.btn-danger:active:focus,.btn-danger:active:hover,.btn-danger:focus,.btn-danger:hover{background-color:#d43f3a;border-color:#d43f3a;color:#fff}.btn-outline-danger{color:#d9534f;background-color:transparent;border:1px solid #d9534f}.social,.social.social:focus,.social.social:hover{color:#fff}.btn-outline-danger.active,.btn-outline-danger:active,.btn-outline-danger:active:focus,.btn-outline-danger:active:hover,.btn-outline-danger:focus,.btn-outline-danger:hover{color:#fff;background-color:#d9534f}.btn-lg{padding
1:1rem 2rem;font-size:1.5rem}.btn-md{padding:.75rem 1.5rem;font-size:1rem}.btn-sm{padding:.25rem .5rem;font-size:.875rem}.btn-block{display:block;width:100%;max-width:48rem;margin:0 auto}.btn-block+.btn-block{margin-top:.5rem}.search-form{display:-webkit-box;display:-ms-flexbox;display:flex}.btn-search-form{margin:0;height:100%}form{max-width:100%;margin:0 auto;position:relative}.entry-social,.form-group{margin-bottom:1rem}label{display:inline-block;font-size:1rem}input:not([type=submit]):not([type=radio]):not([type=checkbox]):not([type=file]),select,textarea{display:inline-block;width:100%;padding:.75rem;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #eee;box-shadow:inset 0 1px 3px #eee;border-radius:2px;background-color:#fff}input:not([type=submit]):not([type=radio]):not([type=checkbox]):not([type=file]):focus,select:focus,textarea:focus{border-color:#66afe9;outline:0}input:not([type=submit]):not([type=radio]):not([type=checkbox]):focus:valid{border-color:green}input:not([type=submit]):not([type=radio]):not([type=checkbox]):focus:invalid{border-color:red}[readonly],input:not([type=submit]):disabled,select:disabled,textarea:disabled{background-color:#eaeded;opacity:1;cursor:not-allowed}input[type=file]{display:block}textarea{resize:vertical;height:200px}input[type=checkbox]{height:1rem;width:1rem;position:relative;top:3px}input[type=checkbox]+label{font-size:1rem;margin-left:.25rem}.ajax-loader{position:absolute;bottom:0;right:-25px}.entry-social{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.social-count .social-num,.social:before{vertical-align:middle;display:inline-block}.social{background-color:#757575;font-size:1.25rem;padding:.5rem;text-decoration:none;-webkit-transition:background-color .5s;transition:background-color .5s;width:64px;margin-right:4px}.cookies-link,.cookies-revoke:hover,.text-underline{text-decoration:underline}.social:hover{background-color:#424242}.social-round .social{border-radius:50%;max-width:48px;height:48px;margin-right:.25rem}.social-rounded .social{border-radius:15%;margin-right:.25rem}.social:last-child{margin-right:0}.social.social-icon{color:#757575}.social.social-icon,.social.social-icon:hover{background-color:transparent}.social.social-icon:hover{color:#424242}
1@font-face{font-family:FontAwesome;src:url('var(--site-url') '/assets/fonts/fontawesome-webfont.eot');src:url('var(--site-url') '/assets/fonts/fontawesome-webfont.eot?#iefix') format("embedded-opentype"),url('var(--site-url') '/assets./fonts/fontawesome-webfont.woff') format("woff"),url('var(--site-url') '/assets/fonts/fontawesome-webfont.ttf') format("truetype"),url('var(--site-url') '/assets/fonts/fontawesome-webfont.svg') format("svg");font-weight:400;font-style:normal}.social:before{font-family:FontAwesome;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.social-facebook:before{content:"\f09a"}.social-twitter:before{content:"\f099"}.social-telegram:before{content:"\f2c6"}.social-google:before{content:"\f0d5"}.social-email:before{content:"\f003"}.social-pinterest:before{content:"\f0d2"}.social-tumblr:before{content:"\f173"}.social-linkedin:before{content:"\f0e1"}.social-github:before{content:"\f09b"}.social-vk:before{content:"\f189"}.social-instagram:before{content:"\f16d"}.social-amazon:before{content:"\f270"}.social-skype:before{content:"\f17e"}.social-youtube:before{content:"\f167"}.social-vimeo:before{content:"\f27d"}.social-apple:before{content:"\f179"}.social-behance:before{content:"\f1b4"}.social-dribble:before{content:"\f17d"}.social-android:before{content:"\f17b"}.social-whatsapp:before{content:"\f232"}.social-reddit:before{content:"\f1a1"}.social-link:before{content:"\f0c1"}.social-slack:before{content:"\f198"}.social-sticky{top:0;margin-bottom:0;position:fixed;z-index:2000;width:100%}.social-sticky .social{-webkit-transition:padding .1s ease-out;transition:padding .1s ease-out;margin:0;width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1}.social-sticky.social-left,.social-sticky.social-right{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);max-width:60px}.social-sticky.social-left.social-count,.social-sticky.social-right.social-count{max-width:85px}.social-sticky.social-right{right:0}.social-sticky.social-bottom{top:auto;bottom:0}@media (min-width:768px){.social-sticky.social-bottom.social-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.social-sticky.social-bottom.social-center .social{max-width:64px;-webkit-box-flex:0;-ms-flex:none;flex:none}}.social-count{padding-top:20px}.social-count .social{position:relative}.social-count .social-num{color:#fff;font-size:12px;padding-left:.35rem;margin-left:.35rem}.social-count.social-sticky{padding-top:0}@media (max-width:1024px){.entry-social.desktop{display:none}}.social-facebook{background-color:#3B5998}.social-grayscale>.social-facebook{background-color:#757575}.social-facebook:hover{background-color:#2d4373}.social-grayscale>.social-facebook:hover{background-color:#3B5998}.social-facebook.social-icon{color:#3B5998}.social-facebook.social-icon:hover{color:#2d4373}.social-twitter{background-color:#1DA1F2}.social-grayscale>.social-twitter{background-color:#757575}.social-twitter:hover{background-color:#0c85d0}.social-grayscale>.social-twitter:hover{background-color:#1DA1F2}.social-twitter.social-icon{color:#1DA1F2}.social-twitter.social-icon:hover{color:#0c85d0}.social-google{background-color:#EA4335}.social-grayscale>.social-google{background-color:#757575}.social-google:hover{background-color:#d62516}.social-grayscale>.social-google:hover{background-color:#EA4335}.social-google.social-icon{color:#EA4335}.social-google.social-icon:hover{color:#d62516}.social-pinterest{background-color:#BD081C}.social-grayscale>.social-pinterest{background-color:#757575}.social-pinterest:hover{background-color:#8c0615}.social-grayscale>.social-pinterest:hover{background-color:#BD081C}.social-pinterest.social-icon{color:#BD081C}.social-pinterest.social-icon:hover{color:#8c0615}.social-tumblr{background-color:#395773}.social-grayscale>.social-tumblr{background-color:#757575}.social-tumblr:hover{background-color:#283d51}.social-grayscale>.social-tumblr:hover{background-color:#395773}.social-tumblr.social-icon{color:#395773}.social-tumblr.social-icon:hover{color:#283d51}.social-email,.social-grayscale>.social-email{background-color:#757575}.social-email:hover,.social-grayscale>.social-email:hover{background-color:#5b5b5b}.social-email.social-icon{color:#757575}.social-email.social-icon:hover{color:#5b5b5b}.social-vk{background-color:#54769a}.social-grayscale>.social-vk{background-color:#757575}.social-vk:hover{background-color:#425d79}.social-grayscale>.social-vk:hover{background-color:#54769a}.social-vk.social-icon{color:#54769a}.social-vk.social-icon:hover{color:#425d79}.social-linkedin{background-color:#1c87bd}.social-grayscale>.social-linkedin{background-color:#757575}.social-linkedin:hover{background-color:#156791}.social-grayscale>.social-linkedin:hover{background-color:#1c87bd}.social-linkedin.social-icon{color:#1c87bd}.social-linkedin.social-icon:hover{color:#156791}.social-whatsapp{background-color:#34AF23}.social-grayscale>.social-whatsapp{background-color:#757575}.social-whatsapp:hover{background-color:#27851a}.social-grayscale>.social-whatsapp:hover{background-color:#34AF23}.social-whatsapp.social-icon{color:#34AF23}.social-whatsapp.social-icon:hover{color:#27851a}.social-reddit{background-color:#5f99cf}.social-grayscale>.social-reddit{background-color:#757575}.social-reddit:hover{background-color:#3a80c1}.social-grayscale>.social-reddit:hover,.social-reddit2{background-color:#5f99cf}.social-reddit.social-icon{color:#5f99cf}.social-reddit.social-icon:hover{color:#3a80c1}.social-grayscale>.social-reddit2{background-color:#757575}.social-reddit2:hover{background-color:#3a80c1}.social-grayscale>.social-reddit2:hover{background-color:#5f99cf}.social-reddit2.social-icon{color:#5f99cf}.social-reddit2.social-icon:hover{color:#3a80c1}.social-buffer{background-color:#323B43}.social-grayscale>.social-buffer{background-color:#757575}.social-buffer:hover{background-color:#1c2126}.social-grayscale>.social-buffer:hover{background-color:#323B43}.social-buffer.social-icon{color:#323B43}.social-buffer.social-icon:hover{color:#1c2126}.social-telegram{background-color:#08c}@media (min-width:1024px){.entry-social.mobile,.social-telegram,.social-whatsapp{display:none}}.social-grayscale>.social-telegram{background-color:#757575}.social-telegram:hover{background-color:#2d4373}.social-grayscale>.social-telegram:hover{background-color:#08c}.social-telegram.social-icon{color:#08c}.social-telegram.social-icon:hover{color:#2d4373}.cookies-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cookies-window.cookies-invisible{opacity:0}
1.cookies-animate.cookies-revoke{-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cookies-animate.cookies-revoke.cookies-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cookies-animate.cookies-revoke.cookies-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cookies-animate.cookies-revoke.cookies-active.cookies-bottom,.cookies-animate.cookies-revoke.cookies-active.cookies-top,.cookies-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cookies-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}.cookies-revoke,.cookies-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;line-height:1.5em;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:10000000}.cookies-window.cookies-static{position:static}.cookies-window.cookies-floating{padding:2em;max-width:24em;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%}.cookies-window.cookies-banner{padding:1em 1.8em;width:100%;-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.cookies-revoke{padding:.5em}.cookies-header{font-size:18px}.cookies-btn,.cookies-close,.cookies-link,.cookies-revoke{cursor:pointer}.cookies-link{opacity:.8;display:inline-block;padding:.2em}.cookies-link:hover{opacity:1}.cookies-link:active,.cookies-link:visited{color:initial}.cookies-btn{display:block;padding:.4em .8em;font-size:.9em;border-width:2px;border-style:solid}.cookies-highlight .cookies-btn:first-child{background-color:transparent;border-color:transparent}.cookies-highlight .cookies-btn:first-child:focus,.cookies-highlight .cookies-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cookies-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cookies-close:focus,.cookies-close:hover{opacity:1}.cookies-revoke.cookies-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cookies-revoke.cookies-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cookies-revoke.cookies-left{left:3em;right:unset}.cookies-revoke.cookies-right{right:3em;left:unset}.cookies-top{top:1em}.cookies-left{left:1em}.cookies-right{right:1em}.cookies-bottom{bottom:1em}.cookies-floating>.cookies-link{margin-bottom:1em}.cookies-floating .cookies-message{display:block;margin-bottom:1em}.cookies-window.cookies-floating .cookies-compliance{-ms-flex:1;-webkit-box-flex:1;flex:1}.cookies-window.cookies-banner{-ms-flex-align:center;-webkit-box-align:center;align-items:center}.cookies-banner.cookies-top{left:0;right:0;top:0}.cookies-banner.cookies-bottom{left:0;right:0;bottom:0}.cookies-banner .cookies-message{-ms-flex:1;-webkit-box-flex:1;flex:1}.cookies-compliance{display:flex;-ms-flex-align:center;-webkit-box-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cookies-compliance>.cookies-btn{-ms-flex:1;-webkit-box-flex:1;flex:1}.cookies-btn+.cookies-btn{margin-left:.5em}@media print{.cookies-revoke,.cookies-window{display:none}}@media screen and (max-width:900px){.cookies-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cookies-window.cookies-top{top:0}.cookies-window.cookies-bottom{bottom:0}.cookies-window.cookies-banner,.cookies-window.cookies-left,.cookies-window.cookies-right{left:0;right:0}.cookies-window.cookies-banner{-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.cookies-window.cookies-banner .cookies-compliance{-ms-flex:1;-webkit-box-flex:1;flex:1}.cookies-window.cookies-floating{max-width:none}.cookies-window .cookies-message{margin-bottom:1em}.cookies-window.cookies-banner{-ms-flex-align:unset;-webkit-box-align:unset;
1align-items:unset}}.cookies-floating.cookies-theme-classic{padding:1.2em;border-radius:5px}.cookies-floating.cookies-type-info.cookies-theme-classic .cookies-compliance{text-align:center;display:inline;-ms-flex:none;-webkit-box-flex:0;flex:none}.cookies-theme-classic .cookies-btn{border-radius:5px}.cookies-floating.cookies-type-info.cookies-theme-classic .cookies-btn{display:inline-block}.cookies-theme-edgeless.cookies-window{padding:0}.cookies-floating.cookies-theme-edgeless .cookies-message{margin:2em 2em 1.5em}.cookies-banner.cookies-theme-edgeless .cookies-btn{margin:0;padding:.8em 1.8em;height:100%}.cookies-banner.cookies-theme-edgeless .cookies-message{margin-left:1em}.cookies-floating.cookies-theme-edgeless .cookies-btn+.cookies-btn{margin-left:0}.text-left{text-align:left}.text-right{text-align:right}.text-justify{text-align:justify}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-normal{font-weight:400}.text-italic{font-style:italic}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width:64rem){.n-p-h,.n-p-l{padding-left:0}.n-p-h,.n-p-r{padding-right:0}.n-p-t,.n-p-v{padding-top:0}.n-p-b,.n-p-v{padding-bottom:0}.n-m-h,.n-m-l{margin-left:0}.n-m-h,.n-m-r{margin-right:0}.n-m-t,.n-m-v{margin-top:0}.n-m-b,.n-m-v{margin-bottom:0}.n-p{padding:0}.n-m{margin:0}}.sticky{position:-webkit-sticky;position:sticky;top:2rem}.float-left,.float-right{float:right}.float-none{float:none}.clearfix:after,.clearfix:before{content:" ";display:table}.max-w-300{max-width:300px}.max-w-480{max-width:480px}.max-w-640{max-width:640px}.screen-reader-text{clip:rect(1px,1px,1px,1px);position:absolute!important;height:1px;width:1px;overflow:hidden}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto!important;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#content-wrapper,.widget-area{background-color:#fff}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter,.bypostauthor,.header-image a,.sticky,.widget-area .post-date,.widget-recent-posts a{display:block}.aligncenter{margin-left:auto;margin-right:auto}.header-image{padding:2rem;text-align:center;border-bottom:1px solid #dbdbdb}.site-main{padding-bottom:2rem}#content-wrapper{padding:1rem}@media (max-width:48rem){.home #content-wrapper{padding-top:0}}.error404 .widget{width:100%;max-width:100%;padding:0 1rem}@media (min-width:48rem){.gallery-masonry.gallery.gallery-columns-2{-webkit-column-count:2;column-count:2}.gallery-masonry.gallery.gallery-columns-3{-webkit-column-count:3;column-count:3}.gallery-masonry.gallery.gallery-columns-4{-webkit-column-count:4;column-count:4}.gallery-masonry.gallery.gallery-columns-5{-webkit-column-count:5;column-count:5}.gallery-masonry.gallery.gallery-columns-6{-webkit-column-count:6;column-count:6}.gallery-masonry.gallery.gallery-columns-7{-webkit-column-count:7;column-count:7}.gallery-masonry.gallery.gallery-columns-8{-webkit-column-count:8;column-count:8}.gallery-masonry.gallery.gallery-columns-9{-webkit-column-count:9;column-count:9}.error404 .site-main .widget{max-width:33.33%;padding:1.5rem}.error404 .site-main .widget_text{max-width:50%}}.entry-content{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.post-thumbnail{margin-bottom:2rem;text-align:center}@media (max-width:48rem){.post-thumbnail{margin:0 -1rem 2rem}}.no-sidebar .entry-content{-ms-flex-preferred-size:100%;flex-basis:100%;max-width:100%}.entry-header .wp-post-image{width:100%;margin-bottom:.5rem;border:1px solid #eee}.entry-content,.entry-footer{max-width:100%;position:relative}.home-shop-section{margin:1rem 0}.home-shop-section .products{margin-bottom:3rem}.widget-area,.widget-area .widget{margin-bottom:1rem;width:100%}.home .entry-content{margin-top:0}.home-section{padding:2rem 1rem}@media (min-width:48rem){.widget-area{padding:0 1.5rem 1.5rem}.widget-area .widget{margin-bottom:3rem;padding:0 1rem}}.widget-area .widget ol,.widget-area .widget ul{list-style-type:none;padding:0}.widget-area .widget img{width:100%;margin-bottom:.25rem}.widget-area .widget-title{text-transform:uppercase;font-size:1rem;margin-top:0}.widget-area p{margin-bottom:0;font-size:14px}.entry-content .widget,.entry-content .widget-area{padding:0}.widget-recent-posts .widget-recent-posts-item{margin-bottom:2rem}.widget-recent-posts img{margin-bottom:.75rem}.widget-recent-posts p{color:#000;font-size:1.25rem;line-height:1.2}.site-footer .widget-recent-posts .widget-recent-posts-item{margin-bottom:1rem}.comments-area{margin-top:15px}.comments-area h3{margin-top:0}.comment-list{list-style:none;padding:0}.child-comments{margin-left:2rem;margin-top:2rem}.comments-area .comment-reply-title,.comments-area .comments-title{font-size:2rem;margin:2rem 0}.comment-respond{padding:1rem 0}.comment{padding-left:3rem}.comment.depth-1{padding-left:0}.comment-list .comment-body,.comment-list .pingback,.comment-list .trackback{border-top:1px solid #d1d1d1;padding:1.75em 1rem}.comment-list .children{list-style:none;margin:0}.comment-list .children>li{padding-left:.875em}.comment-author{color:#5b5b5b;margin-bottom:2rem;display:inline-block}.comment-author cite{font-size:1.3rem}.comment-author cite a{color:#000}.comment-meta{display:inline-block;text-align:right;float:right;font-size:12px}.banner,.banner .center,.gallery .gallery-item,.wp-caption-text{text-align:center}.comment-meta a{color:#666}.comment-author .avatar{float:left;height:28px;margin-right:.875em;position:relative;width:28px}.comment-body{padding-top:1rem}.comment-body p{font-size:1rem}
1.comment-reply-link{border:1px solid #d1d1d1;color:#3e3e3e;border-radius:2px;display:inline-block;font-size:.85rem;margin-top:1rem;padding:.5rem}.comment-reply-link:focus,.comment-reply-link:hover{border-color:currentColor;outline:0}.comment-form label{color:#5b5b5b;display:block;font-size:13px;font-size:.8125rem;letter-spacing:.076923077em;line-height:1.6153846154;margin-bottom:.5384615385em;text-transform:uppercase}.comment-list .comment-form{padding-bottom:1.75em}.comment-awaiting-moderation,.comment-notes,.form-allowed-tags,.logged-in-as{color:#5b5b5b;font-size:13px;font-size:.8125rem;line-height:1.6153846154}.no-comments{border-top:1px solid #d1d1d1;font-weight:700;margin:0;padding-top:1.75em}.comment-navigation+.no-comments{border-top:0;padding-top:0}.form-allowed-tags code{font-family:Inconsolata,monospace}.form-submit{margin-bottom:0}.comment-reply-title small{font-size:100%}.comment-reply-title small a{border:0;float:right;height:32px;overflow:hidden;width:26px}.comment-reply-title small a:focus,.comment-reply-title small a:hover{color:#5b5b5b}.comment-reply-title small a:before{content:"\f405";font-size:32px;position:relative;top:-5px}.gallery{margin:1rem -.5rem;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.gallery .gallery-item{vertical-align:top;width:100%;padding:.5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0}.gallery a{text-decoration:none;display:block}.gallery h3{font-size:1rem;text-transform:uppercase;margin:0;font-weight:700}.gallery p{margin-bottom:0}.gallery .gallery-caption{display:block;margin:.5rem 0}.gallery .gallery-icon{width:100%}.gallery .gallery-icon img{width:100%;margin:0}@media (min-width:36rem){.gallery-item{max-width:50%}}@media (min-width:48rem){.gallery-columns-2 .gallery-item{max-width:50%}.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery-columns-4 .gallery-item{max-width:25%}.gallery-columns-5 .gallery-item{max-width:20%}.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery-columns-9 .gallery-item{max-width:11.11%}}.wp-caption{margin-bottom:1.5em;max-width:100%;position:relative}.wp-caption img[class*=wp-image-]{display:block;margin-left:auto;margin-right:auto;margin-bottom:0}.wp-caption .wp-caption-text{position:relative;bottom:0;left:0;margin:0!important;padding:10px 20px;color:#fff;white-space:pre-wrap;text-shadow:1px 1px 4px #000;text-transform:none;background:#333}.gallery-wrapper{background:#f3f3f4;padding:3rem;height:100%;width:100%;border-radius:4px}.jumbotron .wpcf7{padding:2rem;background-color:rgba(0,0,0,.5);border-radius:4px;position:relative;margin:0 auto}.jumbotron .wpcf7 .ajax-loader{position:absolute;top:0}div.wpcf7-response-output,span.wpcf7-not-valid-tip{font-size:12px}.widget-area .wpcf7-form p{margin-bottom:1rem}.no-sidebar .alignfull,.no-sidebar .has-background-dim{margin-bottom:3rem;text-align:center;width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw}.banner,.no-sidebar .alignfull img{width:100%}.banner{max-width:100%;margin:1rem auto 25px;padding:0;display:block}.banner .center,.banner>div{margin:0 auto}.banner .right{text-align:right;margin-right:0}.banner .left{text-align:left;margin-left:0}.banner .small{width:300px}.banner .medium{width:336px}.banner .large{width:360px}.banner .half-page,.banner .mobile-medium{width:300px}.banner .leaderboard{width:728px;max-width:100%}.banner .fluid{width:100%}@media (max-width:48rem){.desktop{display:none}}@media (min-width:48rem){.mobile{display:none}}</style><meta name="description" content="Si estas buscando una guía de composer... ➤ ➤ en este artículo te explicamos todo lo que necesitas para empezar a integrarlo en tus proyectos."> <link rel="canonical" href="https://free-time-katas.github.io/guia-composer.html"><meta property="og:locale" content="es_ES"> <meta property="og:type" content="website"> <meta property="og:title" content="▷ Guía de composer en español | Si eres programador PHP lee esto"> <meta property="og:description" content="Si estas buscando una guía de composer... ➤ ➤ en este artículo te explicamos todo lo que necesitas para empezar a integrarlo en tus proyectos."> <meta property="og:url" content="https://free-time-katas.github.io/guia-composer.html"> <meta property="og:site_name" content="Free Time Katas"> <meta property="og:image" content="https://free-time-katas.github.io/img/guia-composer.jpeg"> <meta property="og:image:secure_url" content="https://free-time-katas.github.io/img/guia-composer.jpeg"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:description" content="Si estas buscando una guía de composer... ➤ ➤ en este artículo te explicamos todo lo que necesitas para empezar a integrarlo en tus proyectos."> <meta name="twitter:title" content="▷ Guía de composer en español | Si eres programador PHP lee esto"> <meta name="twitter:image" content="https://free-time-katas.github.io/img/guia-composer.jpeg,Guía de Composer">
1<script>!function(e,t,a,n,g){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var m=t.getElementsByTagName(a)[0],r=t.createElement(a);r.async=!0,r.src="https://www.googletagmanager.com/gtm.js?id=GTM-MW9CDXX",m.parentNode.insertBefore(r,m)}(window,document,"script","dataLayer");</script>
1 </head><body class="home home page-template-default page aawp-custom no-sidebar">
vendor: 68 bytes, line 1
1 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1GTM-MW9CDXX
vendor: 82 bytes, line 1
1" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1<header class="site-header with-header"> <div class="container"> <div class="site-logo"> <a href="https://free-time-katas.github.io">Free Time Katas</a> </div><nav class="site-navbar site-navbar-right"> <ul> <li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children"> <a href="https://free-time-katas.github.io#">Artículos</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item"> <a href="https://free-time-katas.github.io/guia-flexbox.html">Guia Flexbox</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item"> <a href="https://free-time-katas.github.io/guia-composer.html">Guia Composer</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item"> <a href="https://free-time-katas.github.io/bootstrap-4-beta.html">Bootstrap 4</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item"> <a href="https://free-time-katas.github.io/rich-snippet/">Rich Snippet</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item"> <a href="https://free-time-katas.github.io/git/">Guia Git</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-post current-menu-item"> <a href="https://free-time-katas.github.io/rich-snippet/para-wordpress.html">Rich Snippet Wordpress</a> </li> </ul> </li> </ul> </nav> <div class="site-trigger"> <a class="site-nav-trigger"> <span></span> </a> </div></div> </header><main id="content" class="site-main"> <header class="default-header"> <div class="container"> <h1 class="title">Guía de composer en español</h1> </div> </header> <div id="content-wrapper" class="container flex"> <div class="entry-content"> <div class="post-thumbnail"> <img src="https://free-time-katas.github.io/img/guia-composer.jpeg" alt="Guía de Composer"/> </div> <p>En el año 2017 no concibo ningún proyecto sin un <strong>gestor de dependencias</strong>, da igual la tecnología que uses. Para Java tenemos Maven, para android Gradle, para js NPM, para php Composer, etc.</p> <p>Un gestor de dependencias te da la facilidad de poder descargar paquetes a tus proyectos y el solo va controlando las versiones de los mismos. Ya se queda muy atrás eso de descargar un zip e introducir mil ficheros dentro de nuestros proyectos.</p> <p>Otras de las ventajas es el trabajo en el equipo, todos trabajan con la misma versión de las dependencias que pueda tener nuestros proyectos. Nos olvidamos de que cada miembro del equipo trabaje con versiones distintas de un mismo paquete.</p> <p>Dicho todo esto vamos a ver lo fácil que es trabajar con composer en php.</p> <h2 id="qué-es-composer">¿Qué es composer?</h2> <p>Como he dicho antes composer es un gestor de dependencias para php. Con el podemos descargar desde librerías que alguien de la comunidad ha hecho y nos vienen fenomenal, hasta instalar framework enteros como es el caso de yii, laravel, doctrine, symfony, etc. Lo bueno es que hacer esto se tarda minutos en hacer y es automático.</p> <h2 id="cómo-instalar-composer">¿Cómo instalar composer?</h2> <p>La instalación de composer ha mejorado mucho en los últimos tiempo y ahora es super sencillo instalarlo. Para ello lo que hacemos es ejecutar los siguientes comandos:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
3php composer-setup.php
4php -r "unlink('composer-setup.php');"
5</code></pre></div></div> <p>Es generará un <strong>composer.phar</strong> en el directorio que estemos. No esta nada mal que cada proyecto tenga su <strong>composer.phar</strong> pero, yo prefiero instalarlo globalmente en mi máquina. Para tenerlo de forma global en mac lo que hago es sustituir la tercera línea del comando anterior añadiendole algunos parámetros.</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>php composer-setup.php --filename=composer --install-dir=/usr/local/bin/
6</code></pre></div></div> <p>El comando entero quedaría:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
7php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
8php composer-setup.php --filename=composer --install-dir=/usr/local/bin/
9php -r "unlink('composer-setup.php');"
10</code></pre></div></div> <p>Hecho esto desde cualquier directorio puedes ejecutar:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>composer
11</code></pre></div></div> <p>Y ya puedo ver si la instalación se ha realizado correctamente.</p> <h2 id="cómo-usar-composer">¿Cómo usar composer?</h2> <p>Si el proyecto es nuevo tenemos dos opciones:</p> <ol> <li>Crear el fichero de configuración a mano.</li> <li>Ejecutar “composer init”</li> </ol> <p>Aquí vamos usar la ley del mínimo esfuerzo y estando en el directorio donde va a estar nuestro proyecto, vamos a ejecutar:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>composer init
12</code></pre></div></div> <p>Lo primero que nos pregutanrá es el nombre del paquete:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Package name (&lt;vendor&gt;/&lt;name&gt;) [daviddiaz/test]: diazdavid-info/test
13</code></pre></div></div> <p>Yo suelo poner mi (nombre de usuario de github/nombre del proyecto)</p> <p>Después nos pide una descripción del proyecto:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Description []: Proyecto de prueba
14</code></pre></div></div> <p>Si no tenemos muy claro la descripción podemos dejarlo en blanco y después rellenarlo.</p> <p>Lo siguiente es un dato importante y es el autor de proyecto:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Author [David Díaz &lt;[email protected]&gt;, n to skip]: David Diaz &lt;[email protected]&gt;
15</code></pre></div></div> <p>A continuación nos pregunta cual es la estabilidad mínima que puede tener una depen
15dencia dentro de tu proyecto. Esto es importante para que todas las dependencias de nuestro proyecto sean estables o por el contrario permitimos dependencias que aún están en desarrollo. Yo es este caso prefiero que todas las dependencias de mis proyecto sean estables.</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Minimum Stability []: stable 
16</code></pre></div></div> <p>Las opciones posibles son: dev, alpha, beta, RC y stable.</p> <p>La siguiente pregunta es el tipo de proyecto estamos creando. Normalmente yo pongo project:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Package Type (e.g. library, project, metapackage, composer-plugin) []: project
17</code></pre></div></div> <p>Lo siguiente es el tipo de licencia y esto ya es un mundo. Normalmente yo lo dejo en blanco para no complicarme mucho.</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>License []:
18</code></pre></div></div> <p>Ahora viene una parte importante que es indicarle a composer cuales van a ser nuestras dependencias. Normalmente yo no las instalo por el asistente a nos ser que ya sepa cuales van a ser mis dependencias. Vamos a suponer que queremos Doctrine:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Would you like to define your dependencies (require) interactively [yes]? yes
19
20Search for a package: doctrine/orm 
21
22Enter the version constraint to require (or leave blank to use the latest version):
23
24Using version ^2.5 for doctrine/orm
25</code></pre></div></div> <p>Esto descarga la última versión de doctrine. Da la casualidad que yo me sabía el nombre completo de Doctrine pero podíamos haber buscado solo poniendo Doctrine y nos mostraría:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Found 15 packages matching Doctrine
26
27   [0] kdyby/doctrine
28   [1] portphp/doctrine
29   [2] etten/doctrine
30   [3] erdiko/doctrine
31   [4] kappa/doctrine
32   [5] huttopia/doctrine
33   [6] xi/doctrine
34   [7] zucchi/doctrine
35   [8] nnx/doctrine
36   [9] webdevbr/doctrine
37  [10] instante/doctrine
38  [11] lexpress/doctrine1
39  [12] drak/doctrine1
40  [13] doctrine/doctrine1
41  [14] sabaki-dev/doctrine1
42
43Enter package # to add, or the complete package name if it is not listed:
44</code></pre></div></div> <p>Pero en el caso de doctrine no esta en paquete que queremos. Más adelante os mostraré una forma más sencilla de buscar paquetes.</p> <p>Después nos pregunta las dependencias que queremos pero para desarrollo. Casi siempre usamos paquetes para desarrollo como puede ser phpUnit y paquetes para producción como puede ser Doctrine. Por este motivo Composer lo divide en dos. En esta ocasión yo le digo que no y más adelante decidiré:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Would you like to define your dev dependencies (require-dev) interactively [yes]? no
45</code></pre></div></div> <p>Ya hemos llegado al final y nos pide confirmación:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
46    "name": "diazdavid-info/test",
47    "description": "Proyecto de prueba",
48    "type": "project",
49    "require": {
50        "doctrine/orm": "^2.5"
51    },
52    "authors": [
53        {
54            "name": "David Diaz",
55            "email": "[email protected]"
56        }
57    ],
58    "minimum-stability": "stable"
59}
60
61Do you confirm generation [yes]? yes
62</code></pre></div></div> <p>Esto generará un fichero composer.json que veremos más adelante para que sirve.</p> <p>Solo nos queda ejecutar:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>composer update
63</code></pre></div></div> <p>Este comando descarga todas las dependencias dentro de un directorio que se llama vendor.</p> <h2 id="cómo-añadir-paquetes-a-composer">¿Cómo añadir paquetes a composer?</h2> <p>Como hemos visto en el punto anterior podemos instalar paquetes con la ayuda del asistente pero ¿que pasa cuando necesitamos más paquetes? La respuesta es muy fácil, nos vamos a <a href="https://packagist.org/" target="_blank">packagist.org</a> que es una web muy famosa y que recoge muchos paquetes de composer. En ella buscamos lo que queremos y nos quedamos con el nombre del paquete. Ahora nos vamos a la consola y ejecutamos:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>composer require symfony/console
64</code></pre></div></div> <p>Esto automáticamente nos añadirá el paquete a nuestras dependencias.</p> <p>Si queremos añadir un paquete de desarrollo, por ejemplo phpUnit, ejecutaremos;</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>composer require --dev phpunit/phpunit
65</code></pre></div></div> <p>Así de fácil añadimos dependencias a nuestros proyectos.</p> <h2 id="para-que-sirve-el-composerjson">¿Para que sirve el composer.json?</h2> <p>Este fichero contiene toda la configuración de nuestras dependencias, un ejemplo es el siguiente:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
66    "name": "diazdavid-info/test",
67    "description": "Proyecto de prueba",
68    "type": "project",
69    "authors": [
70        {
71            "name": "David Diaz",
72            "email": "[email protected]"
73        }
74    ],
75    "minimum-stability": "stable",
76    "require": {
77        "doctrine/orm": "^2.5"
78    },
79    "require-dev": {
80        "phpunit/phpunit": "^6.3"
81    }
82}
83</code></pre></div></div> <p>Las partes más importantes son:</p> <ol> <li><strong>require</strong> que indica las dependencias de producción</li> <li><strong>
83require-dev</strong> que indica las dependencias de desarrollo</li> </ol> <p>Las demás partes son configuraciones propias del proyecto.</p> <h2 id="para-que-sirve-el-composerlock">¿Para que sirve el composer.lock?</h2> <p>Este fichero lo que almacena es la versión exacta de las dependencias que estamos usando. Esto hace que cuando subimos el código a producción o otro compañero se lo descarga, composer descarga la versión que le indique este fichero. Hay que tener cuidado porque solo se descarga la versión indicada por este fichero si ejecutamos composer intall si por el contrario ejecutamos composer update, composer omitirá este fichero y descarga la última versión de todas nuestras dependencias.</p> <h2 id="cómo-actualizar-composer">¿Cómo actualizar composer?</h2> <p>En ocasiones necesitamos actualizar composer de versión, para ello ejecutamos:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>composer self update
84</code></pre></div></div> <p>Este comando actualizará la versión de composer</p> <h2 id="preguntas-comunes-de-composer">Preguntas comunes de composer</h2> <h3 id="diferencia-entre-composer-install-y-composer-update">Diferencia entre composer install y composer update</h3> <p><strong>Composer install</strong> descarga todas las dependencias pero, teniendo en cuenta la versión que ha sido almacenado en el fichero composer.lock <strong>Composer update</strong> descarga todas las dependencias con la última versión disponible.</p> <h3 id="descargar-repositorios-privados">Descargar repositorios privados</h3> <p>En alguna ocasión podemos querer descargar alguna dependencia de algún repositorio privado y para ello tenemos que editar el fichero composer.json y añadir:</p> <ol> <li>Url del repositorio privado.</li> <li>Paquete que queremos descargas con su versión</li> </ol> <p>Un ejemplo de composer.json con repositorio privado es el siguiente:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
85    "name": "diazdavid-info/test",
86    "description": "Proyecto de prueba",
87    "type": "project",
88    "authors": [
89        {
90            "name": "David Diaz",
91            "email": "[email protected]"
92        }
93    ],
94    "minimum-stability": "stable",
95    "require": {
96        "repositorio/privado": "^2.5"
97    },
98    "repositories": [
99        {
100            "url": "[email protected]:repositorio-privado.git",
101            "type": "vcs"
102        }
103      ]
104}
105</code></pre></div></div> <p>Y con esto ya podemos ejecutar “composer update” y comprobar si todo esta correcto.</p> </div> </div> </main><footer class="site-footer"> <div class="container"> <div class="widget-area-footer"> <div class="widget-area"><section class="widget widget_nav_menu"> <div class="menu-bottom-container"> <ul id="menu-bottom" class="menu"> <li class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://free-time-katas.github.io">Políticas de Privacidad</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://free-time-katas.github.io">Política de Cookies</a> </li> <li class="menu-item menu-item-type-post_type menu-item-object-page"> <a href="https://free-time-katas.github.io">Contacto</a> </li> </ul> </div> </section></div> </div> <div class="credits row"> <p>Amantes del desarrolo web</p> </div> </div> </footer><div class="site-overlay"></div><div id="cookies-wrapper"></div> 
105<script>window.addEventListener("load",function(){window.cookieconsent.initialise({container:document.getElementById("cookies-wrapper"),palette:{popup:{background:"#edeff5",text:"#838391"},button:{background:"#4b81e8"}},content:{message:"Usamos Cookies",dismiss:"OK!",link:"Leer más",href:"https://free-time-katas.github.io#"}})});</script>
105<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
105 
105<script type="text/javascript" src="https://free-time-katas.github.io/assets/js/cookies.js"></script>
105 
105<script type="text/javascript" src="https://free-time-katas.github.io/assets/js/social.min.js"></script>
105 
105<script type="text/javascript" src="https://free-time-katas.github.io/assets/js/main.js"></script>
105</body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.