@font-face{font-family:'Minister W01 Light';src:url("../fonts//b537745e-f813-459f-8880-27e4bf041a71.eot?#iefix");src:url("../fonts//b537745e-f813-459f-8880-27e4bf041a71.eot?#iefix") format("eot"),url("../fonts//a99cbe28-f80c-44f9-b5ab-cee570c35627.woff2") format("woff2"),url("../fonts//8079483a-06d4-4662-92e2-3c4fa66db83c.woff") format("woff"),url("../fonts//6e9af4d1-130b-4b2b-849f-aea4edfd5762.ttf") format("truetype"),url("../fonts//04fd39dc-9e94-4462-8d61-e2915723a9de.svg#04fd39dc-9e94-4462-8d61-e2915723a9de") format("svg")}@font-face{font-family:'Minister W01 Book';src:url("../fonts//22fcdaa5-1fea-4809-a37e-e5bb33705f98.eot?#iefix");src:url("../fonts//22fcdaa5-1fea-4809-a37e-e5bb33705f98.eot?#iefix") format("eot"),url("../fonts//a3e32f21-9639-4c14-bd82-938bf09cef69.woff2") format("woff2"),url("../fonts//b7fde8da-78ef-42f5-9c62-6a41482db46d.woff") format("woff"),url("../fonts//c4d564c9-50fa-4382-bbd1-333d3cca3be2.ttf") format("truetype"),url("../fonts//0d50dd8b-2de5-4bf6-92c3-b980a6e48eff.svg#0d50dd8b-2de5-4bf6-92c3-b980a6e48eff") format("svg")}@font-face{font-family:'Proxima Nova W07 Semibold';src:url("../fonts//1a3eb1f8-8591-4ff6-9372-d7cebbb9c94a.eot?#iefix");src:url("../fonts//1a3eb1f8-8591-4ff6-9372-d7cebbb9c94a.eot?#iefix") format("eot"),url("../fonts//252ced82-77b2-4a11-bb04-22dc964e1e93.woff2") format("woff2"),url("../fonts//70895a76-f2b7-4346-ba39-e8665c2b513f.woff") format("woff"),url("../fonts//0ef60e2c-0009-4fac-9a49-40003332ec4b.ttf") format("truetype"),url("../fonts//6f8328bd-ad5c-46b6-8210-73f0242ef13d.svg#6f8328bd-ad5c-46b6-8210-73f0242ef13d") format("svg")}@font-face{font-family:'Proxima Nova W08 Reg';src:url("../fonts//0020eb30-c98c-4a76-aaa5-c39374f14534.eot?#iefix");src:url("../fonts//0020eb30-c98c-4a76-aaa5-c39374f14534.eot?#iefix") format("eot"),url("../fonts//781c5453-0067-4e64-9386-7c0726d63d57.woff2") format("woff2"),url("../fonts//510df0e5-5b9f-4a1c-b46a-bcf1739bda43.woff") format("woff"),url("../fonts//47e08118-5050-469b-a40c-dc3b2307e87e.ttf") format("truetype"),url("../fonts//d93bd409-7380-4bb8-9d9f-d8035b5e0387.svg#d93bd409-7380-4bb8-9d9f-d8035b5e0387") format("svg")}/* line 26, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .col2-set,.woocommerce-page .col2-set{content:"";display:table;width:100%}/* line 31, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:left;width:48%}/* line 35, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:right;width:48%}/* line 41, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}/* line 51, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.images,.woocommerce #content div.product div.images,.woocommerce-page div.product div.images,.woocommerce-page #content div.product div.images{width:48.94434%;float:left;margin-right:2.11132%}/* line 56, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails a,.woocommerce #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a{width:30.45752%;float:left}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product div.thumbnails a:nth-child(3n+1),.woocommerce #content div.product div.thumbnails a:nth-child(3n+1),.woocommerce-page div.product div.thumbnails a:nth-child(3n+1),.woocommerce-page #content div.product div.thumbnails a:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product div.thumbnails a:nth-child(3n+2),.woocommerce #content div.product div.thumbnails a:nth-child(3n+2),.woocommerce-page div.product div.thumbnails a:nth-child(3n+2),.woocommerce-page #content div.product div.thumbnails a:nth-child(3n+2){margin-left:34.77124%;margin-right:-100%;clear:none}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product div.thumbnails a:nth-child(3n+3),.woocommerce #content div.product div.thumbnails a:nth-child(3n+3),.woocommerce-page div.product div.thumbnails a:nth-child(3n+3),.woocommerce-page #content div.product div.thumbnails a:nth-child(3n+3){margin-left:69.54248%;margin-right:-100%;clear:none}/* line 59, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails a.last,.woocommerce #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last{margin-right:0}/* line 63, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails a.first{clear:both}/* line 69, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a{width:100%;margin-right:0;float:none}/* line 77, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a{width:48%}/* line 83, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a{width:22.05%}/* line 89, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a{width:16.9%}/* line 95, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product div.summary,.woocommerce #content div.product div.summary,.woocommerce-page div.product div.summary,.woocommerce-page #content div.product div.summary{width:48.94434%;float:right;margin-right:0}/* line 99, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs{clear:both}/* line 26, wp-content/themes/ams/sass/mixins/_mixins-master.scss */.woocommerce div.product .woocommerce-tabs:after,.woocommerce #content div.product .woocommerce-tabs:after,.woocommerce-page div.product .woocommerce-tabs:after,.woocommerce-page #content div.product .woocommerce-tabs:after{content:"";display:table;clear:both}/* line 104, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product .woocommerce-tabs ul.tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs{content:"";display:table}/* line 143, wp-content/themes/ams/woocommerce/css/_mixins.scss */.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li{display:inline-block}@media (min-width: 800px){/* line 108, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product .woocommerce-tabs>.panel,.woocommerce #content div.product .woocommerce-tabs>.panel,.woocommerce-page div.product .woocommerce-tabs>.panel,.woocommerce-page #content div.product .woocommerce-tabs>.panel{width:48.72783%;float:left}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product .woocommerce-tabs>.panel:nth-child(2n+1),.woocommerce #content div.product .woocommerce-tabs>.panel:nth-child(2n+1),.woocommerce-page div.product .woocommerce-tabs>.panel:nth-child(2n+1),.woocommerce-page #content div.product .woocommerce-tabs>.panel:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product .woocommerce-tabs>.panel:nth-child(2n+2),.woocommerce #content div.product .woocommerce-tabs>.panel:nth-child(2n+2),.woocommerce-page div.product .woocommerce-tabs>.panel:nth-child(2n+2),.woocommerce-page #content div.product .woocommerce-tabs>.panel:nth-child(2n+2){margin-left:51.27217%;margin-right:-100%;clear:none}}@media (min-width: 960px){/* line 108, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product .woocommerce-tabs>.panel,.woocommerce #content div.product .woocommerce-tabs>.panel,.woocommerce-page div.product .woocommerce-tabs>.panel,.woocommerce-page #content div.product .woocommerce-tabs>.panel{width:48.94434%;float:left}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product .woocommerce-tabs>.panel:nth-child(2n+1),.woocommerce #content div.product .woocommerce-tabs>.panel:nth-child(2n+1),.woocommerce-page div.product .woocommerce-tabs>.panel:nth-child(2n+1),.woocommerce-page #content div.product .woocommerce-tabs>.panel:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce div.product .woocommerce-tabs>.panel:nth-child(2n+2),.woocommerce #content div.product .woocommerce-tabs>.panel:nth-child(2n+2),.woocommerce-page div.product .woocommerce-tabs>.panel:nth-child(2n+2),.woocommerce-page #content div.product .woocommerce-tabs>.panel:nth-child(2n+2){margin-left:51.05566%;margin-right:-100%;clear:none}}/* line 126, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce div.product #reviews .comment,.woocommerce #content div.product #reviews .comment,.woocommerce-page div.product #reviews .comment,.woocommerce-page #content div.product #reviews .comment{content:"";display:table}/* line 151, wp-content/themes/ams/woocommerce/css/_mixins.scss */.woocommerce div.product #reviews .comment img,.woocommerce #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img{float:right;height:auto}/* line 135, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products,.woocommerce-page ul.products{clear:both}/* line 138, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{margin:0px 0px 20px;margin:0rem 0rem 1.25rem}@media (min-width: 640px){/* line 138, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{width:48.39961%;float:left}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(2n+1),.woocommerce-page ul.products li.product:nth-child(2n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(2n+2),.woocommerce-page ul.products li.product:nth-child(2n+2){margin-left:51.60039%;margin-right:-100%;clear:none}}@media (min-width: 800px){/* line 138, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{width:31.4433%;float:left}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(3n+1),.woocommerce-page ul.products li.product:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(3n+2),.woocommerce-page ul.products li.product:nth-child(3n+2){margin-left:34.27835%;margin-right:-100%;clear:none}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(3n+3),.woocommerce-page ul.products li.product:nth-child(3n+3){margin-left:68.5567%;margin-right:-100%;clear:none}}@media (min-width: 960px){/* line 138, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{width:31.92578%;float:left}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(3n+1),.woocommerce-page ul.products li.product:nth-child(3n+1){margin-left:0;margin-right:-100%;clear:both;margin-left:0}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(3n+2),.woocommerce-page ul.products li.product:nth-child(3n+2){margin-left:34.03711%;margin-right:-100%;clear:none}/* line 66, node_modules/susy/sass/susy/language/susy/_gallery.scss */.woocommerce ul.products li.product:nth-child(3n+3),.woocommerce-page ul.products li.product:nth-child(3n+3){margin-left:68.07422%;margin-right:-100%;clear:none}}/* line 154, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products li.first,.woocommerce-page ul.products li.first{clear:both}/* line 158, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-right:0}/* line 165, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce.columns-1 ul.products li.product,.woocommerce-page.columns-1 ul.products li.product{width:100%;margin-right:0}/* line 174, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce.columns-2 ul.products li.product,.woocommerce-page.columns-2 ul.products li.product{width:48%}/* line 182, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce.columns-3 ul.products li.product,.woocommerce-page.columns-3 ul.products li.product{width:30.75%}/* line 190, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce.columns-5 ul.products li.product,.woocommerce-page.columns-5 ul.products li.product{width:16.95%}/* line 198, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce.columns-6 ul.products li.product,.woocommerce-page.columns-6 ul.products li.product{width:13.5%}/* line 204, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:left}/* line 207, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:right}/* line 212, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .woocommerce-pagination ul.page-numbers,.woocommerce-page .woocommerce-pagination ul.page-numbers{content:"";display:table}/* line 143, wp-content/themes/ams/woocommerce/css/_mixins.scss */.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}/* line 222, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce table.cart img,.woocommerce #content table.cart img,.woocommerce-page table.cart img,.woocommerce-page #content table.cart img{height:auto}/* line 226, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce table.cart td.actions,.woocommerce #content table.cart td.actions,.woocommerce-page table.cart td.actions,.woocommerce-page #content table.cart td.actions{text-align:right}/* line 229, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce table.cart td.actions .input-text,.woocommerce #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text{width:80px}/* line 233, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce table.cart td.actions .coupon,.woocommerce #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon{float:left}/* line 236, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce table.cart td.actions .coupon label,.woocommerce #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label{display:none}/* line 243, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{content:"";display:table;width:100%}/* line 247, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:left}/* line 252, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:left}/* line 256, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}/* line 259, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}/* line 265, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;content:"";display:table;clear:right;float:right}/* line 272, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}/* line 279, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:right;width:48%}/* line 290, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li,.woocommerce-page ul.cart_list li,.woocommerce-page ul.product_list_widget li{content:"";display:table}/* line 151, wp-content/themes/ams/woocommerce/css/_mixins.scss */.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:right;height:auto}/* line 299, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row,.woocommerce-page form .form-row{content:"";display:table}/* line 302, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}/* line 305, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}/* line 310, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}/* line 314, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}/* line 321, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form p.form-row,.woocommerce-page form p.form-row{display:block}/* line 325, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{float:left;width:47%;overflow:visible}/* line 332, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right}/* line 336, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce form .form-row-wide,.woocommerce-page form .form-row-wide{clear:both}/* line 343, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}/* line 348, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce #payment .terms,.woocommerce-page #payment .terms{text-align:right;padding:0 1em 0}/* line 353, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}/* line 363, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}/* line 368, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc .product .entry-summary{padding:0 !important;margin:0 0 1.618em !important}/* line 373, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}/* line 379, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc .product .images img{margin-bottom:1em}@media screen and (min-width: 673px){/* line 389, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width: 1040px){/* line 398, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc{padding-right:15px;padding-left:15px}}@media screen and (min-width: 1110px){/* line 407, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width: 1218px){/* line 416, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfourteen .tfwc{margin-right:54px}/* line 422, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.full-width .twentyfourteen .tfwc{margin-right:auto}}/* line 433, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfifteen .t15wc{padding-left:7.6923%;padding-right:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,0.15)}/* line 441, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfifteen .t15wc .page-title{margin-left:0}@media screen and (min-width: 38.75em){/* line 449, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfifteen .t15wc{margin-right:7.6923%;margin-left:7.6923%;margin-top:8.3333%}}@media screen and (min-width: 59.6875em){/* line 459, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentyfifteen .t15wc{margin-left:8.3333%;margin-right:8.3333%;padding:10%}/* line 468, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.single-product .twentyfifteen .entry-summary{padding:0 !important}}/* line 479, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentysixteen .site-main{margin-right:7.6923%;margin-left:7.6923%}/* line 484, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentysixteen .entry-summary{margin-right:0;margin-left:0}/* line 493, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width: 44.375em){/* line 503, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentysixteen .site-main{margin-right:23.0769%}}@media screen and (min-width: 56.875em){/* line 511, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.twentysixteen .site-main{margin-right:0;margin-left:0}/* line 519, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.no-sidebar .twentysixteen .site-main{margin-right:15%;margin-left:15%}/* line 524, wp-content/themes/ams/woocommerce/css/woocommerce-layout.scss */.no-sidebar .twentysixteen .entry-summary{margin-right:0;margin-left:0}}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3Nhc3MvdmFyaWFibGVzLXNpdGUvX3R5cG9ncmFwaHkuc2NzcyIsIndvb2NvbW1lcmNlLWxheW91dC5zY3NzIiwiLi4vLi4vc2Fzcy9taXhpbnMvX21peGlucy1tYXN0ZXIuc2NzcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiX21peGlucy5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsV0FDQyxnQ0FBaUMsQ0FDakMsb0VBQXlFLENBQ3pFLGthQUEyYixDQUU1YixXQUNDLCtCQUFnQyxDQUNoQyxvRUFBeUUsQ0FDekUsa2FBQTJiLENBRTViLFdBQ0MsdUNBQXdDLENBQ3hDLG9FQUF5RSxDQUN6RSxrYUFBMmIsQ0FFNWIsV0FDQyxrQ0FBbUMsQ0FDbkMsb0VBQXlFLENBQ3pFLGthQUEyYixDQUFBLDJFQUFBLENDRjViLG1EQ0xDLFVBQVcsQ0FDWCxhQUFjLENEWWIsVUFBVyxDQVVYLDJFQUFBLENBbEJGLGlFQVdHLFVBQVcsQ0FDWCxTQUFVLENBQ1YsMkVBQUEsQ0FiSCxpRUFlRyxXQUFZLENBQ1osU0FBVSxDQUNWLDJFQUFBLENBakJILHVDQXFCRSxXQUFZLENBQ1osY0FBZSxDQUNmLDJFQUFBLENBdkJGLDRLRURJLGVDd0kwQyxDRHhJMUMsVUVBNEQsQ0ZBNUQscUJHNEQ4RSxDTDNCL0UsMkVBQUEsQ0FoQ0gsb01FREksZUN3STBDLENEeEkxQyxVRUE0RCxDSjhDNUQscUVBQUEsQ0E3Q0osb1FFREksYUl3RGlCLENKeERqQixrQktvRDZCLENMcEQ3QixVTVowQixDTlkxQixhT2dCK0IsQ0Z3RDlCLHFFQUFBLENQdkVMLG9RRURJLHFCQ3dJMEMsQ0R4STFDLGtCS29ENkIsQ0xwRDdCLFVNSjBCLENENEV6QixxRUFBQSxDUHZFTCxvUUVESSxxQkN3STBDLENEeEkxQyxrQktvRDZCLENMcEQ3QixVTUowQixDRDRFekIsMkVBQUEsQ1B2RUwsd05BdUNLLGNBQWUsQ0FDZiwyRUFBQSxDQXhDTCw0TkEyQ0ssVUFBVyxDQUNYLDJFQUFBLENBNUNMLDRPQWlESyxVQUFXLENBQ1gsY0FBZSxDQUNmLFVBQVcsQ0FDWCwyRUFBQSxDQXBETCw0T0F5REssU0FBVSxDQUNWLDJFQUFBLENBMURMLDRPQStESyxZQUFhLENBQ2IsMkVBQUEsQ0FoRUwsNE9BcUVLLFdBQVksQ0FDWiwyRUFBQSxDQXRFTCxnTEVESSxlQ3dJMEMsQ0R4STFDLFdFQXVFLENGQXZFLGNDa0ZvQixDSExyQiwyRUFBQSxDQTVFSCx3TUFpRkcsVUFBVyxDQXFCWCxtRUFBQSxDQXRHSCxnT0NMQyxVQUFXLENBQ1gsYUFBYyxDQUtkLFVBQVcsQ0FPViw0RUFBQSxDRFJGLHdPQ0xDLFVBQVcsQ0FDWCxhQUFjLENEeUZYLGlFQUFBLENBckZKLG9QVTJIRSxvQkFBcUIsQ0FDckIsMEJDOUYwQiw0RUFBQSxDWDlCNUIsb09FREksZUN3STBDLENEeEkxQyxVRUE0RCxDSnNHNUQscUVBQUEsQ0FyR0osb1NFREksYUl3RGlCLENKeERqQixrQktvRDZCLENMcEQ3QixVTVowQixDTlkxQixhT2dCK0IsQ0Z3RDlCLHFFQUFBLENQdkVMLG9TRURJLHFCQ3dJMEMsQ0R4STFDLGtCS29ENkIsQ0xwRDdCLFVNSjBCLENENEV6QixDSXpDRCwwQkFBd0IsNEVBQUEsQ1g5QjVCLG9PRURJLGVDd0kwQyxDRHhJMUMsVUVBNEQsQ0pzRzVELHFFQUFBLENBckdKLG9TRURJLGFJd0RpQixDSnhEakIsa0JLb0Q2QixDTHBEN0IsVU1aMEIsQ05ZMUIsYU9nQitCLENGd0Q5QixxRUFBQSxDUHZFTCxvU0VESSxxQkN3STBDLENEeEkxQyxrQktvRDZCLENMcEQ3QixVTUowQixDRDRFekIsQ0FBQSw0RUFBQSxDUHZFTCx3TUNMQyxVQUFXLENBQ1gsYUFBYyxDRCtHWCxpRUFBQSxDQTNHSix3TlVtSUUsV0FBWSxDQUNaLFdBQVksQ0FDWiw0RUFBQSxDVnJJRix1REFtSEUsVUFBVyxDQXlCWCw0RUFBQSxDQTVJRiw2RUNzQ0UsbUJBaEJZLENBaUJaLHdCQVJhLENEb0daLDBCV3JHeUIsNEVBQUEsQ1g5QjVCLDZFRURJLGVDd0kwQyxDRHhJMUMsVUVBNEQsQ0pvSTdELHFFQUFBLENBbklILDZHRURJLGFJd0RpQixDSnhEakIsa0JLb0Q2QixDTHBEN0IsVU1aMEIsQ05ZMUIsYU9nQitCLENGd0Q5QixxRUFBQSxDUHZFTCw2R0VESSxxQkN3STBDLENEeEkxQyxrQktvRDZCLENMcEQ3QixVTUowQixDRDRFekIsQ0l6Q0QsMEJBQXdCLDRFQUFBLENYOUI1Qiw2RUVESSxjQ3dJMEMsQ0R4STFDLFVFQTRELENKb0k3RCxxRUFBQSxDQW5JSCw2R0VESSxhSXdEaUIsQ0p4RGpCLGtCS29ENkIsQ0xwRDdC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LCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdtb2R1bGFyc2NhbGUnO1xuXG4kZm9udC1wYXRoOiAnRm9udHMnICFkZWZhdWx0O1xuXG5AZm9udC1mYWNle1xuXHRmb250LWZhbWlseTogJ01pbmlzdGVyIFcwMSBMaWdodCc7XG5cdHNyYzogdXJsKCcjeyRmb250LXBhdGh9L2I1Mzc3NDVlLWY4MTMtNDU5Zi04ODgwLTI3ZTRiZjA0MWE3MS5lb3Q/I2llZml4Jyk7XG5cdHNyYzogdXJsKCcjeyRmb250LXBhdGh9L2I1Mzc3NDVlLWY4MTMtNDU5Zi04ODgwLTI3ZTRiZjA0MWE3MS5lb3Q/I2llZml4JykgZm9ybWF0KCdlb3QnKSwgdXJsKCcjeyRmb250LXBhdGh9L2E5OWNiZTI4LWY4MGMtNDRmOS1iNWFiLWNlZTU3MGMzNTYyNy53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcjeyRmb250LXBhdGh9LzgwNzk0ODNhLTA2ZDQtNDY2Mi05MmUyLTNjNGZhNjZkYjgzYy53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnI3skZm9udC1wYXRofS82ZTlhZjRkMS0xMzBiLTRiMmItODQ5Zi1hZWE0ZWRmZDU3NjIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJyN7JGZvbnQtcGF0aH0vMDRmZDM5ZGMtOWU5NC00NDYyLThkNjEtZTI5MTU3MjNhOWRlLnN2ZyMwNGZkMzlkYy05ZTk0LTQ0NjItOGQ2MS1lMjkxNTcyM2E5ZGUnKSBmb3JtYXQoJ3N2ZycpO1xufVxuQGZvbnQtZmFjZXtcblx0Zm9udC1mYW1pbHk6ICdNaW5pc3RlciBXMDEgQm9vayc7XG5cdHNyYzogdXJsKCcjeyRmb250LXBhdGh9LzIyZmNkYWE1LTFmZWEtNDgwOS1hMzdlLWU1YmIzMzcwNWY5OC5lb3Q/I2llZml4Jyk7XG5cdHNyYzogdXJsKCcjeyRmb250LXBhdGh9LzIyZmNkYWE1LTFmZWEtNDgwOS1hMzdlLWU1YmIzMzcwNWY5OC5lb3Q/I2llZml4JykgZm9ybWF0KCdlb3QnKSwgdXJsKCcjeyRmb250LXBhdGh9L2EzZTMyZjIxLTk2MzktNGMxNC1iZDgyLTkzOGJmMDljZWY2OS53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcjeyRmb250LXBhdGh9L2I3ZmRlOGRhLTc4ZWYtNDJmNS05YzYyLTZhNDE0ODJkYjQ2ZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnI3skZm9udC1wYXRofS9jNGQ1NjRjOS01MGZhLTQzODItYmJkMS0zMzNkM2NjYTNiZTIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLCB1cmwoJyN7JGZvbnQtcGF0aH0vMGQ1MGRkOGItMmRlNS00YmY2LTkyYzMtYjk4MGE2ZTQ4ZWZmLnN2ZyMwZDUwZGQ4Yi0yZGU1LTRiZjYtOTJjMy1iOTgwYTZlNDhlZmYnKSBmb3JtYXQoJ3N2ZycpO1xufVxuQGZvbnQtZmFjZXtcblx0Zm9udC1mYW1pbHk6ICdQcm94aW1hIE5vdmEgVzA3IFNlbWlib2xkJztcblx0c3JjOiB1cmwoJyN7JGZvbnQtcGF0aH0vMWEzZWIxZjgtODU5MS00ZmY2LTkzNzItZDdjZWJiYjljOTRhLmVvdD8jaWVmaXgnKTtcblx0c3JjOiB1cmwoJyN7JGZvbnQtcGF0aH0vMWEzZWIxZjgtODU5MS00ZmY2LTkzNzItZDdjZWJiYjljOTRhLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VvdCcpLCB1cmwoJyN7JGZvbnQtcGF0aH0vMjUyY2VkODItNzdiMi00YTExLWJiMDQtMjJkYzk2NGUxZTkzLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJyN7JGZvbnQtcGF0aH0vNzA4OTVhNzYtZjJiNy00MzQ2LWJhMzktZTg2NjVjMmI1MTNmLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcjeyRmb250LXBhdGh9LzBlZjYwZTJjLTAwMDktNGZhYy05YTQ5LTQwMDAzMzMyZWM0Yi50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksIHVybCgnI3skZm9udC1wYXRofS82ZjgzMjhiZC1hZDVjLTQ2YjYtODIxMC03M2YwMjQyZWYxM2Quc3ZnIzZmODMyOGJkLWFkNWMtNDZiNi04MjEwLTczZjAyNDJlZjEzZCcpIGZvcm1hdCgnc3ZnJyk7XG59XG5AZm9udC1mYWNle1xuXHRmb250LWZhbWlseTogJ1Byb3hpbWEgTm92YSBXMDggUmVnJztcblx0c3JjOiB1cmwoJyN7JGZvbnQtcGF0aH0vMDAyMGViMzAtYzk4Yy00YTc2LWFhYTUtYzM5Mzc0ZjE0NTM0LmVvdD8jaWVmaXgnKTtcblx0c3JjOiB1cmwoJyN7JGZvbnQtcGF0aH0vMDAyMGViMzAtYzk4Yy00YTc2LWFhYTUtYzM5Mzc0ZjE0NTM0LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VvdCcpLCB1cmwoJyN7JGZvbnQtcGF0aH0vNzgxYzU0NTMtMDA2Ny00ZTY0LTkzODYtN2MwNzI2ZDYzZDU3LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJyN7JGZvbnQtcGF0aH0vNTEwZGYwZTUtNWI5Zi00YTFjLWI0NmEtYmNmMTczOWJkYTQzLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcjeyRmb250LXBhdGh9LzQ3ZTA4MTE4LTUwNTAtNDY5Yi1hNDBjLWRjM2IyMzA3ZTg3ZS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksIHVybCgnI3skZm9udC1wYXRofS9kOTNiZDQwOS03MzgwLTRiYjgtOWQ5Zi1kODAzNWI1ZTAzODcuc3ZnI2Q5M2JkNDA5LTczODAtNGJiOC05ZDlmLWQ4MDM1YjVlMDM4NycpIGZvcm1hdCgnc3ZnJyk7XG59XG5cbiRtcy1yYXRpbzogMS4yO1xuXG4kZm9udF9fc2VyaWYtbGlnaHQ6ICdNaW5pc3RlciBXMDEgTGlnaHQnO1xuJGZvbnRfX3NlcmlmLWJvb2s6ICdNaW5pc3RlciBXMDEgQm9vayc7XG4kZm9udF9fc2Fucy1zZXJpZi1zZW1pYm9sZDogJ1Byb3hpbWEgTm92YSBXMDcgU2VtaWJvbGQnLCBzYW5zLXNlcmlmO1xuJGZvbnRfX3NhbnMtc2VyaWYtcmVndWxhcjogJ1Byb3hpbWEgTm92YSBXMDggUmVnJywgc2Fucy1zZXJpZjtcblxuJGZvbnRfX21haW46ICRmb250X19zZXJpZi1saWdodCwgc2VyaWY7XG4kZm9udF9faGVhZGluZ3M6ICRmb250X19tYWluO1xuJGZvbnRfX2NvZGU6IE1vbmFjbywgQ29uc29sYXMsICdBbmRhbGUgTW9ubycsICdEZWphVnUgU2FucyBNb25vJywgbW9ub3NwYWNlO1xuJGZvbnRfX3ByZTogJ0NvdXJpZXIgMTAgUGl0Y2gnLCBDb3VyaWVyLCBtb25vc3BhY2U7XG4kZm9udF9fbGluZS1oZWlnaHQtYm9keTogMjAgLyAxNjtcbiRmb250X19saW5lLWhlaWdodC1wcmU6IDEuNjtcbiRmb250X193ZWlnaHQtYm9keTogNDAwO1xuJGZvbnRfX3dlaWdodC1oZWFkaW5nczogNDAwO1xuIiwiLyoqXG4gKiB3b29jb21tZXJjZS1sYXlvdXQuc2Nzc1xuICogQXBwbGllcyBsYXlvdXQgdG8gdGhlIGRlZmF1bHQgV29vQ29tbWVyY2UgZnJvbnRlbmQgZGVzaWduXG4gKi9cblxuLyoqXG4gKiBJbXBvcnRzXG4gKi9cbiRmb250LXBhdGg6IFwiLi4vZm9udHMvXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwiLi4vLi4vc2Fzcy92YXJpYWJsZXMtc2l0ZS92YXJpYWJsZXMtc2l0ZVwiO1xuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuQGltcG9ydCBcIi4uLy4uL3Nhc3MvbWl4aW5zL21peGlucy1tYXN0ZXJcIjtcbkBpbXBvcnQgXCJzdXN5XCI7XG5cbi8qKlxuICogU3R5bGluZyBiZWdpbnNcbiAqL1xuLndvb2NvbW1lcmNlLCAud29vY29tbWVyY2UtcGFnZSB7XG5cblx0LyoqXG5cdCAqIEdlbmVyYWwgbGF5b3V0IHN0eWxlc1xuXHQgKi9cblx0LmNvbDItc2V0IHtcblx0XHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xuXG5cdFx0d2lkdGg6IDEwMCU7XG5cblx0XHQuY29sLTEge1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHR3aWR0aDogNDglO1xuXHRcdH1cblx0XHQuY29sLTIge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0d2lkdGg6IDQ4JTtcblx0XHR9XG5cdH1cblxuXHRpbWcge1xuXHRcdGhlaWdodDogYXV0bztcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdH1cblxuXHQvKipcblx0ICogUHJvZHVjdCBwYWdlXG5cdCAqL1xuXHRkaXYucHJvZHVjdCxcblx0I2NvbnRlbnQgZGl2LnByb2R1Y3Qge1xuXHRcdGRpdi5pbWFnZXMge1xuXHRcdFx0QGluY2x1ZGUgc3Bhbig2IG9mICRjb2x1bW5zLWRlc2t0b3ApO1xuXHRcdH1cblxuXHRcdGRpdi50aHVtYm5haWxzIHtcblx0XHRcdGEge1xuXHRcdFx0XHRAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNik7XG5cblx0XHRcdFx0Ji5sYXN0IHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmZpcnN0IHtcblx0XHRcdFx0XHRjbGVhcjogYm90aDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmLmNvbHVtbnMtMSB7XG5cdFx0XHRcdGEge1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdFx0XHRmbG9hdDogbm9uZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQmLmNvbHVtbnMtMiB7XG5cdFx0XHRcdGEge1xuXHRcdFx0XHRcdHdpZHRoOiA0OCU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ji5jb2x1bW5zLTQge1xuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHR3aWR0aDogMjIuMDUlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCYuY29sdW1ucy01IHtcblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0d2lkdGg6IDE2LjklO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZGl2LnN1bW1hcnkge1xuXHRcdFx0QGluY2x1ZGUgc3BhbihsYXN0IDYgb2YgJGNvbHVtbnMtZGVza3RvcCk7XG5cdFx0fVxuXG5cdFx0Lndvb2NvbW1lcmNlLXRhYnMge1xuXHRcdFx0QGluY2x1ZGUgY2xlYXItYWZ0ZXI7XG5cblx0XHRcdGNsZWFyOiBib3RoO1xuXG5cdFx0XHR1bC50YWJzIHtcblx0XHRcdFx0QGluY2x1ZGUgbWVudSgpO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IC5wYW5lbCB7XG5cdFx0XHRcdEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbWluLXdpZHRoLXBob25lLWxhcmdlLCAkY29sdW1ucy1waG9uZS1sYXJnZSkge1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0QGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRtaW4td2lkdGgtdGFibGV0LXBvcnRyYWl0LCAkY29sdW1ucy10YWJsZXQtcG9ydHJhaXQpIHtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbWluLXdpZHRoLXRhYmxldC1sYW5kc2NhcGUsICRjb2x1bW5zLXRhYmxldC1sYW5kc2NhcGUpIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBnYWxsZXJ5KDUgb2YgJGNvbHVtbnMtdGFibGV0LWxhbmRzY2FwZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJG1pbi13aWR0aC1kZXNrdG9wLCAkY29sdW1ucy1kZXNrdG9wKSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgZ2FsbGVyeSg2IG9mICRjb2x1bW5zLWRlc2t0b3ApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0I3Jldmlld3Mge1xuXHRcdFx0LmNvbW1lbnQge1xuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYXJpZ2h0KCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFByb2R1Y3QgbG9vcHNcblx0ICovXG5cdHVsLnByb2R1Y3RzIHtcblx0XHRjbGVhcjogYm90aDtcblxuXHRcdGxpLnByb2R1Y3Qge1xuXHRcdFx0QGluY2x1ZGUgcmVtLWZhbGxiYWNrKG1hcmdpbiwgMCwgMCwgJGZvbnRfX2xpbmUtaGVpZ2h0LWJvZHkpO1xuXG5cdFx0XHRAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJG1pbi13aWR0aC10YWJsZXQtcG9ydHJhaXQsICRjb2x1bW5zLXRhYmxldC1wb3J0cmFpdCkge1xuXHRcdFx0XHRAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgJGNvbHVtbnMtdGFibGV0LXBvcnRyYWl0KTtcblx0XHRcdH1cblxuXHRcdFx0QGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRtaW4td2lkdGgtdGFibGV0LWxhbmRzY2FwZSwgJGNvbHVtbnMtdGFibGV0LWxhbmRzY2FwZSkge1xuXHRcdFx0XHRAaW5jbHVkZSBnYWxsZXJ5KDMgb2YgOSk7XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkbWluLXdpZHRoLWRlc2t0b3AsICRjb2x1bW5zLWRlc2t0b3ApIHtcblx0XHRcdFx0QGluY2x1ZGUgZ2FsbGVyeSg0IG9mICRjb2x1bW5zLWRlc2t0b3ApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxpLmZpcnN0IHtcblx0XHRcdGNsZWFyOiBib3RoO1xuXHRcdH1cblxuXHRcdGxpLmxhc3Qge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdH1cblx0fVxuXG5cdCYuY29sdW1ucy0xIHtcblx0XHR1bC5wcm9kdWN0cyB7XG5cdFx0XHRsaS5wcm9kdWN0IHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmLmNvbHVtbnMtMiB7XG5cdFx0dWwucHJvZHVjdHMge1xuXHRcdFx0bGkucHJvZHVjdCB7XG5cdFx0XHRcdHdpZHRoOiA0OCU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ji5jb2x1bW5zLTMge1xuXHRcdHVsLnByb2R1Y3RzIHtcblx0XHRcdGxpLnByb2R1Y3Qge1xuXHRcdFx0XHR3aWR0aDogMzAuNzUlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuY29sdW1ucy01IHtcblx0XHR1bC5wcm9kdWN0cyB7XG5cdFx0XHRsaS5wcm9kdWN0IHtcblx0XHRcdFx0d2lkdGg6IDE2Ljk1JTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQmLmNvbHVtbnMtNiB7XG5cdFx0dWwucHJvZHVjdHMge1xuXHRcdFx0bGkucHJvZHVjdCB7XG5cdFx0XHRcdHdpZHRoOiAxMy41JTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQud29vY29tbWVyY2UtcmVzdWx0LWNvdW50IHtcblx0XHRmbG9hdDogbGVmdDtcblx0fVxuXHQud29vY29tbWVyY2Utb3JkZXJpbmcge1xuXHRcdGZsb2F0OiByaWdodDtcblx0fVxuXG5cdC53b29jb21tZXJjZS1wYWdpbmF0aW9uIHtcblx0XHR1bC5wYWdlLW51bWJlcnMge1xuXHRcdFx0QGluY2x1ZGUgbWVudSgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYXJ0IHBhZ2Vcblx0ICovXG5cdHRhYmxlLmNhcnQsXG5cdCNjb250ZW50IHRhYmxlLmNhcnQge1xuXHRcdGltZyB7XG5cdFx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0fVxuXG5cdFx0dGQuYWN0aW9ucyB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblxuXHRcdFx0LmlucHV0LXRleHQge1xuXHRcdFx0XHR3aWR0aDogODBweDtcblx0XHRcdH1cblxuXHRcdFx0LmNvdXBvbiB7XG5cdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXG5cdFx0XHRcdGxhYmVsIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmNhcnQtY29sbGF0ZXJhbHMge1xuXHRcdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cdFx0d2lkdGg6IDEwMCU7XG5cblx0XHQucmVsYXRlZCB7XG5cdFx0XHR3aWR0aDogMzAuNzUlO1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0fVxuXG5cdFx0LmNyb3NzLXNlbGxzIHtcblx0XHRcdHdpZHRoOiA0OCU7XG5cdFx0XHRmbG9hdDogbGVmdDtcblxuXHRcdFx0dWwucHJvZHVjdHMge1xuXHRcdFx0XHRmbG9hdDogbm9uZTtcblxuXHRcdFx0XHRsaSB7XG5cdFx0XHRcdFx0d2lkdGg6IDQ4JTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5zaGlwcGluZ19jYWxjdWxhdG9yIHtcblx0XHRcdHdpZHRoOiA0OCU7XG5cdFx0XHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xuXHRcdFx0Y2xlYXI6IHJpZ2h0O1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXG5cdFx0XHQuY29sMi1zZXQge1xuXHRcdFx0XHQuY29sLTEsXG5cdFx0XHRcdC5jb2wtMiB7XG5cdFx0XHRcdFx0d2lkdGg6IDQ3JTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5jYXJ0X3RvdGFscyB7XG5cdFx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0XHR3aWR0aDogNDglO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYXJ0IHNpZGViYXJcblx0ICovXG5cdHVsLmNhcnRfbGlzdCxcblx0dWwucHJvZHVjdF9saXN0X3dpZGdldCB7XG5cdFx0bGkge1xuXHRcdFx0QGluY2x1ZGUgbWVkaWFyaWdodCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGb3Jtc1xuXHQgKi9cblx0Zm9ybSB7XG5cdFx0LmZvcm0tcm93IHtcblx0XHRcdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cblx0XHRcdGxhYmVsIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHRcdFx0Ji5jaGVja2JveCB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdCB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXG5cdFx0XHQuaW5wdXQtdGV4dCB7XG5cdFx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblxuXG5cdFx0cC5mb3JtLXJvdyB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cblx0XHQuZm9ybS1yb3ctZmlyc3QsXG5cdFx0LmZvcm0tcm93LWxhc3Qge1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHR3aWR0aDogNDclO1xuXHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdFx0fVxuXG5cdFx0LmZvcm0tcm93LWxhc3Qge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdH1cblxuXHRcdC5mb3JtLXJvdy13aWRlIHtcblx0XHRcdGNsZWFyOiBib3RoO1xuXHRcdH1cblx0fVxuXG5cdCNwYXltZW50IHtcblx0XHQuZm9ybS1yb3cge1xuXHRcdFx0c2VsZWN0IHtcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnRlcm1zIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0cGFkZGluZzogMCAxZW0gMDtcblx0XHR9XG5cblx0XHQjcGxhY2Vfb3JkZXIge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIFR3ZW50eSBGb3VydGVlbiBzcGVjaWZpYyBzdHlsZXNcbiAqL1xuLnR3ZW50eWZvdXJ0ZWVuIHtcblx0LnRmd2Mge1xuXHRcdHBhZGRpbmc6IDEycHggMTBweCAwO1xuXHRcdG1heC13aWR0aDogNDc0cHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cblx0XHQucHJvZHVjdCAuZW50cnktc3VtbWFyeSB7XG5cdFx0XHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdFx0XHRtYXJnaW46IDAgMCAxLjYxOGVtICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0ZGl2LnByb2R1Y3QuaGVudHJ5Lmhhcy1wb3N0LXRodW1ibmFpbCB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblxuXHRcdC5wcm9kdWN0IHtcblx0XHRcdC5pbWFnZXMge1xuXHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDFlbTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NzNweCkge1xuXHQudHdlbnR5Zm91cnRlZW4ge1xuXHRcdC50ZndjIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDMwcHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDMwcHg7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwNDBweCkge1xuXHQudHdlbnR5Zm91cnRlZW4ge1xuXHRcdC50ZndjIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDE1cHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDE1cHg7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDExMTBweCkge1xuXHQudHdlbnR5Zm91cnRlZW4ge1xuXHRcdC50ZndjIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDMwcHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDMwcHg7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMThweCkge1xuXHQudHdlbnR5Zm91cnRlZW4ge1xuXHRcdC50ZndjIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNTRweDtcblx0XHR9XG5cdH1cblx0LmZ1bGwtd2lkdGgge1xuXHRcdC50d2VudHlmb3VydGVlbiB7XG5cdFx0XHQudGZ3YyB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBUd2VudHkgRmlmdGVlbiBzcGVjaWZpYyBzdHlsZXNcbiAqL1xuLnR3ZW50eWZpZnRlZW4ge1xuXHQudDE1d2Mge1xuXHRcdHBhZGRpbmctbGVmdDogNy42OTIzJTtcblx0XHRwYWRkaW5nLXJpZ2h0OiA3LjY5MjMlO1xuXHRcdHBhZGRpbmctdG9wOiA3LjY5MjMlO1xuXHRcdG1hcmdpbi1ib3R0b206IDcuNjkyMyU7XG5cdFx0YmFja2dyb3VuZDogI2ZmZjtcblx0XHRib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG5cblx0XHQucGFnZS10aXRsZSB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzguNzVlbSkge1xuXHQudHdlbnR5ZmlmdGVlbiB7XG5cdFx0LnQxNXdjIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNy42OTIzJTtcblx0XHRcdG1hcmdpbi1sZWZ0OiA3LjY5MjMlO1xuXHRcdFx0bWFyZ2luLXRvcDogOC4zMzMzJTtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTkuNjg3NWVtKSB7XG5cdC50d2VudHlmaWZ0ZWVuIHtcblx0XHQudDE1d2Mge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDguMzMzMyU7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDguMzMzMyU7XG5cdFx0XHRwYWRkaW5nOiAxMCU7XG5cdFx0fVxuXHR9XG5cblx0LnNpbmdsZS1wcm9kdWN0IHtcblx0XHQudHdlbnR5ZmlmdGVlbiB7XG5cdFx0XHQuZW50cnktc3VtbWFyeSB7XG5cdFx0XHRcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBUd2VudHkgU2l4dGVlbiBzcGVjaWZpYyBzdHlsZXNcbiAqL1xuLnR3ZW50eXNpeHRlZW4ge1xuXHQuc2l0ZS1tYWluIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDcuNjkyMyU7XG5cdFx0bWFyZ2luLWxlZnQ6IDcuNjkyMyU7XG5cdH1cblxuXHQuZW50cnktc3VtbWFyeSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHR9XG59XG5cbiNjb250ZW50IHtcblx0LnR3ZW50eXNpeHRlZW4ge1xuXHRcdGRpdi5wcm9kdWN0IHtcblx0XHRcdGRpdi5pbWFnZXMsXG5cdFx0XHRkaXYuc3VtbWFyeSB7XG5cdFx0XHRcdHdpZHRoOiA0Ni40Mjg1NyU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ0LjM3NWVtKSB7XG5cdC50d2VudHlzaXh0ZWVuIHtcblx0XHQuc2l0ZS1tYWluIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMjMuMDc2OSU7XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU2Ljg3NWVtKSB7XG5cdC50d2VudHlzaXh0ZWVuIHtcblx0XHQuc2l0ZS1tYWluIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdH1cblx0fVxuXG5cdC5uby1zaWRlYmFyIHtcblx0XHQudHdlbnR5c2l4dGVlbiB7XG5cdFx0XHQuc2l0ZS1tYWluIHtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAxNSU7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAxNSU7XG5cdFx0XHR9XG5cblx0XHRcdC5lbnRyeS1zdW1tYXJ5IHtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8vIFJlbSBvdXRwdXQgd2l0aCBweCBmYWxsYmFja1xuQG1peGluIGZvbnQtc2l6ZSgkc2l6ZVZhbHVlOiAxKSB7XG5cdGZvbnQtc2l6ZTogKHN0cmlwLXVuaXQoJHNpemVWYWx1ZSkgKiAxNikgKyBweDtcblx0Zm9udC1zaXplOiBzdHJpcC11bml0KCRzaXplVmFsdWUpICsgcmVtO1xufVxuXG4vLyBDZW50ZXIgYmxvY2tcbkBtaXhpbiBjZW50ZXItYmxvY2sge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLy8gQ2xlYXJmaXhcbkBtaXhpbiBjbGVhcmZpeCgpIHtcblx0Y29udGVudDogXCJcIjtcblx0ZGlzcGxheTogdGFibGU7XG59XG5cbi8vIENsZWFyIGFmdGVyIChub3QgYWxsIGNsZWFyZml4IG5lZWQgdGhpcyBhbHNvKVxuQG1peGluIGNsZWFyZml4LWFmdGVyKCkge1xuXHRjbGVhcjogYm90aDtcbn1cblxuQG1peGluIGNsZWFyLWFmdGVyKCkge1xuXHQmOmFmdGVyIHtcblx0XHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xuXHRcdEBpbmNsdWRlIGNsZWFyZml4LWFmdGVyKCk7XG5cdH1cbn1cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbn1cblxuQG1peGluIHJlbS1mYWxsYmFjaygkcHJvcGVydHksICR2YWx1ZXMuLi4pIHtcbiAgJG1heDogbGVuZ3RoKCR2YWx1ZXMpO1xuICAkcHhWYWx1ZXM6ICcnO1xuICAkcmVtVmFsdWVzOiAnJztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdChudGgoJHZhbHVlcywgJGkpKTtcbiAgICAkcHhWYWx1ZXM6ICN7JHB4VmFsdWVzICsgJHZhbHVlKjE2fXB4O1xuXG4gICAgQGlmICRpIDwgJG1heCB7XG4gICAgICAkcHhWYWx1ZXM6ICN7JHB4VmFsdWVzICsgXCIgXCJ9O1xuICAgIH1cbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KG50aCgkdmFsdWVzLCAkaSkpO1xuICAgICRyZW1WYWx1ZXM6ICN7JHJlbVZhbHVlcyArICR2YWx1ZX1yZW07XG5cbiAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICRyZW1WYWx1ZXM6ICN7JHJlbVZhbHVlcyArIFwiIFwifTtcbiAgICB9XG4gIH1cblxuICAjeyRwcm9wZXJ0eX06ICRweFZhbHVlcztcbiAgI3skcHJvcGVydHl9OiAkcmVtVmFsdWVzO1xufVxuXG4vLy8gSG9yaXpvbnRhbCwgdmVydGljYWwgb3IgYWJzb2x1dGUgY2VudGVyaW5nXG4vLy8gSWYgc3BlY2lmaWVkLCB0aGlzIG1peGluIHdpbGwgdXNlIG5lZ2F0aXZlIG1hcmdpbnNcbi8vLyBiYXNlZCBvbiBlbGVtZW50J3MgZGltZW5zaW9ucy4gRWxzZSwgaXQgd2lsbCByZWx5XG4vLy8gb24gQ1NTIHRyYW5zZm9ybXMgd2hpY2ggaGF2ZSBhIGxlc3NlciBicm93c2VyIHN1cHBvcnRcbi8vLyBidXQgYXJlIG1vcmUgZmxleGlibGUgYXMgdGhleSBkb24ndCByZXF1aXJlIHRvIHNldFxuLy8vIGFueSBzcGVjaWZpYyBkaW1lbnNpb25zIHRvIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtMZW5ndGggfCBudWxsfSAkd2lkdGggW251bGxdIC0gRWxlbWVudCB3aWR0aFxuLy8vIEBwYXJhbSB7TGVuZ3RoIHwgbnVsbH0gJGhlaWdodCBbbnVsbF0gLSBFbGVtZW50IGhlaWdodFxuLy8vXG5AbWl4aW4gY2VudGVyKCR3aWR0aDogbnVsbCwgJGhlaWdodDogbnVsbCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG5cbiAgQGlmIG5vdCAkd2lkdGggYW5kIG5vdCAkaGVpZ2h0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfSBAZWxzZSBpZiAkd2lkdGggYW5kICRoZWlnaHQge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIG1hcmdpbjogLSgkd2lkdGggLyAyKSAjezAgMH0gLSgkaGVpZ2h0IC8gMilcbiAgfSBAZWxzZSBpZiBub3QgJGhlaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0oJHdpZHRoIC8gMik7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gIH0gQGVsc2Uge1xuICAgIG1hcmdpbi10b3A6IC0oJGhlaWdodCAvIDIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvKipcbiAqIERlcHJlY2F0ZWRcbiAqIEZhbGxiYWNrIGZvciBib3VyYm9uIGVxdWl2YWxlbnRcbiAqL1xuQG1peGluIGNsZWFyZml4KCkge1xuXHQqem9vbTogMTtcblxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogXCIgXCI7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdH1cblxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG4vKipcbiAqIERlcHJlY2F0ZWRcbiAqIFZlbmRvciBwcmVmaXggbm8gbG9uZ2VyIHJlcXVpcmVkLlxuICovXG5AbWl4aW4gYm9yZGVyX3JhZGl1cygkcmFkaXVzOiA0cHgpIHtcblx0Ym9yZGVyLXJhZGl1czogJHJhZGl1cztcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIGJvcmRlcl9yYWRpdXNfcmlnaHQoJHJhZGl1czogNHB4KSB7XG5cdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaXVzO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIGJvcmRlcl9yYWRpdXNfbGVmdCgkcmFkaXVzOiA0cHgpIHtcblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGl1cztcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGl1cztcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIGJvcmRlcl9yYWRpdXNfYm90dG9tKCRyYWRpdXM6IDRweCkge1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIGJvcmRlcl9yYWRpdXNfdG9wKCRyYWRpdXM6IDRweCkge1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaXVzO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGl1cztcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIG9wYWNpdHkoICRvcGFjaXR5OiAwLjc1ICkge1xuXHRvcGFjaXR5OiAkb3BhY2l0eTtcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIGJveF9zaGFkb3coJHNoYWRvd194OiAzcHgsICRzaGFkb3dfeTogM3B4LCAkc2hhZG93X3JhZDogM3B4LCAkc2hhZG93X2luOiAzcHgsICRzaGFkb3dfY29sb3I6ICM4ODgpIHtcblx0Ym94LXNoYWRvdzogJHNoYWRvd194ICRzaGFkb3dfeSAkc2hhZG93X3JhZCAkc2hhZG93X2luICRzaGFkb3dfY29sb3I7XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZFxuICogVmVuZG9yIHByZWZpeCBubyBsb25nZXIgcmVxdWlyZWQuXG4gKi9cbkBtaXhpbiBpbnNldF9ib3hfc2hhZG93KCRzaGFkb3dfeDogM3B4LCAkc2hhZG93X3k6IDNweCwgJHNoYWRvd19yYWQ6IDNweCwgJHNoYWRvd19pbjogM3B4LCAkc2hhZG93X2NvbG9yOiAjODg4KSB7XG5cdGJveC1zaGFkb3c6IGluc2V0ICRzaGFkb3dfeCAkc2hhZG93X3kgJHNoYWRvd19yYWQgJHNoYWRvd19pbiAkc2hhZG93X2NvbG9yO1xufVxuXG4vKipcbiAqIERlcHJlY2F0ZWRcbiAqIFZlbmRvciBwcmVmaXggbm8gbG9uZ2VyIHJlcXVpcmVkLlxuICovXG5AbWl4aW4gdGV4dF9zaGFkb3coJHNoYWRvd194OiAzcHgsICRzaGFkb3dfeTogM3B4LCAkc2hhZG93X3JhZDogM3B4LCAkc2hhZG93X2NvbG9yOiAjZmZmKSB7XG5cdHRleHQtc2hhZG93OiAkc2hhZG93X3ggJHNoYWRvd195ICRzaGFkb3dfcmFkICRzaGFkb3dfY29sb3I7XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZFxuICogVmVuZG9yIHByZWZpeCBubyBsb25nZXIgcmVxdWlyZWQuXG4gKi9cbkBtaXhpbiB2ZXJ0aWNhbF9ncmFkaWVudCgkZnJvbTogIzAwMCwgJHRvOiAjZmZmKSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRmcm9tO1xuXHRiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkZnJvbSwgJHRvKTtcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkXG4gKiBWZW5kb3IgcHJlZml4IG5vIGxvbmdlciByZXF1aXJlZC5cbiAqL1xuQG1peGluIHRyYW5zaXRpb24oJHNlbGVjdG9yOiBhbGwsICRhbmltYXRpb246IGVhc2UtaW4tb3V0LCAkZHVyYXRpb246IC4ycykge1xuXHR0cmFuc2l0aW9uOiAkc2VsZWN0b3IgJGFuaW1hdGlvbiAkZHVyYXRpb247XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZFxuICogVXNlIGJvdXJib24gbWl4aW4gaW5zdGVhZCBgQGluY2x1ZGUgdHJhbnNmb3JtKHNjYWxlKDEuNSkpO2BcbiAqL1xuQG1peGluIHNjYWxlKCRyYXRpbzogMS41KSB7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgkcmF0aW8pO1xuXHR0cmFuc2Zvcm06IHNjYWxlKCRyYXRpbyk7XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZFxuICogVXNlIGJvdXJib24gbWl4aW4gaW5zdGVhZCBgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtgXG4gKi9cbkBtaXhpbiBib3JkZXJib3goKSB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbkBtaXhpbiBkYXJrb3JsaWdodHRleHRzaGFkb3coJGEsICRvcGFjaXR5OiAuOCkge1xuXHRAaWYgbGlnaHRuZXNzKCRhKSA+PSA2NSUge1xuXHRcdEBpbmNsdWRlIHRleHRfc2hhZG93KDAsIC0xcHgsIDAsIHJnYmEoMCwgMCwgMCwgJG9wYWNpdHkpKTtcblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgdGV4dF9zaGFkb3coMCwgMXB4LCAwLCByZ2JhKDI1NSwgMjU1LCAyNTUsICRvcGFjaXR5KSk7XG5cdH1cbn1cblxuLyoqXG4gKiBPYmplY3RzXG4gKi9cbkBtaXhpbiBtZW51KCkge1xuXHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xuXG5cdGxpIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cbn1cblxuQG1peGluIG1lZGlhcmlnaHQoKSB7XG5cdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cblx0aW1nIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHR9XG59XG5cbkBtaXhpbiBtZWRpYWxlZnQoKSB7XG5cdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cblx0aW1nIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHR9XG59XG5cbkBtaXhpbiBpcigpIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHRleHQtaW5kZW50OiAtOTk5OXB4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGhlaWdodDogMWVtO1xuXHR3aWR0aDogMWVtO1xufVxuXG5AbWl4aW4gaWNvbiggJGdseXBoOiBcIlxcZTAwMVwiICkge1xuXHRmb250LWZhbWlseTogJ1dvb0NvbW1lcmNlJztcblx0c3BlYWs6IG5vbmU7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtdmFyaWFudDogbm9ybWFsO1xuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0bGluZS1oZWlnaHQ6IDE7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRtYXJnaW46IDA7XG5cdHRleHQtaW5kZW50OiAwO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogMTAwJTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRjb250ZW50OiAkZ2x5cGg7XG59XG5cbkBtaXhpbiBpY29uYmVmb3JlKCAkZ2x5cGg6IFwiXFxlMDAxXCIgKSB7XG5cdGZvbnQtZmFtaWx5OiAnV29vQ29tbWVyY2UnO1xuXHRzcGVhazogbm9uZTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0Zm9udC12YXJpYW50OiBub3JtYWw7XG5cdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRsaW5lLWhlaWdodDogMTtcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdG1hcmdpbi1yaWdodDogLjYxOGVtO1xuXHRjb250ZW50OiAkZ2x5cGg7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuQG1peGluIGljb25hZnRlciggJGdseXBoOiBcIlxcZTAwMVwiICkge1xuXHRmb250LWZhbWlseTogJ1dvb0NvbW1lcmNlJztcblx0c3BlYWs6IG5vbmU7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtdmFyaWFudDogbm9ybWFsO1xuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0bGluZS1oZWlnaHQ6IDE7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRtYXJnaW4tbGVmdDogLjYxOGVtO1xuXHRjb250ZW50OiAkZ2x5cGg7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuQG1peGluIGxvYWRlcigpIHtcblx0JjpiZWZvcmUge1xuXHRcdGhlaWdodDogMWVtO1xuXHRcdHdpZHRoOiAxZW07XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHRtYXJnaW4tbGVmdDogLS41ZW07XG5cdFx0bWFyZ2luLXRvcDogLS41ZW07XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRAaW5jbHVkZSBhbmltYXRpb24oIHNwaW4gMXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgKTtcblx0XHRiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vLi4vcGx1Z2lucy93b29jb21tZXJjZS9hc3NldHMvaW1hZ2VzL2ljb25zL2xvYWRlci5zdmcpIGNlbnRlciBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3Zlcjtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Zm9udC1zaXplOiAyZW07XG5cdFx0Y29sb3I6IHJnYmEoIzAwMCwwLjc1KTtcblx0fVxufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIl19 */
