a { padding: 0; }

@media (max-width: 700px) { .johnny-utah { content: 'Whoa.'; } }

.clear-lg2 { clear: both; }

@media (max-width: 940px) { .clear-lg2 { clear: none; } }

@media (max-width: 1023px) { .clear-lg1 { clear: none; } }

@media (max-width: 940px) { .clear-lg1 { clear: both; } }

@media (max-width: 700px) { .clear-lg1 { clear: none; } }

.lg2 { display: block; }

@media (max-width: 940px) { .lg2 { display: none; } }

.lg1 { display: none; }

@media (max-width: 940px) { .lg1 { display: block; } }

#wrapper { background: none; }

#header { margin-bottom: 0; }

#container { height: auto; width: 100%; max-width: 100%; padding-top: 0; margin: 0 auto; position: relative; }

.main1 { width: 100%; max-width: 100%; margin-top: 30px; }

@media (max-width: 767px) { .main1 { margin-top: 0; } }

.main1 .mainArea { max-width: 1260px; margin: 0 auto; position: relative; width: 100%; }

@media (max-width: 1400px) { .main1 .mainArea { width: 100%; } }

.noticeBox { float: left; background: #fff; padding: 12px 14px 8px 15px; width: 23.5%; border: 1px solid #e9e9e9; margin-left: 1.5%; position: relative; }

@media (max-width: 1023px) { .noticeBox { width: 31.8%; } }

@media (max-width: 767px) { .noticeBox { width: 48.5%; } }

@media (max-width: 480px) { .noticeBox { width: 98.5%; float: none; margin-bottom: 2%; } }

.noticeBox.first { clear: both; }

@media (max-width: 1023px) { .noticeBox.first { clear: none; float: left; } }

@media (max-width: 480px) { .noticeBox.first { float: none; clear: both; } }

.noticeBox.last { overflow: hidden; }

@media (max-width: 767px) { .noticeBox.last { width: 48.5%; margin-top: 1.5%; clear: both; } }

@media (max-width: 480px) { .noticeBox.last { width: 98.5%; } }

@media (max-width: 1023px) { .noticeBox.mt { margin-top: 20px; } }

.noticeBox h3 { background: url(/static/images/sn/main/bu1.gif) no-repeat left 2px; padding-left: 15px; font-size: 1.1em; margin-bottom: 12px; }

.noticeBox .img { display: block; }

.noticeBox .img img { max-height: 270px; width: 100%; }

@media (max-width: 1023px) { .noticeBox .img img { max-height: none; max-width: none; width: 100%; height: 100%; } }

.noticeBox .tit { clear: both; }

.noticeBox .tit a { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; margin: 10px 0; padding-bottom: 10px; font-weight: bold; }

.noticeBox .date { display: block; text-align: right; color: #666; font-size: 0.9em; }

.noticeBox .nocieList li a { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; background: url(/static/images/sn/main/bu2.gif) no-repeat left 50%; font-size: 0.9em; margin: 10px 0 5px 0; padding-bottom: 0; border: 0; }

.movieBox { float: left; background: #fff; padding: 12px 14px 8px 15px; width: 23.5%; border: 1px solid #e9e9e9; margin-left: 1.5%; position: relative; }

@media (max-width: 1023px) { .movieBox { width: 31.8%; } }

@media (max-width: 767px) { .movieBox { clear: none; width: 48.5%; margin-top: 1.5%; } }

@media (max-width: 480px) { .movieBox { clear: none; float: left; width: 98.5%; margin-top: 0; } }

.movieBox h3 { background: url(/static/images/sn/main/bu1.gif) no-repeat left 2px; padding-left: 15px; font-size: 1.1em; margin-bottom: 12px; }

@media (max-width: 767px) { .movieBox .movieW { float: none; width: 100%; } }

.movieBox .movieW .tit { clear: both; }

.movieBox .movieW .tit a { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; margin: 12px 0 11px 0; padding-bottom: 10px; font-weight: bold; border-bottom: 1px solid #efefef; font-size: 0.95em; }

.movieBox .movieW img { width: 100%; }

.movieBox .movieW .img { width: 100%; position: relative; padding-bottom: 55% !important; padding-top: 5px !important; height: 0; display: block; }

.movieBox .movieW .img iframe { width: 100%; height: 100%; border: 0; position: absolute; }

.movieBox .movieScroll { height: 105px; overflow: auto; font-size: 0.9em; letter-spacing: -1px; line-height: 1.45; margin-bottom: 8px; }

.main1 .main1_con1 { display: block; margin: 0 0 0 -1.5%; }

.main1 .main1_con1:before, .main1 .main1_con1:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }

.main1 .main1_con1 .visual { float: left; position: relative; margin: 0 0 1.5% 1.5%; width: 73.5%; }

@media (max-width: 767px) { .main1 .main1_con1 .visual { background: #fff; width: 98.5%; max-width: inherit; } }

.main1 .main1_con1 .visual .visualArea > div { float: left; }

.main1 .main1_con1 .visual .visualArea > div .visual_img { width: 100%; float: left; }

.main1 .main1_con1 .visual .visualArea > div .visual_img img { width: 100%; }

.main1 .main1_con1 .visual #visualNum { position: absolute; bottom: 0; width: 100%; }

@media (max-width: 480px) { .main1 .main1_con1 .visual #visualNum { position: inherit; } }

.main1 .main1_con1 .visual #visualNum li { width: 32.3%; margin: 0 0.5% 0.5% 0.5%; float: left; position: relative; }

.main1 .main1_con1 .visual #visualNum li a { background-color: #f05291; color: #fff; font-size: 1.1em; font-weight: bold; padding: 1.5%; text-align: center; display: block; }

.main1 .main1_con1 .visual #visualNum li a.active, .main1 .main1_con1 .visual #visualNum li a:hover { background: #46a8ed; }

.main1 .main1_con1 .visual #visualNum li a.active span, .main1 .main1_con1 .visual #visualNum li a:hover span { background: url(/static/images/sn/main/btnDot.png) no-repeat left top; background-size: 100% 100%; }

.main1 .main1_con1 .visual #visualNum li a span { display: block; width: 100%; color: #fff; padding: 2.5%; }

@media (max-width: 480px) { .main1 .main1_con1 .visual #visualNum li a span { font-size: 0.85em; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; } }

.main1 .main1_con1 .visual #visualNum li:first-child:before {display: block; content: ""; width:100px; height:100px; position: absolute; bottom: 30px; top:-96px; left: 0; background: url(/static/images/sn/main/img_mimi.png) no-repeat left top;background-size:auto 100% !important; }

@media (max-width: 767px) { .main1 .main1_con1 .visual #visualNum li:first-child:before { background-size: 70%; bottom: 0px; } }

@media (max-width: 480px) { 
	.main1 .main1_con1 .visual #visualNum li:first-child:before { background-size: 40%; height: 36px; } 
	.main1 .main1_con1 .visual #visualNum li:first-child:before {display: block; content: ""; width:36px; height:36px; position: absolute; bottom: 30px; top:-36px; left: 0; background: url(/static/images/sn/main/img_mimi.png) no-repeat left top;background-size:auto 100% !important; }
}

.main1 .main1_con1 .info { float: left; width: 23.5%; margin-left: 1.5%; }

@media (max-width: 767px) { .main1 .main1_con1 .info { width: 48.5%; } }

@media (max-width: 480px) { .main1 .main1_con1 .info { width: 98.5%; margin-bottom: 2%; } }

.main1 .main1_con1 .info h2 { position: relative; padding-bottom: 8px; }

@media (max-width: 1260px) { .main1 .main1_con1 .info h2 { padding-bottom: 3px; } }

.main1 .main1_con1 .info h2:before { position: absolute; top: -4px; right: -12px; content: " "; background: url(/static/images/sn/main/ico_jadu.png) no-repeat right top; width: 100%; z-index: 1; height: 130px; }

@media (max-width: 1260px) { .main1 .main1_con1 .info h2:before { background-size: auto 100%; height: 100%; right: 0; } }

.main1 .main1_con1 .info h2 img { max-width: 100%; width: inherit; }

@media (max-width: 767px) { .main1 .main1_con1 .info h2 img { max-width: inherit; width: 100%; } }

.main1 .main1_con1 .info ul { margin-top: -2px; }

.main1 .main1_con1 .info ul li { border: 1px solid #e9e9e9; position: relative; margin-top: 1%; font-weight: bold; }

@media (max-width: 767px) { .main1 .main1_con1 .info ul li { margin-top: 4.5px; } }

.main1 .main1_con1 .info ul li > a { font-size: 1.1em; padding: 8.5% 0 8.5% 45%; display: block; }

@media (max-width: 1023px) { .main1 .main1_con1 .info ul li > a { padding: 7% 0 7% 30%; } }

@media (max-width: 767px) { .main1 .main1_con1 .info ul li > a { padding: 9.2% 0 9.2% 45%; } }

.main1 .main1_con1 .info ul li.info1 a { background: #fff url(/static/images/sn/main/img_info1.gif) no-repeat 18% center; background-size: 21%; margin-top: 0; }

.main1 .main1_con1 .info ul li.info2 a { background: #fff url(/static/images/sn/main/img_info2.gif) no-repeat 18% center; background-size: 21%; }

.main1 .main1_con1 .info ul li.info3 a { background: #fff url(/static/images/sn/main/img_info3.gif) no-repeat 18% center; background-size: 21%; }

@media (max-width: 1023px) { .main1 .main1_con1 .info ul li[class*="info"] { background-position: 12% center; background-size: 15%; } }

@media (max-width: 767px) { .main1 .main1_con1 .info ul li[class*="info"] { background-position: 18% center; background-size: 21%; } }

.main1 .main1_con2R { float: left; width: 23.5%; margin-left: 1.5%; }

@media (max-width: 1023px) { .main1 .main1_con2R { float: left; width: 100%; margin-top: 2%; margin-left: 0; } }

@media (max-width: 767px) { .main1 .main1_con2R { clear: both; } }

@media (max-width: 480px) { .main1 .main1_con2R { width: 98.5%; margin-left: 1.5%; } }

.main1 .main1_con2R .tabInfo { background: #fff; min-height: 170px; border: 1px solid #e9e9e9; border-top: 0; margin-bottom: 10px; }

@media (max-width: 1023px) { .main1 .main1_con2R .tabInfo { width: 65%; float: left; margin-left: 1.5%; } }

@media (max-width: 767px) { .main1 .main1_con2R .tabInfo { width: 48.5%; } }

@media (max-width: 480px) { .main1 .main1_con2R .tabInfo { width: 100%; margin-left: 0; } }

.main1 .main1_con2R .tabInfo > ul { position: relative; }

.main1 .main1_con2R .tabInfo > ul > li { margin-left: 1px; margin: 0 0 1.5% 0; }

.main1 .main1_con2R .tabInfo > ul > li > a { display: inline-block; text-align: left; color: #5c5c5c; padding: 11px 0; background: #d9dbde; font-size: 1em; }

.main1 .main1_con2R .tabInfo > ul > li > a.on { display: block; width: 100%; color: #333; border-bottom: 1px solid #fff; background: url(/static/images/sn/common/bu_arr_down.png) no-repeat right center; padding: 3% 0 0 5%; margin-left: -1px; font-size: 1.1em; font-weight: bold; }

.main1 .main1_con2R .tabInfo_area { position: absolute; top: 30px; left: 0; width: 100%; padding: 13px 13px 0 15px; display: none; }

.main1 .main1_con2R .tabInfo_area > ul > li { margin: 0.5em 0; float: none; overflow: hidden; }

.main1 .main1_con2R .tabInfo_area > ul > li > a { font-size: 0.95em; text-align: left; line-height: 129%; color: #333; background: none; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; background: url(/static/images/sn/main/bu2.gif) no-repeat left 8px; padding: 1px 0 1px 10px; }

.main1 .main1_con2R .tabInfo_area .tabmore { margin-top: 14px; }

.main1 .main1_con2R .tabInfo_area .tabmore a { text-align: center; display: block; color: #969696; font-size: 0.95em; border-top: 1px solid #ddd; padding-top: 3px; }

.main1 .main1_con2R .service { margin-left: 1.5%; width: 98.5%; }

@media (max-width: 1023px) { .main1 .main1_con2R .service { width: 31.8%; float: left; } }

@media (max-width: 767px) { .main1 .main1_con2R .service { width: 48.5%; } }

@media (max-width: 480px) { .main1 .main1_con2R .service { width: 100%; margin-left: 0; } }

.main1 .main1_con2R .service ul { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: block; margin-left: -1%; }

.main1 .main1_con2R .service ul li { float: left; width: 32.3%; margin-left: 1%; background: #fff; }

.main1 .main1_con2R .service ul li a { display: block; }

.main1 .main1_con2R .service ul li a img { width: 100%; }

.main1 .main1_con2R .service ul li a p { line-height: 1.2; text-align: center; color: #5d5d5d; background: url(/static/images/sn/main/arr.gif) no-repeat center bottom; font-size: 0.9em; padding-bottom: 20px; margin: 16% 0; font-weight: bold; }

.more { position: absolute; top: 0; right: 1.5%; }

.more a { display: block; padding: 10px; }

.f_menu { margin-top: 0; }

.bannerZone { border-bottom: 1px solid #e5e5e5; padding: 11px 0; position: relative; overflow: hidden; }

.bannerZone .banner_ctl { float: left; width: 200px; padding: 10px 0 0  32px; }

@media (max-width: 767px) { .bannerZone .banner_ctl { display: none; } }

.bannerZone .banner_ctl h2 { font-size: 1.05em; margin-bottom: 8px; color: #fff; }

@media (max-width: 767px) { .bannerZone .banner_ctl h2 { display: none; } }

@media (max-width: 767px) { .bannerZone .banner_btn { display: none; } }

.bannerZone .banner_btn a, .bannerZone .banner_btn button { display: inline-block; }

.bannerZone .banner_btn .btnStop { background: url(/static/images/common/btn_banner_stop.gif) no-repeat left top; width: 20px; height: 20px; z-index: 100; text-indent: -999em; }

.bannerZone .banner_btn .btnStop.paused { display: none; }

.bannerZone .banner_btn .btnPlay { display: none; background: url(/static/images/common/btn_banner_play.gif) no-repeat left top; width: 20px; height: 20px; z-index: 100; text-indent: -999em; }

.bannerZone .banner_btn .btnPlay.on { display: inline-block; }

.bannerZone .banner { overflow: hidden; margin: 0 40px; }

.bannerZone .banner ul li { float: left; margin: 5px 0; text-align: center; }

.bannerZone .banner ul li img { max-width: 100%; }

.bannerZone .banner .slick-prev { background: url(/static/images/common/btn_banner_left.gif) no-repeat left top; width: 22px; height: 46px; position: absolute; top: 50%; margin-top: -23px; left: 170px; text-indent: -999em; }

@media (max-width: 767px) { .bannerZone .banner .slick-prev { left: 12px; } }

.bannerZone .banner .slick-next { background: url(/static/images/common/btn_banner_right.gif) no-repeat left top; width: 22px; height: 46px; position: absolute; top: 50%; margin-top: -23px; right: 0; text-indent: -999em; }

@media (max-width: 1260px) { .bannerZone .banner .slick-next { right: 12px; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic24vbWFpbi5jc3MiLCJzb3VyY2VzIjpbInNuL21haW4uc2NzcyIsIl9icmVha3BvaW50LnNjc3MiLCJicmVha3BvaW50L19zZXR0aW5ncy5zY3NzIiwiYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiYnJlYWtwb2ludC9fcGFyc2Vycy5zY3NzIiwiYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9zaW5nbGUvX2RlZmF1bHQuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RvdWJsZS1zdHJpbmcuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvdHJpcGxlL19kZWZhdWx0LnNjc3MiLCJicmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsImJyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCJicmVha3BvaW50L19uby1xdWVyeS5zY3NzIiwiYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiLCJzbi9iYXNlLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJ1dGYtOFwiO1xyXG5AaW1wb3J0ICcuLi9icmVha3BvaW50JztcclxuQGltcG9ydCAnYmFzZS5zY3NzJztcclxuXHJcbiN3cmFwcGVye2JhY2tncm91bmQ6bm9uZX1cclxuI2hlYWRlcnttYXJnaW4tYm90dG9tOjA7fVxyXG4jY29udGFpbmVye2hlaWdodDphdXRvO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZy10b3A6MDttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0aXZlfVxyXG5cclxuXHQubWFpbjF7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTttYXJnaW4tdG9wOjMwcHg7XHJcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDowO1xyXG5cdFx0XHR9XHJcblx0XHQubWFpbkFyZWF7bWF4LXdpZHRoOjEyNjBweDttYXJnaW46MCBhdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMyl7XHJcblx0XHRcdFx0d2lkdGg6OTglO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuLm5vdGljZUJveHtmbG9hdDpsZWZ0O2JhY2tncm91bmQ6I2ZmZjtwYWRkaW5nOjEycHggMTRweCA4cHggMTVweDt3aWR0aDoyMy41JTtib3JkZXI6MXB4IHNvbGlkICNlOWU5ZTk7bWFyZ2luLWxlZnQ6MS41JTtwb3NpdGlvbjpyZWxhdGl2ZTtcclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcyKXtcclxuXHRcdFx0XHR3aWR0aDozMS44JTtcclxuXHRcdFx0fVxyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0d2lkdGg6NDguNSU7XHJcblx0XHRcdH1cclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0XHRcdHdpZHRoOjk4LjUlO2Zsb2F0Om5vbmU7bWFyZ2luLWJvdHRvbToyJTtcclxuXHRcdFx0fVxyXG5cdFx0Ji5maXJzdHtjbGVhcjpib3RoO1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0XHRcdGNsZWFyOm5vbmU7ZmxvYXQ6bGVmdDtcclxuXHRcdFx0fVxyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZCl7XHJcblx0XHRcdFx0ZmxvYXQ6bm9uZTtjbGVhcjpib3RoO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQmLmxhc3R7b3ZlcmZsb3c6aGlkZGVuO1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0d2lkdGg6NDguNSU7bWFyZ2luLXRvcDoxLjUlO2NsZWFyOmJvdGg7XHJcblx0XHRcdH1cclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0XHRcdHdpZHRoOjk4LjUlO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQmLm10e1xyXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMil7bWFyZ2luLXRvcDoyMHB4O31cclxuXHRcdFx0fVxyXG5cdFx0aDN7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvc24vbWFpbi9idTEuZ2lmKSBuby1yZXBlYXQgbGVmdCAycHg7cGFkZGluZy1sZWZ0OjE1cHg7Zm9udC1zaXplOjEuMWVtO21hcmdpbi1ib3R0b206MTJweH1cclxuXHRcdC5pbWd7ZGlzcGxheTpibG9jaztcclxuXHRcdFx0aW1ne21heC1oZWlnaHQ6MjcwcHg7d2lkdGg6MTAwJTtcclxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0XHRcdFx0bWF4LWhlaWdodDpub25lO1xyXG5cdFx0XHRcdFx0bWF4LXdpZHRoOm5vbmU7XHJcblx0XHRcdFx0XHR3aWR0aDoxMDAlO2hlaWdodDoxMDAlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQudGl0e2NsZWFyOmJvdGg7fVxyXG5cdFx0LnRpdCBhe1xyXG5cdFx0XHRAaW5jbHVkZSBlbGw7bWFyZ2luOjEwcHggMDtwYWRkaW5nLWJvdHRvbToxMHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7XHJcblx0XHR9XHJcblx0XHQuZGF0ZXtkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246cmlnaHQ7Y29sb3I6IzY2Njtmb250LXNpemU6MC45ZW19XHJcblx0XHQubm9jaWVMaXN0e1xyXG5cdFx0XHRsaSBhe0BpbmNsdWRlIGVsbDtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9zbi9tYWluL2J1Mi5naWYpIG5vLXJlcGVhdCBsZWZ0IDUwJTtmb250LXNpemU6MC45ZW07bWFyZ2luOjEwcHggMCA1cHggMDtwYWRkaW5nLWJvdHRvbTowO2JvcmRlcjowO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHR9XHJcbi5tb3ZpZUJveHtmbG9hdDpsZWZ0O2JhY2tncm91bmQ6I2ZmZjtwYWRkaW5nOjEycHggMTRweCA4cHggMTVweDt3aWR0aDoyMy41JTtib3JkZXI6MXB4IHNvbGlkICNlOWU5ZTk7bWFyZ2luLWxlZnQ6MS41JTtwb3NpdGlvbjpyZWxhdGl2ZTtcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0XHR3aWR0aDozMS44JTtcclxuXHRcdH1cclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRjbGVhcjpub25lO3dpZHRoOjQ4LjUlO21hcmdpbi10b3A6MS41JTtcclxuXHR9XHJcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0Y2xlYXI6bm9uZTtmbG9hdDpsZWZ0O3dpZHRoOjk4LjUlO21hcmdpbi10b3A6MDtcclxuXHR9XHJcblx0aDN7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvc24vbWFpbi9idTEuZ2lmKSBuby1yZXBlYXQgbGVmdCAycHg7cGFkZGluZy1sZWZ0OjE1cHg7Zm9udC1zaXplOjEuMWVtO21hcmdpbi1ib3R0b206MTJweH1cclxuXHQubW92aWVXe1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC50aXR7Y2xlYXI6Ym90aDt9XHJcblx0XHRcdC50aXQgYXtcclxuXHRcdFx0XHRAaW5jbHVkZSBlbGw7bWFyZ2luOjEycHggMCAxMXB4IDA7cGFkZGluZy1ib3R0b206MTBweDtmb250LXdlaWdodDpib2xkO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZmVmZWY7Zm9udC1zaXplOjAuOTVlbTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpbWd7d2lkdGg6MTAwJTt9XHJcblx0XHRcdC5pbWd7d2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO3BhZGRpbmctYm90dG9tOiA1NSUgIWltcG9ydGFudDtwYWRkaW5nLXRvcDogNXB4ICFpbXBvcnRhbnQ7aGVpZ2h0OiAwO2Rpc3BsYXk6YmxvY2s7XHJcblx0XHRcdFx0aWZyYW1le3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7cG9zaXRpb246YWJzb2x1dGU7fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQubW92aWVTY3JvbGx7aGVpZ2h0OjEwNXB4O292ZXJmbG93OmF1dG87Zm9udC1zaXplOjAuOWVtO2xldHRlci1zcGFjaW5nOi0xcHg7bGluZS1oZWlnaHQ6MS40NTttYXJnaW4tYm90dG9tOjhweDtcclxuXHRcdH1cclxuXHRcdFxyXG5cclxufVxyXG5cclxuXHJcbi5tYWluMXtcclxuXHQubWFpbjFfY29uMXtAaW5jbHVkZSBjbGVhcmZpeDttYXJnaW46MCAwIDAgLTEuNSU7XHJcblx0XHQvLyBAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0Ly8gXHRcdHdpZHRoOjEwMCU7XHJcblx0XHQvLyBcdH1cclxuXHRcdC52aXN1YWx7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MCAwIDEuNSUgMS41JTt3aWR0aDo3My41JTtcclxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiNmZmY7d2lkdGg6OTguNSU7bWF4LXdpZHRoOmluaGVyaXQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQudmlzdWFsQXJlYXtcclxuXHRcdFx0XHQ+ZGl2e2Zsb2F0OmxlZnQ7XHJcblx0XHRcdFx0XHQudmlzdWFsX2ltZ3t3aWR0aDoxMDAlO2Zsb2F0OmxlZnQ7XHJcblx0XHRcdFx0XHRcdGltZ3t3aWR0aDoxMDAlfVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHQjdmlzdWFsTnVte3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO3dpZHRoOjEwMCU7XHJcblx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0XHRcdFx0cG9zaXRpb246aW5oZXJpdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGl7d2lkdGg6MzIuMyU7bWFyZ2luOjAgMC41JSAwLjUlIDAuNSU7ZmxvYXQ6bGVmdDtwb3NpdGlvbjpyZWxhdGl2ZTtcclxuXHRcdFx0XHRcdGF7YmFja2dyb3VuZC1jb2xvcjokY29yX3Bpbms7Y29sb3I6I2ZmZjtmb250LXNpemU6MS4xZW07Zm9udC13ZWlnaHQ6Ym9sZDtwYWRkaW5nOjEuNSU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpibG9jaztcclxuXHRcdFx0XHRcdFx0Ji5hY3RpdmUsICY6aG92ZXJ7YmFja2dyb3VuZDojNDZhOGVkO1xyXG5cdFx0XHRcdFx0XHRcdHNwYW57YmFja2dyb3VuZDogdXJsKC9zdGF0aWMvaW1hZ2VzL3NuL21haW4vYnRuRG90LnBuZykgbm8tcmVwZWF0IGxlZnQgdG9wO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHNwYW57ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2NvbG9yOiNmZmY7cGFkZGluZzoyLjUlO1xyXG5cdFx0XHRcdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKXtcclxuXHRcdFx0XHRcdFx0XHRmb250LXNpemU6MC44NWVtO0BpbmNsdWRlIGVsbDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCY6Zmlyc3QtY2hpbGQ6YmVmb3Jle2Rpc3BsYXk6YmxvY2s7Y29udGVudDpcIlwiO3dpZHRoOjEwMHB4O2hlaWdodDoxMDBweDtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MzBweDtsZWZ0OjA7YmFja2dyb3VuZDogdXJsKC9zdGF0aWMvaW1hZ2VzL3NuL21haW4vaW1nX21pbWkucG5nKSBuby1yZXBlYXQgbGVmdCB0b3A7XHJcblx0XHRcdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnKXtcclxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6NzAlO2JvdHRvbTowcHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtc2l6ZTo0MCU7aGVpZ2h0OjY1cHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyAjdmlzdWFsTnVte3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO3dpZHRoOjEwMCU7XHJcblx0XHRcdC8vIFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0XHQvLyBcdFx0cG9zaXRpb246aW5oZXJpdDtcclxuXHRcdFx0Ly8gXHR9XHJcblx0XHRcdC8vIFx0YXt3aWR0aDozMi45JTttYXJnaW46MSUgMC4yJTtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiRjb3JfcGluaztjb2xvcjojZmZmO2ZvbnQtc2l6ZToxLjFlbTtmb250LXdlaWdodDpib2xkO3BhZGRpbmc6MC41JTt0ZXh0LWFsaWduOmNlbnRlcjtcclxuXHRcdFx0Ly8gXHRcdCYuYWN0aXZle2JhY2tncm91bmQ6IzQ2YThlZDtcclxuXHRcdFx0Ly8gXHRcdFx0Ly9zcGFue2JvcmRlcjoxcHggZG90dGVkICNmZmY7fVxyXG5cdFx0XHQvLyBcdFx0XHRzcGFue2JhY2tncm91bmQ6IHVybCgvc3RhdGljL2ltYWdlcy9zbi9tYWluL2J0bkRvdC5wbmcpIG5vLXJlcGVhdCBsZWZ0IHRvcDtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO31cclxuXHRcdFx0Ly8gXHRcdH1cclxuXHRcdFx0Ly8gXHRcdHNwYW57ZGlzcGxheTpibG9jaztwYWRkaW5nOjMuMiU7XHJcblx0XHRcdC8vIFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKXtcclxuXHRcdFx0Ly8gXHRcdFx0XHRmb250LXNpemU6MC44NWVtO0BpbmNsdWRlIGVsbDtcclxuXHRcdFx0Ly8gXHRcdFx0fVxyXG5cdFx0XHQvLyBcdFx0fVxyXG5cdFx0XHQvLyBcdH1cclxuXHRcdFx0Ly8gfVxyXG5cdFx0fVxyXG5cdFx0LmluZm97ZmxvYXQ6bGVmdDt3aWR0aDoyMy41JTttYXJnaW4tbGVmdDoxLjUlO1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0XHR3aWR0aDo0OC41JTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKXtcclxuXHRcdFx0XHRcdHdpZHRoOjk4LjUlO21hcmdpbi1ib3R0b206MiU7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0aDJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1ib3R0b206OHB4O1xyXG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnNCl7XHJcblx0XHRcdFx0XHRwYWRkaW5nLWJvdHRvbTozcHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCY6YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO3RvcDotNHB4O3JpZ2h0Oi0xMnB4O2NvbnRlbnQ6XCIgXCI7YmFja2dyb3VuZDogdXJsKC9zdGF0aWMvaW1hZ2VzL3NuL21haW4vaWNvX2phZHUucG5nKSBuby1yZXBlYXQgcmlnaHQgdG9wO3dpZHRoOjEwMCU7ei1pbmRleDoxO2hlaWdodDoxMzBweDtcclxuXHRcdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnNCl7XHJcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtc2l6ZTphdXRvIDEwMCU7aGVpZ2h0OjEwMCU7cmlnaHQ6MDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0IGltZ3ttYXgtd2lkdGg6MTAwJTt3aWR0aDppbmhlcml0O1xyXG5cdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcpe1xyXG5cdFx0XHRcdFx0XHRtYXgtd2lkdGg6aW5oZXJpdDt3aWR0aDoxMDAlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHR1bHttYXJnaW4tdG9wOi0ycHg7XHJcblx0XHRcdFx0bGl7Ym9yZGVyOjFweCBzb2xpZCAjZTllOWU5O3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6MSU7Zm9udC13ZWlnaHQ6Ym9sZDtcclxuXHRcdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnKXtcclxuXHRcdFx0XHRcdFx0bWFyZ2luLXRvcDo0LjVweDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdD5he2ZvbnQtc2l6ZToxLjFlbTtwYWRkaW5nOjguNSUgMCA4LjUlIDQ1JTtkaXNwbGF5OmJsb2NrO1xyXG5cdFx0XHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6NyUgMCA3JSAzMCU7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcpe1xyXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6OS4yJSAwIDkuMiUgNDUlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQmLmluZm8xIGF7YmFja2dyb3VuZDojZmZmIHVybCgvc3RhdGljL2ltYWdlcy9zbi9tYWluL2ltZ19pbmZvMS5naWYpIG5vLXJlcGVhdCAxOCUgY2VudGVyO2JhY2tncm91bmQtc2l6ZToyMSU7bWFyZ2luLXRvcDowO31cclxuXHRcdFx0XHRcdCYuaW5mbzIgYXtiYWNrZ3JvdW5kOiNmZmYgdXJsKC9zdGF0aWMvaW1hZ2VzL3NuL21haW4vaW1nX2luZm8yLmdpZikgbm8tcmVwZWF0IDE4JSBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjIxJTt9XHJcblx0XHRcdFx0XHQmLmluZm8zIGF7YmFja2dyb3VuZDojZmZmIHVybCgvc3RhdGljL2ltYWdlcy9zbi9tYWluL2ltZ19pbmZvMy5naWYpIG5vLXJlcGVhdCAxOCUgY2VudGVyO2JhY2tncm91bmQtc2l6ZToyMSU7fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaVtjbGFzcyo9XCJpbmZvXCJde1xyXG5cdFx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcyKXtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbjoxMiUgY2VudGVyO2JhY2tncm91bmQtc2l6ZToxNSU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZyl7XHJcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtcG9zaXRpb246MTglIGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6MjElO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQubWFpbjFfY29uMlJ7ZmxvYXQ6bGVmdDt3aWR0aDoyMy41JTttYXJnaW4tbGVmdDoxLjUlO1xyXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcyKXtcclxuXHRcdFx0ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO21hcmdpbi10b3A6MiU7bWFyZ2luLWxlZnQ6MDtcclxuXHRcdH1cclxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnKXtcclxuXHRcdFx0XHRcdGNsZWFyOmJvdGg7XHJcblx0XHRcdFx0fVxyXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWQpe1xyXG5cdFx0XHRcdHdpZHRoOjk4LjUlO21hcmdpbi1sZWZ0OjEuNSU7XHJcblx0XHRcdH1cclxuXHRcdC50YWJJbmZve2JhY2tncm91bmQ6I2ZmZjttaW4taGVpZ2h0OjE3MHB4O2JvcmRlcjoxcHggc29saWQgI2U5ZTllOTtib3JkZXItdG9wOjA7bWFyZ2luLWJvdHRvbToxMHB4O1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0XHRcdHdpZHRoOjY1JTtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjEuNSU7XHJcblx0XHRcdH1cclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcpe1xyXG5cdFx0XHRcdHdpZHRoOjQ4LjUlO1xyXG5cdFx0XHR9XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKXtcclxuXHRcdFx0XHR3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdC50YWJJbmZvPnVse3Bvc2l0aW9uOnJlbGF0aXZlO31cclxuXHRcdC50YWJJbmZvPnVsID4gbGl7bWFyZ2luLWxlZnQ6MXB4O21hcmdpbjowIDAgMS41JSAwO31cclxuXHRcdC8vIC50YWJJbmZvLnRhYkluZm8xPnVsID4gbGl7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDowO21hcmdpbjowIDAgMS41JSAwO3dpZHRoOjUwJTt9XHJcblx0XHQudGFiSW5mbz51bCA+IGxpID4gYXtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6IzVjNWM1YztwYWRkaW5nOjExcHggMDtiYWNrZ3JvdW5kOiNkOWRiZGU7Zm9udC1zaXplOjFlbTt9XHJcblx0XHQudGFiSW5mbz4gdWwgPiBsaSA+IGEub257ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2NvbG9yOiMzMzM7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZjtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9zbi9jb21tb24vYnVfYXJyX2Rvd24ucG5nKSBuby1yZXBlYXQgcmlnaHQgY2VudGVyO3BhZGRpbmc6MyUgMCAwIDUlO21hcmdpbi1sZWZ0Oi0xcHg7Zm9udC1zaXplOjEuMWVtO2ZvbnQtd2VpZ2h0OmJvbGQ7fVxyXG5cdFx0Ly8gLnRhYkluZm8udGFiSW5mbzE+IHVsID4gbGkgPiBhe2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlOWU5ZTk7fVxyXG5cdFx0LnRhYkluZm9fYXJlYXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MzBweDtsZWZ0OjA7d2lkdGg6MTAwJTtwYWRkaW5nOjEzcHggMTNweCAwIDE1cHg7ZGlzcGxheTpub25lO31cclxuXHRcdC50YWJJbmZvX2FyZWE+dWw+bGl7bWFyZ2luOjAuNWVtIDA7ZmxvYXQ6bm9uZTtvdmVyZmxvdzpoaWRkZW47fVxyXG5cdFx0LnRhYkluZm9fYXJlYT51bD5saT5he2ZvbnQtc2l6ZTowLjk1ZW07dGV4dC1hbGlnbjpsZWZ0O2xpbmUtaGVpZ2h0OjEyOSU7Y29sb3I6IzMzMztiYWNrZ3JvdW5kOm5vbmU7IEBpbmNsdWRlIGVsbDtiYWNrZ3JvdW5kOnVybCgvc3RhdGljL2ltYWdlcy9zbi9tYWluL2J1Mi5naWYpIG5vLXJlcGVhdCBsZWZ0IDhweDtwYWRkaW5nOjFweCAwIDFweCAxMHB4O31cclxuXHRcdC50YWJJbmZvX2FyZWEgLnRhYm1vcmV7bWFyZ2luLXRvcDoxNHB4O31cclxuXHRcdC50YWJJbmZvX2FyZWEgLnRhYm1vcmUgYXt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrO2NvbG9yOiM5Njk2OTY7Zm9udC1zaXplOjAuOTVlbTtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO3BhZGRpbmctdG9wOjNweDt9XHJcblx0XHQuc2VydmljZXttYXJnaW4tbGVmdDoxLjUlO3dpZHRoOjk4LjUlO1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzIpe1xyXG5cdFx0XHRcdHdpZHRoOjMxLjglO2Zsb2F0OmxlZnQ7XHJcblx0XHRcdH1cclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcpe1xyXG5cdFx0XHRcdHdpZHRoOjQ4LjUlO1xyXG5cdFx0XHR9XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKXtcclxuXHRcdFx0XHR3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjA7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdHVse0BpbmNsdWRlIGVsbDttYXJnaW4tbGVmdDotMSU7XHJcblx0XHRcdFx0bGl7ZmxvYXQ6bGVmdDt3aWR0aDozMi4zJTttYXJnaW4tbGVmdDoxJTtiYWNrZ3JvdW5kOiNmZmY7XHJcblx0XHRcdFx0XHRhe2Rpc3BsYXk6YmxvY2s7XHJcblx0XHRcdFx0XHRcdGltZ3t3aWR0aDoxMDAlfVxyXG5cdFx0XHRcdFx0XHRwe2xpbmUtaGVpZ2h0OjEuMjt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjokY29yX2dyYXk7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvc24vbWFpbi9hcnIuZ2lmKSBuby1yZXBlYXQgY2VudGVyIGJvdHRvbTtmb250LXNpemU6MC45ZW07cGFkZGluZy1ib3R0b206MjBweDttYXJnaW46MTYlIDA7Zm9udC13ZWlnaHQ6Ym9sZDt9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5cclxuLm1vcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MS41JTtcclxuXHRhe2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxMHB4O31cclxufVxyXG5cclxuLmZfbWVudXttYXJnaW4tdG9wOjB9XHJcbi5iYW5uZXJab25le2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNWU1ZTU7cGFkZGluZzoxMXB4IDA7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHQuYmFubmVyX2N0bHtmbG9hdDogbGVmdDsgd2lkdGg6IDIwMHB4OyBwYWRkaW5nOjEwcHggMCAwICAzMnB4O1xyXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcpIHtcclxuXHRcdCBcdGRpc3BsYXk6bm9uZTtcclxuXHRcdCB9XHJcblx0XHRoMntmb250LXNpemU6MS4wNWVtO21hcmdpbi1ib3R0b206OHB4O2NvbG9yOiNmZmY7XHJcblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnKSB7XHJcblx0XHRcdCBcdGRpc3BsYXk6bm9uZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHQuYmFubmVyX2J0bntcclxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnKSB7XHJcblx0XHQgXHRkaXNwbGF5Om5vbmU7XHJcblx0XHR9XHJcblx0XHRhLCBidXR0b257ZGlzcGxheTogaW5saW5lLWJsb2NrfVxyXG5cdFx0LmJ0blN0b3B7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J0bl9iYW5uZXJfc3RvcC5naWYpIG5vLXJlcGVhdCBsZWZ0IHRvcDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O3otaW5kZXg6MTAwO3RleHQtaW5kZW50Oi05OTllbTtcclxuXHRcdCYucGF1c2Vke2Rpc3BsYXk6bm9uZTt9XHJcblx0XHR9XHJcblx0XHQuYnRuUGxheXtkaXNwbGF5Om5vbmU7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J0bl9iYW5uZXJfcGxheS5naWYpIG5vLXJlcGVhdCBsZWZ0IHRvcDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O3otaW5kZXg6MTAwO3RleHQtaW5kZW50Oi05OTllbTtcclxuXHRcdFx0Ji5vbntkaXNwbGF5OmlubGluZS1ibG9ja31cclxuXHRcdH1cclxuXHR9XHJcblx0LmJhbm5lciB7b3ZlcmZsb3c6IGhpZGRlbjttYXJnaW46MCA0MHB4O1xyXG5cdFx0dWx7XHJcblx0XHRcdGxpeyBmbG9hdDpsZWZ0O21hcmdpbjo1cHggMDt0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0aW1ne21heC13aWR0aDoxMDAlO31cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0LnNsaWNrLXByZXZ7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J0bl9iYW5uZXJfbGVmdC5naWYpIG5vLXJlcGVhdCBsZWZ0IHRvcDt3aWR0aDoyMnB4O2hlaWdodDo0NnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWFyZ2luLXRvcDotMjNweDtsZWZ0OjE3MHB4O3RleHQtaW5kZW50Oi05OTllbTtcclxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcpIHtcclxuXHRcdFx0IFx0bGVmdDoxMnB4O1xyXG5cdFx0XHQgfVxyXG5cdFx0fVxyXG5cdFx0LnNsaWNrLW5leHR7YmFja2dyb3VuZDp1cmwoL3N0YXRpYy9pbWFnZXMvY29tbW9uL2J0bl9iYW5uZXJfcmlnaHQuZ2lmKSBuby1yZXBlYXQgbGVmdCB0b3A7d2lkdGg6MjJweDtoZWlnaHQ6NDZweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO21hcmdpbi10b3A6LTIzcHg7cmlnaHQ6MDsgdGV4dC1pbmRlbnQ6LTk5OWVtO1xyXG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzQpIHtcclxuXHRcdFx0IFx0cmlnaHQ6MTJweDtcclxuXHRcdFx0IH1cclxuXHRcdH1cclxuXHR9XHJcbn1cdCIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCAnLi4vYnJlYWtwb2ludCc7XHJcbiRsZzQgOiBtYXgtd2lkdGggIDEyNjBweDtcclxuJGxnMyA6IG1heC13aWR0aCAgMTQwMHB4O1xyXG4kbGcyIDogbWF4LXdpZHRoICAxMDIzcHg7XHJcbiRsZzEgOiBtYXgtd2lkdGggIDk0MHB4O1xyXG4kbGcgOiBtYXgtd2lkdGggIDc2N3B4O1xyXG4kbGd4IDogbWF4LXdpZHRoIDcwMHB4O1xyXG4kbWcgOiBtYXgtd2lkdGggNjQwcHg7XHJcbiRtZCA6IG1heC13aWR0aCA0ODBweDtcclxuJHNtIDogbWF4LXdpZHRoIDM2MHB4O1xyXG4keHMgOiBtYXgtd2lkdGggMzIwcHg7XHJcblxyXG4kY29yX2JsdWU6IzMxNDM2YjtcclxuJGNvcl9ibHVlMjojNjM3ZmQyO1xyXG4kY29yX3Bpbms6I2YwNTI5MTtcclxuJGNvcl9ncmF5OiM1ZDVkNWQ7XHJcbiRjb3JfZGFya2dyYXk6IzMzMztcclxuJG1sOjIwcHg7XHJcblxyXG5he3BhZGRpbmc6MDt9XHJcbiAuam9obm55LXV0YWgge1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxneCkge1xyXG4gICAgY29udGVudDogJ1dob2EuJztcclxuICB9XHJcbiAgXHJcbn1cclxuQG1peGluIGVsbHtcclxuIG92ZXJmbG93OmhpZGRlbjtcclxuIHdoaXRlLXNwYWNlOm5vd3JhcDtcclxuIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7XHJcbiBkaXNwbGF5OmJsb2NrO1xyXG59XHJcbkBtaXhpbiBjbGVhcmZpeCB7IGRpc3BsYXk6IGJsb2NrOyBcclxuXHQmOmJlZm9yZSwmOmFmdGVyeyBjb250ZW50OiBcIi5cIjsgZGlzcGxheTogYmxvY2s7IGhlaWdodDogMDsgY2xlYXI6IGJvdGg7IHZpc2liaWxpdHk6IGhpZGRlbjsgfVxyXG59XHJcblxyXG4uY2xlYXItbGcye2NsZWFyOmJvdGg7XHJcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcxKSB7Y2xlYXI6bm9uZX1cclxufVxyXG4uY2xlYXItbGcxe1xyXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMikge2NsZWFyOm5vbmV9XHJcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbGcxKSB7Y2xlYXI6Ym90aH1cclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZ3gpIHtjbGVhcjpub25lfVxyXG59XHJcbi5sZzJ7ZGlzcGxheTpibG9jaztcclxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRsZzEpIHtcclxuXHRcdFx0ZGlzcGxheTpub25lO1xyXG5cdFx0fVxyXG59XHJcbi5sZzF7ZGlzcGxheTpub25lO1xyXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxnMSkge1xyXG5cdFx0XHRkaXNwbGF5OmJsb2NrO1xyXG5cdFx0fVxyXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBb0JtQkEsQUFBQSxDQUFDLENBQUEsRUFBQyxPQUFPLEVBQUMsQ0FBQyxHQUFJOztBbkI2Q1gsTUFBTSxFQUFHLFNBQVMsRUFBRSxLQUFLLEltQjVDNUIsQUFBQSxZQUFZLENBQUMsRUFFVixPQUFPLEVBQUUsT0FBTyxHQUduQjs7QUFXRCxBQUFBLFVBQVUsQ0FBQSxFQUFDLEtBQUssRUFBQyxJQUFJLEdBRXBCOztBbkIwQkcsTUFBTSxFQUFHLFNBQVMsRUFBRSxLQUFLLEltQjVCN0IsQUFBQSxVQUFVLENBQUEsRUFDa0IsS0FBSyxFQUFDLElBQUksR0FDckM7O0FuQjBCRyxNQUFNLEVBQUcsU0FBUyxFQUFFLE1BQU0sSW1CekI5QixBQUFBLFVBQVUsQ0FBQSxFQUNrQixLQUFLLEVBQUMsSUFBSSxHQUdyQzs7QW5CcUJHLE1BQU0sRUFBRyxTQUFTLEVBQUUsS0FBSyxJbUJ6QjdCLEFBQUEsVUFBVSxDQUFBLEVBRWtCLEtBQUssRUFBQyxJQUFJLEdB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 */
