﻿@import"https://fonts.googleapis.com/css?family=Droid+Sans+Mono:400,700";@import"https://fonts.googleapis.com/css?family=Droid+Sans+Mono:400,700";body{font-size:.875rem;color:#212529}table{margin-bottom:1.25em}ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}a{color:#007bff}h1{color:#212529}h2{color:#212529;margin-top:1em;margin-bottom:1em;border-bottom:1px solid #aaa;padding-bottom:.5rem}h3{color:#212529;margin-top:1rem;margin-bottom:1em;border-bottom:1px solid #ddd;padding-bottom:.3rem}h4{color:#212529;margin-top:2em;margin-bottom:1em}h5{color:#212529;margin-top:2em;margin-bottom:1em}h6{color:#212529;margin-top:2em;margin-bottom:1em}img{max-width:100%}#homepage-title{border-bottom:0;padding:240px 0 0;height:0;background-image:url(/application-design-patterns/images/homepage_title_applicatoin_design_patterns.svg),url(/application-design-patterns/images/homepage_title_bg.jpg);background-repeat:no-repeat;background-size:280px,cover;background-position:50%;text-indent:-150vw}@media(max-width: 400px){#homepage-title{background-size:80%,cover;padding-top:62%}}.navbar{background-color:#fff !important}.navbar .navbar-brand{padding:.75rem;font-size:1rem;color:#315999;display:block;width:auto;flex:unset;max-width:100%}.navbar .navbar-brand img{display:block;height:25px}.navbar .form-control{padding:.75rem 1rem;border-width:0;border-radius:0}.navbar .form-control-dark{color:#212529;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.1)}.navbar .form-control-dark:focus{border-color:transparent;box-shadow:0 0 0 3px rgba(255,255,255,.25)}@media(max-width: 575px){.navbar .navbar-brand{width:100%}}.sidebar{background-color:#f9f9fa !important;position:fixed;top:0;bottom:0;left:0;z-index:100;padding:48px 0 0;box-shadow:inset -1px 0 0 rgba(0,0,0,.1)}.sidebar .sidebar-sticky{position:relative;top:0;height:calc(100vh - 48px);padding-top:.5rem;overflow-x:hidden;overflow-y:auto}@supports(position: -webkit-sticky) or (position: sticky){.sidebar .sidebar-sticky{position:-webkit-sticky;position:sticky}}.sidebar .nav-link{font-weight:500 !important;color:#333 !important;position:relative;left:0}.sidebar .nav-link .feather{position:absolute;top:0;width:16px;height:16px;vertical-align:text-bottom}.sidebar .nav-link.active,.sidebar .nav-link.active:focus,.sidebar .nav-link.active:hover{color:#007bff !important;border-left:2px solid #007bff !important}.sidebar:hover .feather,.sidebar .nav-link.active .feather{color:inherit}.sidebar-heading{font-size:.75rem;text-transform:uppercase}nav[data-toggle=toc] .nav>li>a:hover{color:#007bff !important;border-left:1px solid #007bff}nav[data-toggle=toc] .nav>li>a{padding-left:3em !important}nav[data-toggle=toc] .nav>li>a .feather{left:1.4em;top:4px}nav[data-toggle=toc] .nav>li>a:hover{padding-left:calc(3em - 1px) !important}nav[data-toggle=toc] .nav>li>a:hover .feather{left:calc(1.4em - 1px);top:1px}nav[data-toggle=toc] .nav>li>a.active{padding-left:calc(3em - 2px) !important}nav[data-toggle=toc] .nav>li>a.active .feather{left:calc(1.4em - 2px)}nav[data-toggle=toc] .nav>li>.nav>li>a{padding-left:4em !important}nav[data-toggle=toc] .nav>li>.nav>li>a .feather{left:2.4em;top:0px}nav[data-toggle=toc] .nav>li>.nav>li>a:hover{padding-left:calc(4em - 1px) !important}nav[data-toggle=toc] .nav>li>.nav>li>a:hover .feather{left:calc(2.4em - 1px)}nav[data-toggle=toc] .nav>li>.nav>li>a.active{padding-left:calc(4em - 2px) !important}nav[data-toggle=toc] .nav>li>.nav>li>a.active .feather{left:calc(2.4em - 2px);top:1px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>a{padding-left:5em !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>a .feather{left:3.4em;top:0px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>a:hover{padding-left:calc(5em - 1px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>a:hover .feather{left:calc(3.4em - 1px)}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>a.active{padding-left:calc(5em - 2px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>a.active .feather{left:calc(3.4em - 2px);top:1px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>a{padding-left:6em !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>a .feather{left:4.4em;top:0px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>a:hover{padding-left:calc(6em - 1px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>a:hover .feather{left:calc(4.4em - 1px)}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>a.active{padding-left:calc(6em - 2px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>a.active .feather{left:calc(4.4em - 2px);top:1px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a{padding-left:7em !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a .feather{left:5.4em;top:0px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a:hover{padding-left:calc(7em - 1px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a:hover .feather{left:calc(5.4em - 1px)}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a.active{padding-left:calc(7em - 2px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a.active .feather{left:calc(5.4em - 2px);top:1px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a{padding-left:8em !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a .feather{left:6.4em;top:0px}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a:hover{padding-left:calc(8em - 1px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a:hover .feather{left:calc(6.4em - 1px)}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a.active{padding-left:calc(8em - 2px) !important}nav[data-toggle=toc] .nav>li>.nav>li>.nav>li>.nav>li>.nav>li>.nav>li>a.active .feather{left:calc(6.4em - 2px);top:1px}[role=main]{padding-top:133px}@media(min-width: 768px){[role=main]{padding-top:48px}}#main{min-height:calc(100vh - 56px);padding-bottom:2rem;padding-right:calc(1.5rem + 80px) !important}@media(max-width: 575px){#main{padding-right:1.5rem !important}}#main nav{margin-top:1rem}#main .sect1:not(:last-child){margin-bottom:2rem}#main .sect1 .sect2{margin-top:2rem;padding-top:1rem}#main .sect1 .sect2 .sect3:not(:last-child){margin-bottom:1.5rem}#main .sect1 .sect2 .sect3 .sect4:not(:last-child){margin-bottom:1.2rem}#main h1>a,h2>a,h3>a,#toctitle>a,.sidebarblock>.content>.title>a,h4>a,h5>a,h6>a{color:#007bff}#main h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none !important;visibility:hidden;text-align:center;font-weight:normal}#main h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"§";font-size:.85em;display:block;padding-top:.1em}#main h1:hover>a.anchor,h2:hover>a.anchor,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h4:hover>a.anchor,h5:hover>a.anchor,h6:hover>a.anchor{visibility:visible}#main h1>a.anchor:hover,h2>a.anchor:hover,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4>a.anchor:hover,h5>a.anchor:hover,h6>a.anchor:hover{visibility:visible}#main h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}#main h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}code,pre{font-family:"Droid Sans Mono","DM Mono",Lucida Console,Courier,monospace;font-weight:normal;font-size:1em}pre{color:rgba(0,0,0,.8)}pre.highlight{background-color:#f5f5f5;border-radius:.5em;padding:5px}.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:1em}.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}.literalblock pre,.listingblock pre[class=highlight],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay{background-color:#f7f7f8}.listingblock a.view-result{float:right;font-weight:normal;text-decoration:none;font-size:.9em;line-height:1.4;margin-top:.15em}.table .pseudo-header{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}.admonitionblock>table td.icon{text-align:center;width:80px;padding:1rem 0}.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}.admonitionblock td.icon .icon-note:before{content:"";color:#19407c}.admonitionblock td.icon .icon-tip:before{content:"";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}.admonitionblock td.icon .icon-important:before{content:"";color:#bf0000}.admonitionblock td.icon .icon-warning:before{content:"";color:#bf6900}.admonitionblock td.icon .icon-caution:before{content:"";color:#bf3400}.admonitionblock>table td.content{padding:1em 1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}.admonitionblock>table td.content .paragraph p:last-of-type{margin-bottom:0}.admonitionblock>table td.content ol{margin-bottom:0}.admonitionblock>table td.content ol li:last-of-type p:last-of-type{margin-bottom:0}pre .conum[data-value]{position:relative;top:-0.125em}pre .conum[data-value]::after{content:attr(data-value)}pre .conum[data-value]+b{display:none}.hdlist>table,.colist>table{border:0;background:none}.hdlist>table th,.hdlist>table td,.colist>table th,.colist>table td{border:0}.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}.colist td:not([class]):last-child{padding:.25em 0}.conum[data-value]{display:inline-block;color:#fff !important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;width:1.67em;height:1.67em;font-size:.75em;line-height:1.67em;font-family:"Open Sans","Sans",sans-serif;font-style:normal;font-weight:bold}.conum[data-value]::after{content:attr(data-value)}.conum[data-value]+b{display:none}.footer{background-color:#f5f5f5;position:relative;width:100%;margin-left:auto}span.white{color:#fff}span.silver{color:silver}span.gray{color:gray}span.black{color:#000}span.red{color:red}span.maroon{color:maroon}span.yellow{color:#ff0}span.olive{color:olive}span.lime{color:lime}span.green{color:green}span.aqua{color:aqua}span.teal{color:teal}span.blue{color:blue}span.navy{color:navy}span.fuchsia{color:#f0f}span.purple{color:purple}@media(min-width: 768px){footer{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}}@media(min-width: 992px){footer{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}}.floatingmenu{position:fixed;z-index:9999;box-shadow:0 3px 6px rgba(0,0,0,.16);background-color:#fff;overflow:hidden}@media(min-width: 576px){.floatingmenu{right:0;top:50%;transform:translateY(-50%);border-top-left-radius:15px;border-bottom-left-radius:15px}}@media(max-width: 575px){.floatingmenu{width:96%;display:flex;border-top-left-radius:15px;border-top-right-radius:15px;left:50%;transform:translateX(-50%);bottom:0;max-width:300px;display:none !important}}.floatingmenu .floatingmenu_logo{display:block;background-color:#e6e6e6;padding:10px}@media(max-width: 575px){.floatingmenu .floatingmenu_logo{display:flex;justify-content:center;align-items:center;width:20%}}.floatingmenu .floatingmenu_logo img{display:block;width:100%}.floatingmenu .floatingmenu_list{list-style:none;padding:15px 10px;margin:0}@media(max-width: 575px){.floatingmenu .floatingmenu_list{display:flex;justify-content:center;width:80%;padding:3%}}@media(max-width: 575px){.floatingmenu .floatingmenu_list_child{width:25%;padding:1% 1% 0}}@media(min-width: 576px){.floatingmenu .floatingmenu_list_child:not(:first-child){margin-top:10px}}.floatingmenu .floatingmenu_list_child a:hover .floatingmenu_list_child_img::before{opacity:1}.floatingmenu .floatingmenu_list_child_img{display:flex;align-items:center;justify-content:center;width:65px;height:65px;background:linear-gradient(to bottom, #649BB3, #405583);border-radius:17px;position:relative;overflow:hidden;padding:14%}@media(max-width: 575px){.floatingmenu .floatingmenu_list_child_img{width:100%;height:0;padding-top:100%;position:relative;border-radius:8px}}.floatingmenu .floatingmenu_list_child_img::before{content:"";transition:.3s;opacity:0;position:absolute;z-index:1;top:0;left:0;right:0;bottom:0;background:linear-gradient(to bottom, #c5b3e8, #c5b3e8)}.floatingmenu .floatingmenu_list_child_img img{position:relative;z-index:2}@media(max-width: 575px){.floatingmenu .floatingmenu_list_child_img img{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:80%}}.floatingmenu .floatingmenu_list_child_text{display:flex;justify-content:center;font-size:.5rem;padding:6px 0 0}@media(min-width: 576px){.floatingmenu .floatingmenu_list_child_text{padding:6px}}.floatingmenu .floatingmenu_list_child__qa .floatingmenu_list_child_img{background:linear-gradient(to bottom, #64ADB3, #405F83)}.floatingmenu .floatingmenu_list_child__official .floatingmenu_list_child_img{background:linear-gradient(to bottom, #405F83, #1C2953);padding:18.75%}.floatingmenu .floatingmenu_list_child__blog .floatingmenu_list_child_img{background:linear-gradient(to bottom, #D0E2F0, #9CBED0);padding:18.75%}/*!
* Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/)
* Copyright 2015 Aidan Feldman
* Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */nav[data-toggle=toc] .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}nav[data-toggle=toc] .nav>li>a:hover,nav[data-toggle=toc] .nav>li>a:focus{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}nav[data-toggle=toc] .nav-link.active,nav[data-toggle=toc] .nav-link.active:hover,nav[data-toggle=toc] .nav-link.active:focus{padding-left:18px;font-weight:bold;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}nav[data-toggle=toc] .nav-link+ul{display:none;padding-bottom:10px}nav[data-toggle=toc] .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:normal}nav[data-toggle=toc] .nav .nav>li>a:hover,nav[data-toggle=toc] .nav .nav>li>a:focus{padding-left:29px}nav[data-toggle=toc] .nav .nav>li>.active,nav[data-toggle=toc] .nav .nav>li>.active:hover,nav[data-toggle=toc] .nav .nav>li>.active:focus{padding-left:28px;font-weight:500}nav[data-toggle=toc] .nav-link.active+ul{display:block}/*!
 * Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/)
 * Copyright 2015 Aidan Feldman
 * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */nav[data-toggle=toc] .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}nav[data-toggle=toc] .nav>li>a:hover,nav[data-toggle=toc] .nav>li>a:focus{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}nav[data-toggle=toc] .nav-link.active,nav[data-toggle=toc] .nav-link.active:hover,nav[data-toggle=toc] .nav-link.active:focus{padding-left:18px;font-weight:bold;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}nav[data-toggle=toc] .nav-link+ul{display:none;padding-bottom:10px}nav[data-toggle=toc] .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:normal}nav[data-toggle=toc] .nav .nav>li>a:hover,nav[data-toggle=toc] .nav .nav>li>a:focus{padding-left:29px}nav[data-toggle=toc] .nav .nav>li>.active,nav[data-toggle=toc] .nav .nav>li>.active:hover,nav[data-toggle=toc] .nav .nav>li>.active:focus{padding-left:28px;font-weight:500}nav[data-toggle=toc] .nav-link.active+ul{display:block}