Content-Type: multipart/related; start=; boundary=----------x4kCeh5XB5nK2Oy68L6x5d Content-Location: http://stackoverflow.com/questions/1649379/generate-mth-from-htm-file Subject: =?utf-8?Q?Generate=20MTH=20from=20HTM=20file=20-=20Stack=20Overflow?= MIME-Version: 1.0 ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=generate-mth-from-htm-file.htm Content-Type: text/html; charset=utf-8; name=generate-mth-from-htm-file.htm Content-ID: Content-Location: http://stackoverflow.com/questions/1649379/generate-mth-from-htm-file Content-Transfer-Encoding: 8bit Generate MTH from HTM file - Stack Overflow
vote up 1 vote down star
1

HI all,

I have a htm page in my disk (C:\pages\page1.htm).

This page link CSS and gif (C:\pages\img\img1.gif, c:\pages\css\css1.css).

How can I generate MHT file ?? Only using C# .NET managed.

Thanks in advanced. greetings

flag

1 Answer

vote up 0 vote down

Why do you need this? MHT is IE-only format of storing webpages.

However, if you will open one MHT, you will quickly get an idea how to create it by hands.

link|flag

Your Answer

Get an OpenID
or

Not the answer you're looking for? Browse other questions tagged or ask your own question.

------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline Content-Type: image/png Content-Location: http://sstatic.net/so/Img/search.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAMFBMVEX+/v5JSUlY WFhkZGR1dXWDg4OYmJikpKSrq6u6urrFxcXW1tbl5eXq6ur09PQ9PT1B0W4qAAAA AXRSTlMAQObYZgAAAGRJREFUeF59zT0OQEAUhdEXZOInoxJKCaUtjEKoRa0RG1DY hEJjD8rZj1JnEa+TO5lS3OpU36XfXe1oIJuuOACR3acC3J58BpyBQgNPkaiAINFz DcRrXqYARZueFtt82ELuH48v2YQOaALpOasAAAAASUVORK5CYII= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline Content-Type: image/gif Content-Location: http://sstatic.net/so/Img/stats-arrow.gif Content-Transfer-Encoding: Base64 R0lGODlhBwAgAIAAAO7u7v7+/iH5BAMAAAEALAAAAAAHACAAAAIcjI+py+0PowQK UGSvyZpfT4Fi4G3ZcaLaJrVJAQA7 ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline Content-Type: image/png Content-Location: http://sstatic.net/so/Img/grippie.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABsAAAAFAQMAAACOxgX9AAAABlBMVEX///+7u7vH S9/4AAAAAXRSTlMAQObYZgAAABpJREFUeF5dxjENAAAAwrD5V4mTEV56FTXMrZGE C5hvxeU9AAAAAElFTkSuQmCC ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline Content-Type: image/png Content-Location: http://sstatic.net/so/Img/wmd-buttons.png Content-Transfer-Encoding: Base64 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 TwFTW2pLTjAAAAAASUVORK5CYII= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=all.css Content-Type: text/css; charset=utf-8; name=all.css Content-Location: http://sstatic.net/so/all.css?v=5058 Content-Transfer-Encoding: 8bit  html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;background:transparent;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}ins{text-decoration:none;}del{text-decoration:line-through;}table{border-collapse:collapse;border-spacing:0;}body{background:#fff;color:#000;font-family:Arial,Helvetica,sans-serif;font-size:80%;text-align:center;}code{font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;background-color:#eee;}textarea{font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;border:1px solid #999;font-size:90%;}input,select,button{border:1px solid #999;font-size:100%;font-family:Trebuchet MS,Helvetica,sans-serif;}input{margin:5px 0 5px 0;padding:3px;}pre{font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;margin-bottom:10px;overflow:auto;width:auto;padding:5px;background-color:#eee;width:650px!ie7;padding-bottom:20px!ie7;max-height:600px;}pre{max-height:none\9;}blockquote{margin-bottom:10px;margin-right:15px;padding:10px 0 1px 10px;background-color:#eee;}b,strong{font-weight:bold;}i,em{font-style:italic;}ul{list-style:disc;margin-left:30px;margin-bottom:1em;}ol ul,ul ol,ul ul,ol ol{margin-bottom:0;}p{clear:both;margin-bottom:1em;}ol{list-style:decimal;margin-left:30px;margin-bottom:1em;}a{color:#07c;text-decoration:none;cursor:pointer;}a:hover{text-decoration:underline;}a:visited{color:#4A6B82;}h1{font-family:Trebuchet MS,Helvetica,sans-serif;font-weight:bold;font-size:170%;margin-bottom:7px;}h2{font-family:Trebuchet MS,Helvetica,sans-serif;font-size:140%;font-weight:bold;margin-bottom:7px;}h3{font-family:Trebuchet MS,Helvetica,sans-serif;font-size:110%;font-weight:bold;margin-bottom:5px;}hr{border:0;color:#aaa;background-color:#aaa;height:1px;margin-bottom:20px;}sup{font-size:80%;position:relative;top:-0.4em;}sub{position:relative;top:.3em;font-size:80%;}kbd{padding:2px 4px;white-space:nowrap;color:#000;background:#eee;border-width:1px 3px 3px 1px;border-style:solid;border-color:#ccc #aaa #888 #bbb;}p code{padding:1px 5px 1px 5px;}.comment-text code{padding:1px 5px 1px 5px;}.display-none{display:none;}.date{text-align:right;width:70px;height:35px;white-space:nowrap;font:normal 28px Helvetica,sans-serif;letter-spacing:-2px;color:#ccc;line-height:35px;}.date_brick{float:right;height:30px;width:45px;background-color:#eee;color:#999;font:Bold 12px Verdana,Sans-Serif;text-align:center;line-height:12px;margin-left:10px;padding-top:5px;letter-spacing:0;overflow:hidden;}.revcell1{width:25px;cursor:pointer;text-align:right;vertical-align:middle;}.revcell2{width:50px;cursor:pointer;font-size:250%;font-weight:bold;color:#777;text-align:left;vertical-align:middle;}.revcell3{vertical-align:top;width:660px;padding-top:8px;}.revcell4{padding:5px;width:185px;}.revcell5{margin-top:10px;margin-left:15px;width:800px;}.mini-counts{height:25px;vertical-align:middle;font-size:190%;font-weight:bold;}.vt{vertical-align:top;}.fw{width:100%;}.votecell{width:60px;vertical-align:top;}#answers{clear:both;padding-top:10px;width:730px;}.answer{width:730px;border-bottom:1px solid #aaa;padding-bottom:20px;padding-top:20px;}.post-signature{padding-left:5px;padding-top:2px;text-align:left;vertical-align:top;width:175px;height:58px;}.owner{background-color:#E0EAF1;}.deleted-answer{background-color:#E3D9D9;}.downvoted-answer{color:#888;}.item-multiplier{font-size:120%;font-weight:bold;margin-right:4px;color:#444;}.reputation-score{font-weight:bold;color:#444;font-size:120%;margin-right:2px;}.relativetime{font-weight:bold;text-decoration:none;}#notify-table{position:fixed;top:0;left:0;width:100%;z-index:100;font-family:Arial,Helvetica,sans-serif;font-size:130%;font-weight:bold;letter-spacing:-1px;color:#735005;}.notify td{border-bottom:solid 1px #D6800C;padding:7px 0 7px 0;text-align:center;background-color:#F4A83D;}.notify{width:95%;}.notify a{color:#735005;text-decoration:underline;}.notify-close a{color:#735005;text-decoration:none;background-color:#FAD163;border:2px #735005 solid;padding-left:4px;padding-right:4px;}.summaryinfo{color:#808185;text-align:center;}.summarycount{text-align:center;color:#808185;font-size:350%;font-weight:bold;}.link-separator{margin:0 2px 0 2px;color:#ccc;font-size:110%;}.post-taglist{margin-bottom:10px;clear:both;}.post-menu{padding-top:2px;}.post-menu>a,.edit-tags-wrapper>span>a{padding:0 3px 2px 3px;color:#888;}.post-menu>a:hover,.edit-tags-wrapper>span>a:hover{background-color:#777;color:#fff;text-decoration:none;}.edit-tags-wrapper{padding-right:40px;}.edit-tags-wrapper>a.post-tag{margin-right:6px;}.post-menu .link-separator{margin:0;padding:0;}.post-comments{width:660px;}.comments-container{border-top:dotted 1px #aaa;margin-top:10px;padding-bottom:10px;}.comments-link{padding:0 3px 2px 3px;color:#888;}.comments-link:hover{padding:0 3px 2px 3px;background-color:#777;color:#fff;text-decoration:none;}.comments{line-height:135%;color:#444;}.comments>table{width:100%;}tr.comment>td{padding-top:5px;padding-bottom:5px;border-bottom:dotted 1px #ddd;}tr.comment-hover{background-color:#fafafa;}.comment img{vertical-align:middle;}img.comment-flag,img.comment-up,img.comment-delete{visibility:hidden;cursor:pointer;}.comment-actions{padding-left:3px;width:15px;}.comment-score span{font-size:110%;color:#666;font-weight:bold;padding-right:2px;}.comment-text{vertical-align:text-top;padding:0 6px 0 7px;}a.comment-user{white-space:nowrap;padding:0;}a.comment-user.owner{padding:2px 5px 2px 5px;}a.comment-user+img{vertical-align:baseline!important;}.comment-date{color:#999;}.post-comments>table{text-align:left;margin-top:5px;margin-right:5px;vertical-align:top;}.post-comments input{vertical-align:top;margin-left:10px;margin-top:1px;width:100px;}.post-comments textarea{margin-bottom:4px;height:5em;}.text-counter{margin-right:20px;}.accept-answer-link{font-weight:bold;color:#508850!important;}.deleted-post{color:#B65454!important;font-weight:bold!important;}.deleted-post:hover{color:#fff!important;background-color:#B65454!important;}.deleted-answer-info{color:#B65454;margin-top:10px;margin-left:3px;}.search-highlight{color:#333;background-color:#FFC;font-weight:bold;}.page-description{color:#333;font-size:120%;margin:1.2em 1.2em .5em 1.2em;line-height:120%;}#footer{color:#444;background:#777;border-top:7px solid #000;clear:both;overflow:hidden;padding:15px;margin-top:30px;}#footer-menu{color:#999;float:left;font-size:100%;line-height:30px;}#footer-menu a{color:#fff;}#footer-flair{float:right;margin-left:12px;}#svnrev{margin-top:5px;text-align:right;}#copyright{clear:both;}#copyright a{color:#444;text-decoration:underline;}.content-page{color:#333;font-size:120%;line-height:1.2;margin:1.2em;}.user-list{margin-right:10px;width:225px;height:21px;float:left;text-align:left;vertical-align:middle;white-space:nowrap;overflow:hidden;}.user-name{float:left;width:125px;}.user-flair{float:left;}.user-info{height:35px;width:185px;}.user-info .user-gravatar32{float:left;width:32px;height:32px;}.user-info .user-action-time{margin-top:2px;margin-bottom:4px;}.user-info .user-details{float:left;margin-left:5px;width:145px;overflow:hidden;white-space:nowrap;}.user-details{color:#888;line-height:17px;}#revisions{margin-top:20px;margin-left:20px;}.revision td{background-color:#eee;}.vote-revision td{background-color:#ddd;}.owner-revision td{background-color:#E0EAF1;}.revision-comment{color:#333;background-color:#FFC;padding:3px;line-height:1.4;}#markdown-help{position:absolute;left:520px;top:20px;}.openid-identifier{background:url(http://sstatic.net/so/Img/openid-large.png) center left no-repeat;padding-left:32px;height:22px;line-height:22px;}#answers-header{width:730px;margin-top:10px;margin-bottom:10px;}#question-header{font-family:Trebuchet MS,Helvetica,sans-serif;width:960px;margin-bottom:20px;border-bottom:1px solid #555;}#question-header a{color:#000;}#question-header h2{font-size:180%;}#user-about-me{background-color:#eee;line-height:120%;padding:10px;margin:10px;height:200px;width:90%;overflow:auto;}.answer-votes{color:#555;text-align:center;background-color:#eee;float:left;font-weight:bold;padding:4px;padding-bottom:5px;width:20px;height:15px;text-decoration:none;font-size:110%;}.answer-hyperlink{color:#555!important;font-weight:bold;}.question-hyperlink{font-weight:bold;}.answer-link{float:left;width:700px;margin-top:5px;padding-left:10px;color:#555;}.answer-link a{font-weight:bold;}.answer-summary{padding:3px;clear:both;}.answer-paging{clear:both;height:30px;margin-bottom:5px;}.user-details td{color:Black;padding:4px 0 4px 0;}.bounty-indicator{font-size:90%;padding:2px 5px 2px 4px;margin-right:5px;background-color:#07D;font-weight:bold;float:left;color:#fff;-moz-border-radius:3px;-webkit-border-radius:3px;}.bounty-indicator-tab{background-color:#07D;color:#fff;display:inline-block;padding:0 4px;margin-right:5px;margin-left:-4px;font-size:90%;font-weight:bold;-moz-border-radius:3px;-webkit-border-radius:3px;}.bounty{background-color:#E2FCE2!important;}.question-status{margin-top:15px;margin-bottom:-5px;width:717px;background-color:#eee;line-height:180%;padding:8px 8px 8px 0;padding-bottom:4px;clear:both;}.question-status b{color:Maroon;}.answer-title{color:#bbb;}.answer-title:visited{color:#bbb;}.history-table{margin-bottom:10px;line-height:125%;}.history-table span.revision-comment{line-height:180%;}.history-table td{vertical-align:middle;padding:0 5px 5px 0;}.history-table p{margin-bottom:10px;margin-top:3px;}#noscript-warning{font-family:Arial,Helvetica,sans-serif;position:fixed;top:0;left:0;width:100%;z-index:101;text-align:center;font-weight:bold;font-size:120%;color:#fff;background-color:#AE0000;padding:5px 0 5px 0;}#noscript-padding{padding-top:3.5em;}.container{margin:0 auto;text-align:left;width:960px;zoom:1;}#hsearch .textbox{background:url(http://sstatic.net/so/Img/search.png) center left no-repeat;background-color:#fff;padding-left:16px;margin:0;max-width:230px;border:none;border-top:1px solid #ccc;border-left:1px solid #ccc;}#header{width:100%;height:103px;}#header #topbar{width:auto;padding:3px 10px 0 10px;float:right;height:30px;line-height:22px;background-color:#eee;max-width:750px;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-webkit-border-radius-bottom-left:3px;-webkit-border-radius-bottom-right:3px;}#header #hlogo{height:61px;width:250px;float:left;}#header #hmenus{width:705px;float:left;padding:34px 0 20px 5px;}#header #topbar #hlinks{float:left;margin:0 35px 0 0;}#hlinks a{font-weight:bold;}#header #topbar #hsearch{float:left;}#system-message{clear:both;text-align:center;margin:0 0 10px 0;padding:7px;font-weight:bold;color:#735005;}.system-message-color{background-color:#FFEFC6;}#system-message a{color:#C6860A;}.nav{float:left;font-size:125%;}.nav ul{margin:0;}.nav li{background:#777;display:block;float:left;margin-right:7px;}.nav .youarehere{background:#f90;}.youarehere a{color:#fff;}.nav li:hover{background-color:#f90;}.nav a{color:#fff;display:block;font-weight:bold;padding:6px 12px 6px 12px;text-decoration:none;}#sidebar{float:right;overflow:hidden;margin-bottom:60px;width:220px;}#mainbar{float:left;margin-bottom:40px;width:735px;}#mainbar-full{width:960px;}#mainbar-footer{clear:both;width:100%;}#feed-link{text-align:right;float:right;}#feed-link a{color:#777;}#feed-link-image{float:left;margin-left:12px;margin-right:5px;}#feed-link-text{float:left;}#subheader{border-bottom:1px solid #666;height:34px;clear:both;}#subheader h2{float:left;font-size:170%;line-height:34px;margin-bottom:0;}#subheader a{color:#000;}#tabs{float:right;font-weight:bold;}#tabs a{background:inherit;border:1px solid #fff;color:#777;display:block;float:left;font-size:90%;height:24px;line-height:22px;margin:8px 8px 0 0;padding:0 11px 0 11px;text-decoration:none;}#tabs a:hover{background:#fff;border:1px solid #777;border-bottom-color:#fff;line-height:20px;margin-top:9px;}#tabs a.youarehere{background:#fff;border:1px solid #777;border-bottom-color:#fff;color:black;font-size:120%;height:30px;line-height:28px;margin-top:3px;padding:0 11px 0 11px;}.tabs-question-user,.tabs-answer-user,.tabs-favorite-user{width:100%;float:right;font-weight:bold;}.tabs-question-user a,.tabs-answer-user a,.tabs-favorite-user a{font-family:Trebuchet MS,Helvetica,sans-serif;border:1px solid #ccc;color:#808185;display:block;float:right;font-size:120%;margin-right:3px;padding:1px 4px 3px;text-decoration:none;}.tabs-question-user a.youarehere,.tabs-answer-user a.youarehere,.tabs-favorite-user a.youarehere{background-color:#808185;border:1px solid #808185;color:#fff;font-weight:bold;}.question-summary{border-bottom:1px dotted #999;overflow:hidden;padding:11px 0;width:730px;float:left;}#question{clear:both;width:730px;}#questions{clear:both;width:730px;float:left;}.stats{background:#eee;margin:0 0 0 7px;padding:4px 7px 6px 7px;width:58px;}.statsarrow{width:7px;height:32px;background:url(http://sstatic.net/so/Img/stats-arrow.gif) top right no-repeat;float:right;}.statscontainer{width:86px;float:left;margin-right:8px;}.narrow .stats{background:none;margin:0 0 0 7px;padding:0;width:auto;height:48px;float:left;}.votes{color:#555;padding:0 0 7px 0;text-align:center;}.narrow .votes{background:#eee;float:left;margin:0 3px 0 0;padding:5px;width:38px;height:38px;}.vote-count-post{display:block;font-size:240%;}.vote-up,.vote-down{display:block;margin:0 auto;}.views{padding-top:4px;color:#999;text-align:center;}.cool{color:#999!important;}.warm{color:#9B764F!important;}.hot{color:#CF7721!important;}.supernova{color:#FE7A15!important;}.supernovabg{color:#fff!important;background-color:#FE7A15!important;}.narrow .views{float:left;margin:0 7px 0 0;padding:5px 0 5px 4px;width:40px;height:38px;}.views strong{display:block;}.status{margin-top:-3px;padding:4px 0 4px;text-align:center;}.narrow .status{float:left;margin:0 3px 0 0;padding:5px;width:48px;height:38px;}.status strong{color:#fff;display:block;font-size:140%;}.answered{background:#75845C;color:#fff;}.answered-accepted{background:#75845C;color:#E1E818;}.answered-accepted strong{color:#E1E818;}.unanswered{background:#9A4444;color:#fff;}.summary{float:left;width:635px;}.excerpt .started{float:right;width:185px;height:55px;margin-top:5px;}.excerpt .tags{width:410px;margin-top:5px;}.summary h3{font-size:130%;}.narrow .summary{width:550px;}.excerpt{line-height:1.2;padding:0;margin:0;padding-bottom:5px;}.excerpt p{margin-bottom:3px;}.tags{line-height:18px;float:left;}.tags a:hover{text-decoration:none;}.started{width:185px;color:#999;float:right;line-height:18px;}.narrow .started{width:auto;line-height:inherit;padding-top:4px;white-space:nowrap;}.started a{font-weight:bold;}.started img{vertical-align:baseline;}.started .reputation-score{margin-left:1px;}.mod-flair{color:#07C;margin-left:3px;font-weight:bold;font-size:140%;}.module{color:#444;padding:8px 8px 2px 8px;margin-bottom:10px;}.module p.label-key{color:#444;margin-bottom:0;}.module p.label-value{color:#444;font-size:140%;font-weight:bold;}.module .spacer{margin-bottom:8px;}.module h4{line-height:1.4;font-size:130%;padding-bottom:7px;}.newuser{color:#735005;background-color:#FFEFC6;-moz-border-radius:5px;-webkit-border-radius:5px;}.newuser h4{color:#AE0000;}.newuser a{color:#735005;}.module p{font-size:120%;line-height:1.3;margin-bottom:.5em;}.module ul{margin-left:15px;list-style-type:square;font-size:120%;margin-right:30px;line-height:120%;}.module li{margin-bottom:4px;}#recent-tags .post-tag{background-color:inherit;border:none;margin:0;font-size:100%;color:black!important;}#recent-tags .post-tag:hover{background-color:#777;color:#fff!important;border:none;margin:0;text-decoration:none;}#recent-tags .pop1{font-weight:bold;}#recent-tags .pop2{font-size:110%;font-weight:bold;}.vote{text-align:center;vertical-align:middle;}.vote span{display:block;color:#808185;font-weight:bold;}.vote img{cursor:pointer;}.vote-favorite{margin-bottom:5px;}.favoritecount{margin-top:-5px;text-align:center;color:#808185;}.favoritecount-selected{color:#D4A849;}.favorites-count{text-align:center;color:#D4A849;margin-top:13px;float:left;}.favorites-count-off{text-align:center;color:#919191;margin-top:13px;float:left;}.user-stats-table .question-summary{width:800px;}.user-stats-table .summary{width:600px;}#favorites-list .question-summary{width:900px;}#favorites-list .summary{width:700px;}.post-text{width:660px;font-size:107%;margin-bottom:5px;margin-right:5px;line-height:130%;}.post-text hr{background-color:#ddd;color:#ddd;}#wmd-preview img{max-width:640px;}.post-text img{max-width:640px;}form hr{border:1px solid #ccc;width:100%;text-align:left;}.form-item{padding:10px 0 15px 0;}.form-submit{padding:10px 0 15px 0;display:block;}.form-submit input{font-family:Trebuchet MS,Helvetica,sans-serif;font-size:130%;font-weight:bold;border:1px solid #888;padding:2px;margin:3px;}.form-item label{display:block;font-size:115%;font-weight:bold;color:#333;padding-bottom:3px;}span.form-error{color:#900;font-weight:bold;margin-left:5px;font-size:90%;}div.form-error{color:#900;font-weight:bold;font-size:120%;}div.form-item-info{padding:4px 0 4px 4px;width:80%;color:#777;}#post-editor{width:660px;}.community-option{float:right;color:#888;font-weight:normal;font-size:90%;height:32px;}.community-option input,.community-option label{vertical-align:middle;}#wmd-container>span.form-error{display:none;line-height:180%;}#post-editor-hidden{display:none;}.page-sizer{float:left;margin-top:5px;margin-bottom:30px;padding-top:5px;display:block;}.pager{margin-top:10px;margin-bottom:10px;}.page-numbers{font-family:Trebuchet MS,Helvetica,sans-serif;border:1px solid #ccc;color:#808185;display:block;float:left;font-size:130%;margin-right:3px;padding:4px 4px 3px;text-decoration:none;}.page-numbers.desc{border:none;}.page-numbers:hover{text-decoration:none;}.page-numbers.next,.page-numbers.prev{border:1px solid #fff;}.page-numbers.current{background-color:#808185;border:1px solid #808185;color:#fff;font-weight:bold;}.page-numbers.dots{border:1px solid #fff;}.error-notification{z-index:1;cursor:pointer;display:none;position:absolute;padding:15px;}.error-notification li{font-size:110%;padding-top:3px;}.error-notification a{color:inherit;text-decoration:underline;}.system-alert{color:#fff;background-color:#AE0000;padding:5px;font-weight:bold;margin-bottom:10px;margin-top:5px;}.system-alert a{color:#fff;text-decoration:underline;}.popup,.edit-tags{background-color:#fff;border:solid 10px #AE0000;}.popup{z-index:1;display:none;position:absolute;padding:15px;}.edit-tags{padding:5px 0 0 15px;}.flag-menu{width:22em;cursor:default;}.flag-reasons{padding:10px 0 15px 15px;}.flag-reasons input,.close-reasons input{border:none;cursor:pointer;}.flag-reasons label,.close-reasons label{margin-left:.5em;cursor:pointer;}.flag-reasons textarea{margin-top:4px;margin-bottom:4px;}.flag-comment{margin-top:15px;display:none;}.flag-cancel,.close-cancel{cursor:pointer;float:left;font-size:110%;font-weight:bold;}.flag-submit,.close-submit{cursor:pointer;float:right;display:none;font-size:110%;font-weight:bold;}.close-reasons li{list-style-type:none;}.close-duplicate-prompt{color:#555;font-size:90%;}.existing-linked-questions{margin:27px 0 10px 0;}.existing-linked-questions p{color:#333;font-weight:bold;}.existing-linked-questions li{list-style:none;margin-bottom:7px;}.existing-linked-questions a{margin-left:20px;}.post-tag{color:#3E6D8E;background-color:#E0EAF1;border-bottom:1px solid #3E6D8E;border-right:1px solid #7F9FB6;margin:2px 2px 2px 0;padding:3px 4px 3px 4px;text-decoration:none;font-size:90%;line-height:2.2;white-space:nowrap;}.post-tag:hover{background-color:#3E6D8E;color:#E0EAF1;border-bottom:1px solid #37607D;border-right:1px solid #37607D;text-decoration:none;}.badge,a.badge-woot{color:#fff;background-color:#333;border:1px solid #333;margin:0 3px 3px 0;padding:4px 8px 4px 3px;color:#fff!important;text-decoration:none;line-height:1.9;-moz-border-radius:6px;-webkit-border-radius:6px;}.badge:hover{border:1px solid #555;background-color:#555;text-decoration:none;}.badge1{margin-left:3px;font-size:120%;color:#FC0;}.badge2{margin-left:3px;font-size:120%;color:#C0C0C0;}.badge3{margin-left:3px;font-size:120%;color:#C96;}.badgecount{padding-left:1px;color:#808185;}.diff-delete{text-decoration:line-through;color:#FF5F5F;}.diff-add{background:#97FF97;}.grippie{background:#EEE url(http://sstatic.net/so/Img/grippie.png) no-repeat scroll center 2px;border-color:#DDD;border-style:solid;border-width:0 1px 1px;cursor:s-resize;height:9px;overflow:hidden;}.tagged-ignored{opacity:.5;background-color:#fff;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);}.tagged-ignored-hidden{display:none;}.tagged-interesting{background-color:#FFEFC6;}#interestingAdd,#ignoredAdd{margin-left:5px;height:27px;}#interestingTag,#ignoredTag{height:19px;}.moderator-visible{color:Maroon;}.everyonelovesstackoverflow{margin-bottom:8px;}.welovestackoverflow{padding:5px;color:#333;line-height:130%;overflow:hidden;margin-bottom:8px;border:3px solid #eee;}#question-suggestions{overflow:hidden;}.ac_results{padding:0;border:1px solid #777;background-color:#fff;overflow:hidden;z-index:99999;text-align:left;}.ac_highlight{font-weight:bold;text-decoration:underline;}.ac_results ul{width:100%;list-style-position:outside;list-style:none;padding:0;margin:0;}.ac_results li{margin:0;padding:2px 5px;cursor:default;display:block;line-height:16px;overflow:hidden;font-family:Trebuchet MS,Helvetica,sans-serif;}.ac_loading{background:#fff url(http://sstatic.net/so/Img/loading-spinner.gif) right center no-repeat;}.ac_over{font-family:'Trebuchet MS',Helvetica,sans-serif;background-color:#f90;color:#fff;}.str{color:maroon;}.kwd{color:#00008B;}.com{color:gray;}.typ{color:#2B91AF;}.lit{color:maroon;}.pun{color:black;}.pln{color:black;}.tag{color:maroon;}.atn{color:red;}.atv{color:blue;}.dec{color:purple;}@media print{.str{color:#060;}.kwd{color:#006;font-weight:bold;}.com{color:#600;font-style:italic;}.typ{color:#404;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#006;font-weight:bold;}.atn{color:#404;}.atv{color:#060;}}#wmd-button-bar{margin:0;height:35px;width:660px;float:left;clear:both;background-color:#fff;}#wmd-input{width:660px;padding:3px;height:200px;line-height:1.2;}#wmd-preview{clear:both;padding:3px;border:2px dotted #ccc;font-size:107%;line-height:130%;width:660px;}#wmd-button-row{position:relative;margin:10px 0 5px 10px;padding:0;height:20px;}.wmd-spacer{width:1px;height:20px;margin-left:14px;position:absolute;background-color:Silver;display:inline-block;list-style:none;}.wmd-button{width:20px;height:20px;margin-left:5px;margin-right:5px;position:absolute;background-image:url(http://sstatic.net/so/Img/wmd-buttons.png);background-repeat:no-repeat;background-position:0 0;display:inline-block;list-style:none;}.wmd-button>a{width:20px;height:20px;position:absolute;display:inline-block;}#wmd-button-bar #wmd-bold-button{left:0;background-position:0 0;}#wmd-button-bar #wmd-italic-button{left:25px;background-position:-20px 0;}#wmd-button-bar #wmd-spacer1{left:50px;}#wmd-button-bar #wmd-link-button{left:75px;background-position:-40px 0;}#wmd-button-bar #wmd-quote-button{left:100px;background-position:-60px 0;}#wmd-button-bar #wmd-code-button{left:125px;background-position:-80px 0;}#wmd-button-bar #wmd-image-button{left:150px;background-position:-100px 0;}#wmd-button-bar #wmd-spacer2{left:175px;}#wmd-button-bar #wmd-olist-button{left:200px;background-position:-120px 0;}#wmd-button-bar #wmd-ulist-button{left:225px;background-position:-140px 0;}#wmd-button-bar #wmd-heading-button{left:250px;background-position:-160px 0;}#wmd-button-bar #wmd-hr-button{left:275px;background-position:-180px 0;}#wmd-button-bar #wmd-spacer3{left:300px;}#wmd-button-bar #wmd-undo-button{left:325px;background-position:-200px 0;}#wmd-button-bar #wmd-redo-button{left:350px;background-position:-220px 0;}#wmd-button-bar #wmd-help-button{right:0;background-position:-240px 0;}.wmd-prompt-background{background-color:Black;}.wmd-prompt-dialog{border-right:3px solid #999;border-bottom:3px solid #999;border-top:3px solid #fff;border-left:3px solid #fff;background-color:#ddd;}@media print{#sidebar,#nav,#tabs,#footer,#hmenus,#hlinks,.post-menu,.post-comments,.notify,#mainbar-footer,form,div.vote{display:none;}}#recent-badges td{vertical-align:baseline;height:32px;width:244px;overflow:hidden;white-space:nowrap;} ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://sstatic.net/so/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABML AAATCwAAAAAAAAAAAAAAAAAAbGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xs bf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf8AAAAAAAAAAGxsbf9sbG3/bGxt/2xs bf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/AAAAAAAA AABsbG3/bGxt/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AABsbG3/bGxt/wAAAAAAAAAAbGxt/2xsbf8AAAAAbGxt/2xsbf9sbG3/bGxt/2xs bf9sbG3/bGxt/2xsbf8AAAAAbGxt/2xsbf8AAAAAAAAAAGxsbf9sbG3/AAAAAGxs bf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/AAAAAGxsbf9sbG3/AAAAAAAA AABsbG3/bGxt/wAAAAAAAAAAAAAAAAAAAAAAAAAAVHibFE94oDxKeKRkRHiqkUx4 ohlsbG3/bGxt/wAAAAAAAAAAAAAAAAAAAABLeKMPPHixUj54sIQ+eLC5Pniw3j54 sP8/eK//QXet/0J2q/9Ed6k+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPXiwKkF4 rf9BeK3/QXit/0J3q+xFdqnAQ3erhTt7s1Qqg8VSFY3cWQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAD94rwlCeKxzRHaqUUR2qis7e7MIAAAAABiM2QwJk+hyA5fv4gKX 7v8AmfIbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZPoGQOX 7oIDlu7tBZXs/wSX6+wJkeqCHXjmTiBy6QIAAAAAAAAAAAAAAAAAAAAAAAAAAA+R 4QICl+4kA5fuhgWW7PMGlev/BpXr6wSY64MNjOkQJ23lTC9j5PwuZOSBAAAAAAAA AAAAAAAAAAAAAAAAAAAElu0JBpXr1QaV6/8GlevpBpbrfASY6xcAAAAAK2fkNi5k 5PgsZuT4LGbkRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaV62wGlet+BZbrFQAA AAAAAAAALWTkIi1l5OUsZuT/LGbkWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAALmPkDyxl5MssZuT/LGbkewAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmPkAixm5K0sZuT/LGbkoQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmTkAixm 5JMsZuT/LGbkwCxm5AcAAAAAAAAAAAAAAAAAAAAAgAEAAIAB8L+f+QAAkAkAAJAJ AACfAQAA4AcAAOAHAADggwAA/gEAAPABAADwIQAA+MP///+H////DwAA/g8AAA== ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=jquery.min.js Content-Type: application/x-javascript; charset=UTF-8; name=jquery.min.js Content-Location: http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js Content-Transfer-Encoding: Base64 LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDov L2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2ln CiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2Vz LgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTog MjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICog UmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwu alF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJu IG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8 XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBl PXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBl KXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4g dGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYo RyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNl e3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQh PUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRl eHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBv KEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhk b2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhp cy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0 dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkp fSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0Fy cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFj azpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztH LmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9 dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihI KXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1 cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5w cm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1 bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0 aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMp fSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0 cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRo aXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixv LnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lm KChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1n fXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihG KXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5l bXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxk b2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0 aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigp e2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5u b2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFs bDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25l ckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNl cnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3do aWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBl bmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1 cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBB bGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lm KHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBl bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1 ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJl Zm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3Jl dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0 aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVu Y3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVu Y3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4 dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmpl Y3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5z cGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBG PXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChF LHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2so by51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUs Ryl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5t YXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNY TUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10 aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRD aGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4g by5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2cs IiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xv bmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioi KS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0 aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12 YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2 YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pd LmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVy biB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1 bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIo RSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9 KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHBy Lm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFw KGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQp e2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2Vz dCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rp b24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1 cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5v dCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5n dGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5m aWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRo aXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhv LnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9v KEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFF JiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0 aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24o Syl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShF LCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNp ZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2 YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09 InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STow LEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVj dGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1 cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVy biBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5p c0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhp cy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5 KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVj dCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2go ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxO KT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgp e3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxo dG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlu bmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIp Om51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0 aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlv bihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigp e3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBw bHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNl LmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0 dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1 cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0 aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0s TCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhp c1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlz WzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lm KEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEso dGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6 SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4s Tyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShP LCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFw cGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIp KSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYp e2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlw ZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29u dGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERh dGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVu dHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5 cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1p Zih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlm KEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNb SF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYo Sj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFM Lm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1td Ont9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIg Yj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWln aHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5 cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4k PXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlv bihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNB cnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJy YXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05 JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVy RG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZh bDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50 LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0Uu dHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7 RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtF LnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVD aGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5h bWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxl YWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtp ZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Up e2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09 ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsu Y2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIg Sj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1y ZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlv bihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYm Rz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRk OmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0 aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNs YXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9 fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xh c3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVu Y3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAi KToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwo Ri5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3 YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0Zd PUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYg aW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lm KEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJz b2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9 PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0 aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdo dDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lm KCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1 ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhI LCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1 ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5v ZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1h dGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0s Y3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9w YWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHki KTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31p ZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxl KXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8o W0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRl ZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYo Rj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5 bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1 cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJy ZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVz dChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRp bWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1F LnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319 fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7 aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3du ZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1p ZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIg SD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNy ZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVt ZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09 Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3Ry aW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24o VSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxs aW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+ In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50 b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxl Y3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhP ZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0 Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxl PiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0 Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8 IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90 cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0 YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3Rh YmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIs IjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hp bGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3Zh ciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFS P0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0 YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7 TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hp bGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01d KX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3Qo Uykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxz Ki8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVz KX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19 KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pd LCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgp PT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0db Sl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdb Sl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0 KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIp KSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRy OmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlw ZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgm Jm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5 bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBh cmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtp ZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2Rl KXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31p ZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXty ZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFi SW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0 dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1 dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5h bWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119 aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0 cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIi K0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRB dHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtK Lnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwo W14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9w YWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5k ZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgv b3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0o W2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0p O2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1 cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1 bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lm KEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8 Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19 fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9 SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4g LTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYo IW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcu bm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1u dWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIg Rj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3Zh ciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0dd KX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7 dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9 IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9u KEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2 YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJu IEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdl bnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4r KD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2Fm YXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6 L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxs YS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVh Y2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJl bnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5l eHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0s cHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxp bmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNp YmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJl dmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNp YmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0 aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6 ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250 ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJh eShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9u KEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmci KXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51 bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBl bmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVy OiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYp e28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0w LEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUp OnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0 KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1v dmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9k ZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVu Y3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1 bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFz czpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNs YXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUi XSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUs W3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVu Y3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9 KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGls ZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5y ZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQo dGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBq KEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVl KSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtj YWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZb aF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVb SF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hl W0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3Zh ciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1b RV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1v dmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5y ZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5j YWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngi KSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkp e0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2go SCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVl dWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihG IT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihF LEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYo Rz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0r IiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlz WzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNl e3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEdd KS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0 YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1v dmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2Yg RSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1 ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1v LnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5j YWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVh Y2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6 bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIw MDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBN SVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246 IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/ OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18Wyci XVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xb Pit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu Zzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3Vt ZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119 aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxX LGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4 ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJp Z2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZiha Lmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUp fWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hp bGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVou c2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3Ao KSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJl bnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIs YWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hp bGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZl W2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUku cmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7 dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiso YWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7 YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9y KHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09 PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1 c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsr KXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFd KX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFz RHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3Io dmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFd KXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVu Y3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0 aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9 MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtp ZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250 ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8 IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9 bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZigh Wil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4 cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxh aT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZh Yy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hb YWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9 ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5w cmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVs c2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFm PWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFl PVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtY XT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihh aCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwi Iik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwp e3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr YWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3Jz PXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdc dTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1c dUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMw LVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAw YzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwz fClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykv LENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxv ZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0 fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/ Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15c KV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNs YXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0 aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6 eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIs YWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1Vw cGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYo KFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5 cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09 PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixV LGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3Qo VSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0 aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTta W1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9 Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJl bnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVl KX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRj aCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJl bnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwr KyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3Zh ciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5n IixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVv ZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdl dEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rp b24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVm aW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3Io dmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRl KCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09 PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcs VSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYo YWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtp ZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmlu ZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09 ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsx XS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBW PTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06 VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0i bnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJd PT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3Qo VFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0w O1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgs VSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJ LmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtY WzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxW LFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4x fHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxz ZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2gu YXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVz dChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19 cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJu IFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2Fi bGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlv bihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24o VCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQp e1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09 dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0s ZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5j dGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1 bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1 bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24o VCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7 cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1 cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJw YXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3Vi bWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09 PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlw ZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxU Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rp b24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0 KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXty ZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1X Lmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9k ZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUs VCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+ VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVx OmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VV RE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07 aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIp e3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2Yo VlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBX PTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNl fX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFd LFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUu cHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNl fX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGls ZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFs c2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYo Vj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnRO b2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIg WD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUu bm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFy IGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3Jl dHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVy biBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6 ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxV Lm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhV LmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhP ZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJI YW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdl dEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVs bD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49 MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1m YWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09 PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9a PT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6 ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtp ZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9y KHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10u c291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9 ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lm KFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJy YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxb XTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5 cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51 bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhb Vl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1y ZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBh cmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21w YXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7 aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4 IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2 YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1 cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJh bmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0 ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVj dE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xs YXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5T VEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVy biBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo ImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJI VE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFk b2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgs WSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYh Wil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09 WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZX LmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106Zzpb XX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0 QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUo ImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9 fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl YXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5s ZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxl bWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9y KHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2go WFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwv YT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRy aWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgi aHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1 cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5j cmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1Qn PjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxs KCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcp e1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5 e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJl dHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVy O0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgp fWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24o KXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRN TD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48 L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09 PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxl bWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVy LnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixX KXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5l ZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19 KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlv dXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKysp e3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpj YWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lm KFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVU eXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVO YW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhV LFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7 Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYo VCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9 V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkp e1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMp e1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIp e2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0p Lmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRv Y3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0 dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUs VCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUp fTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9j dW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVu dCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIg Vz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0 Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2gu UFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxV PVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihY LFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3Rv cnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVy cy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxU Lm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1m dW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdo dD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3Jl dHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVs ZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUp e1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1 bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50 KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtv Lm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1Y W1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07 by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0 U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1 cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlv bihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1 cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3Vp ZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7 SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZl bnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUi LGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2 ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2Fs bGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQo L1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlm dCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05d O2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05d LnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQu c3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8p PT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3Rl bmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2 ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10 cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihL LEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZh ciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBl b2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGlu IEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9 SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlv bihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdF eHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxc LnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtm b3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0 ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNw ZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2Jy ZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNp YWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZl bnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhh bmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZl bnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdb T119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywi aGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50 cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9u KEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJv YmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7 aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5l eGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlz Lmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2 ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5o YW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBl PT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJh eShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRh KEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5v ZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitH XS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0dd JiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYm Rz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRj aChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25T dG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lm KEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rp b24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2 ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4i KTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFy IEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwu IikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5 cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5 cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhp cyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7 Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJ bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJh bHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxh YmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJn ZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtl eUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdl WSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNj cmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcg d2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYo SFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRo aXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltK XX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9 aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVu dE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxh dGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50Okgu ZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2 YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gu cGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVm dHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkku c2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1p ZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFy Q29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1p ZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYo IUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0 dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0 aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJn dW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlk Kys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1 bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUs Ril7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihH KXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsi KFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9 KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwx KXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5j dGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2 ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50 eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0 aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24g dSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVs dDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhp cy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVs dCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQ cm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9 dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0 b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJs ZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlz LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFn YXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3Bw ZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5j dGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7 dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7 Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50 cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1v dXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0 dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246 ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0 ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhp cy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRo aXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5l dmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7 cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1 bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7 by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxG KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUs Rix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNb MF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFBy b3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4g Ri5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9 MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1 cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5s YXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVs dCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3Vt ZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlz Lm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7 QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFk eUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3Zh ciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhk b2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixF KTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5i aW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVj dG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9 UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtv LmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEks Sil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3Qo Si5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29y dChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iikt by5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtp Zih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNl KXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3Jl dHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2cs InwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlz dDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10 cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24o KXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9j dW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtm dW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRF dmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250 ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVu ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28u cmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2Rv Y3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9u KCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50 LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxs ZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9T Y3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVy bn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9 Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1v LnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5l YWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNr LGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIs bW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3Vi bWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1 bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJp bmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1 bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVb RV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVt KX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp LEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3 IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJI VE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxl PSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0 PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48 L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsu Z2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwh RSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENo aWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0 Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1l KCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxo dG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxl bmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxo cmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFj aXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5j c3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1v ZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRD aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7Iikp fWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtK XSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92 ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFj aEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZl bnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxl ZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1 bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5z dHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJv ZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9 TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5z dHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxv YXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxG b3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5 bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5n dGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIs dGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9h ZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXty ZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0w KXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBI PSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNl e2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19 fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwi LGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8 TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0u cmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n LCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00u cmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1 bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0s c2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1l bnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYm IXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEv aS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2Vh cmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBH PW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/ by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJ fX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWph eFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nl c3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1 bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5l eHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykp e0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRh Okcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUs Ril7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5j dGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVu Y3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1 cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRh dGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWph eFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGds b2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gt d3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVl LHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2 ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0 KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRt bDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp b24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZh c2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RN b2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8u ZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygm fCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnBy b2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBh cmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIp e2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8i JiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5k YXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYi OiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNv biJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2go Ril8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00u ZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51 cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtX XT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1dd fWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlw ZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5j YWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJl cGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUr KChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToi Iil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8v KT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFj dGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3 KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0i c2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90 b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVs ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0 KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtU Lm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYo IXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhp cy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxv YWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19 SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnho cigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2Vy bmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRy eXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixN LmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRl cigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRo dSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVy KCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVl c3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5 cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVm YXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEos TSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy aWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmds b2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1 bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZh bChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy aWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRl PT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQ KTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNz KEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0u dXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3Ry eXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNl cmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3Bv bnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2Rp ZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxz ZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0u YXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwo TiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihK JiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRh dGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5 bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixS KX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0os TV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIp fWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0os TV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJh amF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUs Ryl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZl bnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBT dWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlv bi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMw MCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1 cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIg SD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcu c3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1 cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJl c3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYm Ri5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNl VGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJy b3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcu ZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJz Y3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwi XSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9 W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVu dChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8 RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52 YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkp e28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5p c0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYi KS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQi LCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGlu Z0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJw YWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlv biB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xp Y2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4 dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1h dGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5n dGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0 aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlz cGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0dd KXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9k eSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9 SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEsp fX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5 bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1 cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5h bmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMu bGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5 Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5 IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMu bGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0 dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihH LEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rp b24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxh cmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9 RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRl Il0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpm dW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxF LEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixI LEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0o ZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlw ZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtp ZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNv bXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYm dGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92 ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwp e3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5k KHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixL LE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUi P0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5t YXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8 MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQ IT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVl KSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMTox KSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0p O3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVy cztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3Io dmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtp ZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRl cXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93 IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIs MSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlk ZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4g dGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24o RyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8 IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZI fHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6 dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3Bl ZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNv bXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Up e28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xk LmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24o RyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXty ZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJz OltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09 Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJv dG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7 dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9 KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMp O2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0 aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9 fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwm JighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09 bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZs b2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0x MDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkp fHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0 aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwi cHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3Zh ciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10 aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRl cnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5s ZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxl bmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9u KCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVt LnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1 c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTow LHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24o KXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0u c3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3Vz dG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lm KEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhp cy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRl KCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRy dWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9w dGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMu b3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9 dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRo aXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIp PT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRo aXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0 aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMu b3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5v cHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlz LmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7 dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVh c2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5n IjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0 aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkq dGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChv LmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3Rl cDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFj aXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHls ZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnBy b3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7 aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj dCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3Rv cDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5i b2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10 aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRv Y3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRv cHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8 MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9s bFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8 fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVy bnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYo IXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlz WzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZz ZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRp YWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5v d25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8u ZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zm c2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkoh PT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNj cm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9w LEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYh KG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJs ZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVy VG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEw KXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNC b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJs ZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNl SW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09 PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRU b3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1N YXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5z Y3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8u b2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXpl ZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVF bGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9 JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJn aW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDto ZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0 aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNv bGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBh ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3Rh YmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2lu OjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6 ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRN TD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGls ZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJz dENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0 aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09 PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0i cmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNp YmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0 aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRv cD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlz LmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZz ZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9m ZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVk ZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy Z2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy Z2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5m bi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0 aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQo KSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVm dDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVm dC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lk dGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9w LUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVu dDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVu dC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUp JiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJl bnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9u KEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0 aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0 aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8o bCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9 KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zm c2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5l YWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/Ikxl ZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgp O28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3Nz KHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitH XT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFs c2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2Fz ZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1l bnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhp c1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNl dCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09 Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhK LHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=master.js Content-Type: application/x-javascript; charset=utf-8; name=master.js Content-Location: http://sstatic.net/so/js/master.js?v=5005 Content-Transfer-Encoding: Base64 77u/aWYodG9wIT1zZWxmKXt0b3AubG9jYXRpb24ucmVwbGFjZShkb2N1bWVudC5s b2NhdGlvbik7YWxlcnQoIkZvciBzZWN1cml0eSByZWFzb25zLCBmcmFtaW5nIGlz IG5vdCBhbGxvd2VkOyBjbGljayBPSyB0byByZW1vdmUgdGhlIGZyYW1lcy4iKX0k KGZ1bmN0aW9uKCl7JC5hamF4U2V0dXAoe2NhY2hlOmZhbHNlfSl9KTskLmZuLmV4 dGVuZCh7ZmFkZU91dEFuZFJlbW92ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5l YWNoKGZ1bmN0aW9uKCl7dmFyIGI9JCh0aGlzKTtiLmZhZGVPdXQoImZhc3QiLGZ1 bmN0aW9uKCl7Yi5yZW1vdmUoKX0pfSl9fSk7ZnVuY3Rpb24gZW5hYmxlU3VibWl0 QnV0dG9uKGEpe3NldFN1Ym1pdEJ1dHRvbkRpc2FibGVkKGEsZmFsc2UpfWZ1bmN0 aW9uIGRpc2FibGVTdWJtaXRCdXR0b24oYSl7c2V0U3VibWl0QnV0dG9uRGlzYWJs ZWQoYSx0cnVlKX1mdW5jdGlvbiBzZXRTdWJtaXRCdXR0b25EaXNhYmxlZChiLGEp eyQoYikuZmluZCgiaW5wdXRbdHlwZT0nc3VibWl0J10iKS5hdHRyKCJkaXNhYmxl ZCIsYT8iZGlzYWJsZWQiOiIiKX1mdW5jdGlvbiBzZXRDb25maXJtVW5sb2FkKGEs Yil7d2luZG93Lm9uYmVmb3JldW5sb2FkPWE/ZnVuY3Rpb24oKXtpZihiJiYkLnRy aW0oYi52YWwoKSkpe3JldHVybiBhfX06bnVsbH1mdW5jdGlvbiBzaG93QWpheEVy cm9yKGEsYyl7dmFyIGQ9JCgnPGRpdiBjbGFzcz0iZXJyb3Itbm90aWZpY2F0aW9u IHN1cGVybm92YWJnIj48aDI+JytjKyI8L2gyPihjbGljayBvbiB0aGlzIGJveCB0 byBkaXNtaXNzKTwvZGl2PiIpO3ZhciBiPWZ1bmN0aW9uKCl7JCgiLmVycm9yLW5v dGlmaWNhdGlvbiIpLmZhZGVPdXQoImZhc3QiLGZ1bmN0aW9uKCl7JCh0aGlzKS5y ZW1vdmUoKX0pfTtkLmNsaWNrKGZ1bmN0aW9uKGUpe2IoKX0pOyQoYSkuYXBwZW5k KGQpO2QuZmFkZUluKCJmYXN0Iik7c2V0VGltZW91dChiLDEwMDAqMzApfWZ1bmN0 aW9uIHN0eWxlQ29kZSgpe3ZhciBhPWZhbHNlOyQoInByZSBjb2RlIikucGFyZW50 KCkuZWFjaChmdW5jdGlvbigpe2lmKCEkKHRoaXMpLmhhc0NsYXNzKCJwcmV0dHlw cmludCIpKXskKHRoaXMpLmFkZENsYXNzKCJwcmV0dHlwcmludCIpO2E9dHJ1ZX19 KTtpZihhKXtwcmV0dHlQcmludCgpfX1mdW5jdGlvbiBhcHBlbmRMb2FkZXIoYSl7 JChhKS5hcHBlbmQoJzxpbWcgY2xhc3M9ImFqYXgtbG9hZGVyIiBzcmM9Imh0dHA6 Ly9zc3RhdGljLm5ldC9zby9pbWcvYWpheC1sb2FkZXIuZ2lmIiB0aXRsZT0ibG9h ZGluZy4uLiIgYWx0PSJsb2FkaW5nLi4uIiAvPicpfWZ1bmN0aW9uIHJlbW92ZUxv YWRlcigpeyQoImltZy5hamF4LWxvYWRlciIpLnJlbW92ZSgpfWZ1bmN0aW9uIHNh dmVQcmVmZXJlbmNlKGEsYixjKXskLnBvc3QoIi91c2Vycy9zYXZlLXByZWZlcmVu Y2UiLHtma2V5OnByZWZma2V5LGtleTphLHZhbHVlOmJ9LGMpfXZhciBub3RpZnk9 ZnVuY3Rpb24oKXt2YXIgZD1mYWxzZTt2YXIgZT0wO3ZhciBjPS0xO3ZhciBnPSJt Ijt2YXIgYT1mdW5jdGlvbihpKXtpZighZCl7JCgiI25vdGlmeS1jb250YWluZXIi KS5hcHBlbmQoJzx0YWJsZSBpZD0ibm90aWZ5LXRhYmxlIj48L3RhYmxlPicpO2Q9 dHJ1ZX12YXIgaD0iPHRyIisoaS5tZXNzYWdlVHlwZUlkPycgaWQ9Im5vdGlmeS0n K2kubWVzc2FnZVR5cGVJZCsnIic6IiIpO2grPScgY2xhc3M9Im5vdGlmeSIgc3R5 bGU9ImRpc3BsYXk6bm9uZSI+PHRkIGNsYXNzPSJub3RpZnkiPicraS50ZXh0O2lm KGkuc2hvd1Byb2ZpbGUpe3ZhciBqPWVzY2FwZSgiL3VzZXJzLyIraS51c2VySWQp O2grPScgU2VlIHlvdXIgPGEgaHJlZj0iL21lc3NhZ2VzL21hcmstYXMtcmVhZD9t ZXNzYWdldHlwZWlkPScraS5tZXNzYWdlVHlwZUlkKyImcmV0dXJudXJsPSIraisn Ij5wcm9maWxlPC9hPi4nfWgrPSc8L3RkPjx0ZCBjbGFzcz0ibm90aWZ5LWNsb3Nl Ij48YSB0aXRsZT0iZGlzbWlzcyB0aGlzIG5vdGlmaWNhdGlvbiIgb25jbGljaz0i bm90aWZ5LmNsb3NlKCc7aCs9KGkubWVzc2FnZVR5cGVJZD9pLm1lc3NhZ2VUeXBl SWQ6IiIpKycpIj4mdGltZXM7PC9hPjwvdGQ+PC90cj4nOyQoIiNub3RpZnktdGFi bGUiKS5hcHBlbmQoaCl9O3ZhciBiPWZ1bmN0aW9uKGgpeyQuY29va2llKGcsKGg/ aDoiMCIpLHtleHBpcmVzOjkwLHBhdGg6Ii8ifSl9O3ZhciBmPWZ1bmN0aW9uKCl7 dmFyIGg9cGFyc2VJbnQoJC5jb29raWUoZykpO2lmKGlzTmFOKGgpKXtoPTB9aWYo aDw1KXskKCIubW9kdWxlLm5ld3VzZXIiKS5zaG93KCk7YigrK2gpfX07cmV0dXJu e3Nob3dGaXJzdFRpbWU6ZnVuY3Rpb24oKXtpZigkLmNvb2tpZShnKSl7ZigpfWVs c2V7JCgiLm1vZHVsZS5uZXd1c2VyIikuc2hvdygpOyQoImJvZHkiKS5jc3MoIm1h cmdpbi10b3AiLCIyLjVlbSIpO2Eoe21lc3NhZ2VUeXBlSWQ6Yyx0ZXh0OidGaXJz dCB0aW1lIGhlcmU/IENoZWNrIG91dCB0aGUgPGEgb25jbGljaz0ibm90aWZ5LmNs b3NlRmlyc3RUaW1lKCkiPkZBUTwvYT4hJ30pOyQoIi5ub3RpZnkiKS5mYWRlSW4o InNsb3ciKX19LHNob3dNZXNzYWdlczpmdW5jdGlvbihoKXtmb3IodmFyIGo9MDtq PGgubGVuZ3RoO2orKyl7YShoW2pdKX0kKCIubm90aWZ5IikuZmFkZUluKCJzbG93 Iik7ZT1oLmxlbmd0aH0sc2hvdzpmdW5jdGlvbihoKXskKCJib2R5IikuY3NzKCJt YXJnaW4tdG9wIiwiMi41ZW0iKTthKHt0ZXh0Omh9KTskKCIubm90aWZ5IikuZmFk ZUluKCJzbG93Iil9LGNsb3NlOmZ1bmN0aW9uKGgpe3ZhciBqO3ZhciBpPTA7aWYo aCYmaCE9Yyl7JC5wb3N0KCIvbWVzc2FnZXMvbWFyay1hcy1yZWFkIix7bWVzc2Fn ZXR5cGVpZDpofSk7aj0kKCIjbm90aWZ5LSIraCk7aWYoZT4xKXtpPXBhcnNlSW50 KCQoImJvZHkiKS5jc3MoIm1hcmdpbi10b3AiKS5tYXRjaCgvXGQrLykpO2k9aS0o aS9lKX19ZWxzZXtpZihoJiZoPT1jKXtiKCl9aj0kKCIubm90aWZ5Iil9ai5jaGls ZHJlbigidGQiKS5jc3MoImJvcmRlci1ib3R0b20iLCJub25lIikuZW5kKCkuZmFk ZU91dCgiZmFzdCIsZnVuY3Rpb24oKXskKCJib2R5IikuY3NzKCJtYXJnaW4tdG9w IixpKyJweCIpO2oucmVtb3ZlKCl9KX0sY2xvc2VGaXJzdFRpbWU6ZnVuY3Rpb24o KXtiKCk7ZG9jdW1lbnQubG9jYXRpb249Ii9mYXEifX19KCk7ZnVuY3Rpb24gYXBw bHlQcmVmcyhjKXt2YXIgYj0kKCIjaWdub3JlZFRhZ3MgPiBhIik7dmFyIGU9JCgi I2ludGVyZXN0aW5nVGFncyA+IGEiKTtpZihjJiZiLmxlbmd0aD09MCYmZS5sZW5n dGg9PTApe3JldHVybn0kKCJkaXYucXVlc3Rpb24tc3VtbWFyeSIpLnJlbW92ZUNs YXNzKCJ0YWdnZWQtaWdub3JlZCB0YWdnZWQtaWdub3JlZC1oaWRkZW4gdGFnZ2Vk LWludGVyZXN0aW5nIik7dmFyIGY9Z2V0VGFnc1NlbGVjdG9yKGIpO3ZhciBkPWdl dFRhZ3NTZWxlY3RvcihlKTtpZihmLmxlbmd0aD4wKXt2YXIgYT0kKCIjaGlkZUln bm9yZWQiKS5pcygiOmNoZWNrZWQiKT8idGFnZ2VkLWlnbm9yZWQtaGlkZGVuIjoi dGFnZ2VkLWlnbm9yZWQiOyQoZikucGFyZW50cygiZGl2LnF1ZXN0aW9uLXN1bW1h cnkiKS5hZGRDbGFzcyhhKX1pZihkLmxlbmd0aD4wKXskKGQpLnBhcmVudHMoImRp di5xdWVzdGlvbi1zdW1tYXJ5IikuYWRkQ2xhc3MoInRhZ2dlZC1pbnRlcmVzdGlu ZyIpfX1mdW5jdGlvbiBnZXRUYWdzU2VsZWN0b3IoYyl7dmFyIGI9IiI7dmFyIGE9 IiI7Yy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9ZmFsc2U7YT0kKHRoaXMpLnRleHQo KTtpZihhLmluZGV4T2YoIiMiKT4tMSl7YT1hLnJlcGxhY2UoLyMvZywiSkpKIil9 aWYoYS5pbmRleE9mKCIrIik+LTEpe2E9YS5yZXBsYWNlKC9cKy9nLCJYWFgiKX1p ZihhLmluZGV4T2YoIi4iKT4tMSl7YT1hLnJlcGxhY2UoL1wuL2csIlpaWiIpfWlm KGEuaW5kZXhPZigiKiIpPi0xKXtkPXRydWV9aWYoZCl7Yis9ImRpdi50YWdzOnJl Z2V4KGNsYXNzLCB0LSIrYS5yZXBsYWNlKC9cKi9nLCIuKiIpKyIpLCJ9ZWxzZXti Kz0iZGl2LnQtIithKyIsIn19KTtpZihiLmxlbmd0aD4wKXtiPWIuc3Vic3RyaW5n KDAsYi5sZW5ndGgtMSl9cmV0dXJuIGJ9ZnVuY3Rpb24gc2F2ZVRhZ3MoZCxhLGcs aCl7dmFyIGI9JC50cmltKCQoZCkudmFsKCkpO3ZhciBlPWIuc3BsaXQoIiAiKTt2 YXIgZj1mYWxzZTtmb3IodmFyIGM9MDtjPGUubGVuZ3RoO2MrKyl7aWYoJC50cmlt KGVbY10pLmxlbmd0aCE9MCl7JChhKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24o KXtpZigkKHRoaXMpLnRleHQoKT09ZVtjXSl7JCh0aGlzKS5mYWRlVG8oNTAwLDAu MSkuZmFkZVRvKDUwMCwxKTtmPXRydWU7cmV0dXJufX0pO2lmKCFmKXskKGEpLmFw cGVuZCgiPGEgaWQ9JyIrZVtjXSsiJyBocmVmPScvcXVlc3Rpb25zL3RhZ2dlZC8i K2VbY10ucmVwbGFjZSgvXCovZywiIikrIicgY2xhc3M9JyIraCsiJyB0aXRsZT0n Y2xpY2sgdG8gZGVsZXRlIHRoaXMgdGFnJz4iK2VbY10rIjwvYT4gIik7aW5pdERl bGV0ZUJpbmRpbmdzKGcpfWY9ZmFsc2V9fSQoZCkudmFsKCIiKS5mb2N1cygpO3Nh dmVQcmVmZXJlbmNlKGcsJChhKS50ZXh0KCkpO2FwcGx5UHJlZnMoKX1mdW5jdGlv biBpbml0VGFnUHJlZnMoKXtpbml0RGVsZXRlQmluZGluZ3MoMCk7JCgiI2lnbm9y ZWRBZGQiKS5jbGljayhmdW5jdGlvbigpe3NhdmVUYWdzKCIjaWdub3JlZFRhZyIs IiNpZ25vcmVkVGFncyIsMjUsInBvc3QtdGFnIil9KTskKCIjaW50ZXJlc3RpbmdB ZGQiKS5jbGljayhmdW5jdGlvbigpe3NhdmVUYWdzKCIjaW50ZXJlc3RpbmdUYWci LCIjaW50ZXJlc3RpbmdUYWdzIiwyMCwicG9zdC10YWciKX0pOyQoIiNoaWRlSWdu b3JlZCIpLmNsaWNrKGZ1bmN0aW9uKCl7c2F2ZVByZWZlcmVuY2UoMzAsJCh0aGlz KS5pcygiOmNoZWNrZWQiKSk7YXBwbHlQcmVmcygpfSk7YmluZFRhZ0ZpbHRlckF1 dG9Db21wbGV0ZSgiI2lnbm9yZWRUYWciKTtiaW5kVGFnRmlsdGVyQXV0b0NvbXBs ZXRlKCIjaW50ZXJlc3RpbmdUYWciKX1mdW5jdGlvbiBpbml0RGVsZXRlQmluZGlu Z3MoZCl7dmFyIGI9aW1hZ2VQYXRoKyJjb21tZW50LWRlbC5wbmciO3ZhciBhPWlt YWdlUGF0aCsiY29tbWVudC1kZWwtaG92ZXIucG5nIjt2YXIgYz0iPGltZyBjbGFz cz0nZGVsZXRlJyBzcmM9XCIiK2IrIlwiIG9ubW91c2VvdmVyPVwiJCh0aGlzKS5h dHRyKCdzcmMnLCAnIithKyInKVwiIG9ubW91c2VvdXQ9XCIkKHRoaXMpLmF0dHIo J3NyYycsICciK2I7Yys9J1wnKSIgdGl0bGU9InJlbW92ZSB0aGlzIHRhZyIgd2lk dGg9IjE0IiBoZWlnaHQ9IjE0IiAvPic7aWYoZD09MCl7JCgiI2lnbm9yZWRUYWdz ID4gLnBvc3QtdGFnIikuYWZ0ZXIoYyl9aWYoZD09MjUpeyQoIiNpZ25vcmVkVGFn cyA+IC5wb3N0LXRhZzpsYXN0IikuYWZ0ZXIoYyl9JCgiI2lnbm9yZWRUYWdzID4g LmRlbGV0ZSIpLmNsaWNrKGZ1bmN0aW9uKCl7JCh0aGlzKS5wcmV2KCkucmVtb3Zl KCk7JCh0aGlzKS5yZW1vdmUoKTtzYXZlUHJlZmVyZW5jZSgyNSwkKCIjaWdub3Jl ZFRhZ3MiKS50ZXh0KCkpO2FwcGx5UHJlZnMoKX0pO2lmKGQ9PTApeyQoIiNpbnRl cmVzdGluZ1RhZ3MgPiAucG9zdC10YWciKS5hZnRlcihjKX1pZihkPT0yMCl7JCgi I2ludGVyZXN0aW5nVGFncyA+IC5wb3N0LXRhZzpsYXN0IikuYWZ0ZXIoYyl9JCgi I2ludGVyZXN0aW5nVGFncyA+IC5kZWxldGUiKS5jbGljayhmdW5jdGlvbigpeyQo dGhpcykucHJldigpLnJlbW92ZSgpOyQodGhpcykucmVtb3ZlKCk7c2F2ZVByZWZl cmVuY2UoMjAsJCgiI2ludGVyZXN0aW5nVGFncyIpLnRleHQoKSk7YXBwbHlQcmVm cygpfSl9ZnVuY3Rpb24gaW5pdEJpbmRpbmdzQWRkU3VnZ2VzdGVkVGFnKCl7dmFy IGI9Imh0dHA6Ly9zc3RhdGljLm5ldC9zby9pbWcvYWRkLXNtYWxsLnBuZyI7dmFy IGE9Imh0dHA6Ly9zc3RhdGljLm5ldC9zby9pbWcvYWRkLXNtYWxsLWhvdmVyLnBu ZyI7dmFyIGM9IjxpbWcgY2xhc3M9J2FkZCcgc3JjPVwiIitiKyJcIiBvbm1vdXNl b3Zlcj1cIiQodGhpcykuYXR0cignc3JjJywgJyIrYSsiJylcIiBvbm1vdXNlb3V0 PVwiJCh0aGlzKS5hdHRyKCdzcmMnLCAnIitiO2MrPSdcJykiIHRpdGxlPSJhZGQg dGhpcyB0YWcgdG8gaW50ZXJlc3RpbmcgdGFncyIgLz4nOyQoIiNzdWdnZXN0ZWRU YWdzID4gLnBvc3QtdGFnIikuYWZ0ZXIoYyk7JCgiI3N1Z2dlc3RlZFRhZ3MgPiAu YWRkIikuY2xpY2soZnVuY3Rpb24oKXskKCIjaW50ZXJlc3RpbmdUYWciKS52YWwo JCgiI2ludGVyZXN0aW5nVGFnIikudmFsKCkrJCh0aGlzKS5wcmV2KCkudGV4dCgp KyIgIil9KX1qUXVlcnkuY29va2llPWZ1bmN0aW9uKGIsaixtKXtpZih0eXBlb2Yg aiE9InVuZGVmaW5lZCIpe209bXx8e307aWYoaj09PW51bGwpe2o9IiI7bS5leHBp cmVzPS0xfXZhciBlPSIiO2lmKG0uZXhwaXJlcyYmKHR5cGVvZiBtLmV4cGlyZXM9 PSJudW1iZXIifHxtLmV4cGlyZXMudG9VVENTdHJpbmcpKXt2YXIgZjtpZih0eXBl b2YgbS5leHBpcmVzPT0ibnVtYmVyIil7Zj1uZXcgRGF0ZSgpO2Yuc2V0VGltZShm LmdldFRpbWUoKSsobS5leHBpcmVzKjI0KjYwKjYwKjEwMDApKX1lbHNle2Y9bS5l eHBpcmVzfWU9IjsgZXhwaXJlcz0iK2YudG9VVENTdHJpbmcoKX12YXIgbD1tLnBh dGg/IjsgcGF0aD0iKyhtLnBhdGgpOiIiO3ZhciBnPW0uZG9tYWluPyI7IGRvbWFp bj0iKyhtLmRvbWFpbik6IiI7dmFyIGE9bS5zZWN1cmU/Ijsgc2VjdXJlIjoiIjtk b2N1bWVudC5jb29raWU9W2IsIj0iLGVuY29kZVVSSUNvbXBvbmVudChqKSxlLGws ZyxhXS5qb2luKCIiKX1lbHNle3ZhciBkPW51bGw7aWYoZG9jdW1lbnQuY29va2ll JiZkb2N1bWVudC5jb29raWUhPSIiKXt2YXIgaz1kb2N1bWVudC5jb29raWUuc3Bs aXQoIjsiKTtmb3IodmFyIGg9MDtoPGsubGVuZ3RoO2grKyl7dmFyIGM9alF1ZXJ5 LnRyaW0oa1toXSk7aWYoYy5zdWJzdHJpbmcoMCxiLmxlbmd0aCsxKT09KGIrIj0i KSl7ZD1kZWNvZGVVUklDb21wb25lbnQoYy5zdWJzdHJpbmcoYi5sZW5ndGgrMSkp O2JyZWFrfX19cmV0dXJuIGR9fTt3aW5kb3cuUFJfU0hPVUxEX1VTRV9DT05USU5V QVRJT049dHJ1ZTt3aW5kb3cuUFJfVEFCX1dJRFRIPTg7d2luZG93LlBSX25vcm1h bGl6ZWRIdG1sPXdpbmRvdy5QUj13aW5kb3cucHJldHR5UHJpbnRPbmU9d2luZG93 LnByZXR0eVByaW50PXZvaWQgMDt3aW5kb3cuX3ByX2lzSUU2PWZ1bmN0aW9uKCl7 dmFyIGE9bmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiYvXGJNU0lFIDZc Li8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTt3aW5kb3cuX3ByX2lzSUU2PWZ1 bmN0aW9uKCl7cmV0dXJuIGF9O3JldHVybiBhfTsoZnVuY3Rpb24oKXt2YXIgbD0i YnJlYWsgY29udGludWUgZG8gZWxzZSBmb3IgaWYgcmV0dXJuIHdoaWxlICI7dmFy IEQ9bCsiYXV0byBjYXNlIGNoYXIgY29uc3QgZGVmYXVsdCBkb3VibGUgZW51bSBl eHRlcm4gZmxvYXQgZ290byBpbnQgbG9uZyByZWdpc3RlciBzaG9ydCBzaWduZWQg c2l6ZW9mIHN0YXRpYyBzdHJ1Y3Qgc3dpdGNoIHR5cGVkZWYgdW5pb24gdW5zaWdu ZWQgdm9pZCB2b2xhdGlsZSAiO3ZhciB2PUQrImNhdGNoIGNsYXNzIGRlbGV0ZSBm YWxzZSBpbXBvcnQgbmV3IG9wZXJhdG9yIHByaXZhdGUgcHJvdGVjdGVkIHB1Ymxp YyB0aGlzIHRocm93IHRydWUgdHJ5ICI7dmFyIG89disiYWxpZ25vZiBhbGlnbl91 bmlvbiBhc20gYXhpb20gYm9vbCBjb25jZXB0IGNvbmNlcHRfbWFwIGNvbnN0X2Nh c3QgY29uc3RleHByIGRlY2x0eXBlIGR5bmFtaWNfY2FzdCBleHBsaWNpdCBleHBv cnQgZnJpZW5kIGlubGluZSBsYXRlX2NoZWNrIG11dGFibGUgbmFtZXNwYWNlIG51 bGxwdHIgcmVpbnRlcnByZXRfY2FzdCBzdGF0aWNfYXNzZXJ0IHN0YXRpY19jYXN0 IHRlbXBsYXRlIHR5cGVpZCB0eXBlbmFtZSB0eXBlb2YgdXNpbmcgdmlydHVhbCB3 Y2hhcl90IHdoZXJlICI7dmFyIEc9disiYWJzdHJhY3QgYm9vbGVhbiBieXRlIGV4 dGVuZHMgZmluYWwgZmluYWxseSBpbXBsZW1lbnRzIGltcG9ydCBpbnN0YW5jZW9m IG51bGwgbmF0aXZlIHBhY2thZ2Ugc3RyaWN0ZnAgc3VwZXIgc3luY2hyb25pemVk IHRocm93cyB0cmFuc2llbnQgIjt2YXIgYWw9RysiYXMgYmFzZSBieSBjaGVja2Vk IGRlY2ltYWwgZGVsZWdhdGUgZGVzY2VuZGluZyBldmVudCBmaXhlZCBmb3JlYWNo IGZyb20gZ3JvdXAgaW1wbGljaXQgaW4gaW50ZXJmYWNlIGludGVybmFsIGludG8g aXMgbG9jayBvYmplY3Qgb3V0IG92ZXJyaWRlIG9yZGVyYnkgcGFyYW1zIHBhcnRp YWwgcmVhZG9ubHkgcmVmIHNieXRlIHNlYWxlZCBzdGFja2FsbG9jIHN0cmluZyBz ZWxlY3QgdWludCB1bG9uZyB1bmNoZWNrZWQgdW5zYWZlIHVzaG9ydCB2YXIgIjt2 YXIgRj12KyJkZWJ1Z2dlciBldmFsIGV4cG9ydCBmdW5jdGlvbiBnZXQgbnVsbCBz ZXQgdW5kZWZpbmVkIHZhciB3aXRoIEluZmluaXR5IE5hTiAiO3ZhciB5PSJjYWxs ZXIgZGVsZXRlIGRpZSBkbyBkdW1wIGVsc2lmIGV2YWwgZXhpdCBmb3JlYWNoIGZv ciBnb3RvIGlmIGltcG9ydCBsYXN0IGxvY2FsIG15IG5leHQgbm8gb3VyIHByaW50 IHBhY2thZ2UgcmVkbyByZXF1aXJlIHN1YiB1bmRlZiB1bmxlc3MgdW50aWwgdXNl IHdhbnRhcnJheSB3aGlsZSBCRUdJTiBFTkQgIjt2YXIgWj1sKyJhbmQgYXMgYXNz ZXJ0IGNsYXNzIGRlZiBkZWwgZWxpZiBleGNlcHQgZXhlYyBmaW5hbGx5IGZyb20g Z2xvYmFsIGltcG9ydCBpbiBpcyBsYW1iZGEgbm9ubG9jYWwgbm90IG9yIHBhc3Mg cHJpbnQgcmFpc2UgdHJ5IHdpdGggeWllbGQgRmFsc2UgVHJ1ZSBOb25lICI7dmFy IGo9bCsiYWxpYXMgYW5kIGJlZ2luIGNhc2UgY2xhc3MgZGVmIGRlZmluZWQgZWxz aWYgZW5kIGVuc3VyZSBmYWxzZSBpbiBtb2R1bGUgbmV4dCBuaWwgbm90IG9yIHJl ZG8gcmVzY3VlIHJldHJ5IHNlbGYgc3VwZXIgdGhlbiB0cnVlIHVuZGVmIHVubGVz cyB1bnRpbCB3aGVuIHlpZWxkIEJFR0lOIEVORCAiO3ZhciBYPWwrImNhc2UgZG9u ZSBlbGlmIGVzYWMgZXZhbCBmaSBmdW5jdGlvbiBpbiBsb2NhbCBzZXQgdGhlbiB1 bnRpbCAiO3ZhciBMPShvK2FsK0YreStaK2orWCk7dmFyIE49InN0ciI7dmFyIEs9 Imt3ZCI7dmFyIG09ImNvbSI7dmFyIGFoPSJ0eXAiO3ZhciBWPSJsaXQiO3ZhciBh ZT0icHVuIjt2YXIgVT0icGxuIjt2YXIgcD0idGFnIjt2YXIgVD0iZGVjIjt2YXIg YWI9InNyYyI7dmFyIGFrPSJhdG4iO3ZhciByPSJhdHYiO3ZhciBhZz0ibm9jb2Rl Ijt2YXIgYWY9ZnVuY3Rpb24oKXt2YXIgYW89WyIhIiwiIT0iLCIhPT0iLCIjIiwi JSIsIiU9IiwiJiIsIiYmIiwiJiY9IiwiJj0iLCIoIiwiKiIsIio9IiwiKz0iLCIs IiwiLT0iLCItPiIsIi8iLCIvPSIsIjoiLCI6OiIsIjsiLCI8IiwiPDwiLCI8PD0i LCI8PSIsIj0iLCI9PSIsIj09PSIsIj4iLCI+PSIsIj4+IiwiPj49IiwiPj4+Iiwi Pj4+PSIsIj8iLCJAIiwiWyIsIl4iLCJePSIsIl5eIiwiXl49IiwieyIsInwiLCJ8 PSIsInx8IiwifHw9IiwifiIsImJyZWFrIiwiY2FzZSIsImNvbnRpbnVlIiwiZGVs ZXRlIiwiZG8iLCJlbHNlIiwiZmluYWxseSIsImluc3RhbmNlb2YiLCJyZXR1cm4i LCJ0aHJvdyIsInRyeSIsInR5cGVvZiJdO3ZhciBhcD0iKD86Xl58WystXSI7Zm9y KHZhciBhbj0wO2FuPGFvLmxlbmd0aDsrK2FuKXthcCs9InwiK2FvW2FuXS5yZXBs YWNlKC8oW149PD46JmEtel0pL2csIlxcJDEiKX1hcCs9IilcXHMqIjtyZXR1cm4g YXB9KCk7dmFyIFI9LyYvZzt2YXIgVz0vPC9nO3ZhciB4PS8+L2c7dmFyIEo9L1wi L2c7ZnVuY3Rpb24gRShhbil7cmV0dXJuIGFuLnJlcGxhY2UoUiwiJmFtcDsiKS5y ZXBsYWNlKFcsIiZsdDsiKS5yZXBsYWNlKHgsIiZndDsiKS5yZXBsYWNlKEosIiZx dW90OyIpfWZ1bmN0aW9uIHEoYW4pe3JldHVybiBhbi5yZXBsYWNlKFIsIiZhbXA7 IikucmVwbGFjZShXLCImbHQ7IikucmVwbGFjZSh4LCImZ3Q7Iil9dmFyIGM9LyZs dDsvZzt2YXIgQz0vJmd0Oy9nO3ZhciBiPS8mYXBvczsvZzt2YXIgaD0vJnF1b3Q7 L2c7dmFyIGFtPS8mYW1wOy9nO3ZhciBJPS8mbmJzcDsvZztmdW5jdGlvbiBzKGFx KXt2YXIgYXQ9YXEuaW5kZXhPZigiJiIpO2lmKGF0PDApe3JldHVybiBhcX1mb3Io LS1hdDsoYXQ9YXEuaW5kZXhPZigiJiMiLGF0KzEpKT49MDspe3ZhciBhbj1hcS5p bmRleE9mKCI7IixhdCk7aWYoYW4+PTApe3ZhciBhcD1hcS5zdWJzdHJpbmcoYXQr Myxhbik7dmFyIGFyPTEwO2lmKGFwJiZhcC5jaGFyQXQoMCk9PT0ieCIpe2FwPWFw LnN1YnN0cmluZygxKTthcj0xNn12YXIgYW89cGFyc2VJbnQoYXAsYXIpO2lmKCFp c05hTihhbykpe2FxPShhcS5zdWJzdHJpbmcoMCxhdCkrU3RyaW5nLmZyb21DaGFy Q29kZShhbykrYXEuc3Vic3RyaW5nKGFuKzEpKX19fXJldHVybiBhcS5yZXBsYWNl KGMsIjwiKS5yZXBsYWNlKEMsIj4iKS5yZXBsYWNlKGIsIiciKS5yZXBsYWNlKGgs JyInKS5yZXBsYWNlKEksIiAiKS5yZXBsYWNlKGFtLCImIil9ZnVuY3Rpb24gUShh bil7cmV0dXJuIlhNUCI9PT1hbi50YWdOYW1lfXZhciBZPS9bXHJcbl0vZztmdW5j dGlvbiB6KGFwLGFvKXtpZigiUFJFIj09PWFwLnRhZ05hbWUpe3JldHVybiB0cnVl fWlmKCFZLnRlc3QoYW8pKXtyZXR1cm4gdHJ1ZX12YXIgYW47aWYoYXAuY3VycmVu dFN0eWxlKXthbj1hcC5jdXJyZW50U3R5bGUud2hpdGVTcGFjZX1lbHNle2lmKHdp bmRvdy5nZXRDb21wdXRlZFN0eWxlKXthbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHls ZShhcCxudWxsKS53aGl0ZVNwYWNlfX1yZXR1cm4gIWFufHxhbj09PSJwcmUifWZ1 bmN0aW9uIGFqKGFyLGFwKXtzd2l0Y2goYXIubm9kZVR5cGUpe2Nhc2UgMTp2YXIg YW89YXIudGFnTmFtZS50b0xvd2VyQ2FzZSgpO2FwLnB1c2goIjwiLGFvKTtmb3Io dmFyIGFxPTA7YXE8YXIuYXR0cmlidXRlcy5sZW5ndGg7KythcSl7dmFyIGFuPWFy LmF0dHJpYnV0ZXNbYXFdO2lmKCFhbi5zcGVjaWZpZWQpe2NvbnRpbnVlfWFwLnB1 c2goIiAiKTthaihhbixhcCl9YXAucHVzaCgiPiIpO2Zvcih2YXIgYXQ9YXIuZmly c3RDaGlsZDthdDthdD1hdC5uZXh0U2libGluZyl7YWooYXQsYXApfWlmKGFyLmZp cnN0Q2hpbGR8fCEvXig/OmJyfGxpbmt8aW1nKSQvLnRlc3QoYW8pKXthcC5wdXNo KCI8LyIsYW8sIj4iKX1icmVhaztjYXNlIDI6YXAucHVzaChhci5uYW1lLnRvTG93 ZXJDYXNlKCksJz0iJyxFKGFyLnZhbHVlKSwnIicpO2JyZWFrO2Nhc2UgMzpjYXNl IDQ6YXAucHVzaChxKGFyLm5vZGVWYWx1ZSkpO2JyZWFrfX1mdW5jdGlvbiBuKGF1 KXt2YXIgYXk9MDt2YXIgYW49ZmFsc2U7dmFyIGF4PWZhbHNlO2Zvcih2YXIgYXE9 MCxhcD1hdS5sZW5ndGg7YXE8YXA7KythcSl7dmFyIGF6PWF1W2FxXTtpZihhei5p Z25vcmVDYXNlKXtheD10cnVlfWVsc2V7aWYoL1thLXpdL2kudGVzdChhei5zb3Vy Y2UucmVwbGFjZSgvXFx1WzAtOWEtZl17NH18XFx4WzAtOWEtZl17Mn18XFxbXnV4 XS9naSwiIikpKXthbj10cnVlO2F4PWZhbHNlO2JyZWFrfX19ZnVuY3Rpb24gYXco YUEpe2lmKGFBLmNoYXJBdCgwKSE9PSJcXCIpe3JldHVybiBhQS5jaGFyQ29kZUF0 KDApfXN3aXRjaChhQS5jaGFyQXQoMSkpe2Nhc2UiYiI6cmV0dXJuIDg7Y2FzZSJ0 IjpyZXR1cm4gOTtjYXNlIm4iOnJldHVybiAxMDtjYXNlInYiOnJldHVybiAxMTtj YXNlImYiOnJldHVybiAxMjtjYXNlInIiOnJldHVybiAxMztjYXNlInUiOmNhc2Ui eCI6cmV0dXJuIHBhcnNlSW50KGFBLnN1YnN0cmluZygyKSwxNil8fGFBLmNoYXJD b2RlQXQoMSk7Y2FzZSIwIjpjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQi OmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOnJldHVybiBwYXJzZUludChhQS5zdWJz dHJpbmcoMSksOCk7ZGVmYXVsdDpyZXR1cm4gYUEuY2hhckNvZGVBdCgxKX19ZnVu Y3Rpb24gYW8oYUEpe2lmKGFBPDMyKXtyZXR1cm4oYUE8MTY/IlxceDAiOiJcXHgi KSthQS50b1N0cmluZygxNil9dmFyIGFCPVN0cmluZy5mcm9tQ2hhckNvZGUoYUEp O2lmKGFCPT09IlxcInx8YUI9PT0iLSJ8fGFCPT09IlsifHxhQj09PSJdIil7YUI9 IlxcIithQn1yZXR1cm4gYUJ9ZnVuY3Rpb24gYXQoYUgpe3ZhciBhTD1hSC5zdWJz dHJpbmcoMSxhSC5sZW5ndGgtMSkubWF0Y2gobmV3IFJlZ0V4cCgiXFxcXHVbMC05 QS1GYS1mXXs0fXxcXFxceFswLTlBLUZhLWZdezJ9fFxcXFxbMC0zXVswLTddezAs Mn18XFxcXFswLTddezEsMn18XFxcXFtcXHNcXFNdfC18W14tXFxcXF0iLCJnIikp O3ZhciBhRj1bXTt2YXIgYUE9W107dmFyIGFKPWFMWzBdPT09Il4iO2Zvcih2YXIg YU09YUo/MTowLGFFPWFMLmxlbmd0aDthTTxhRTsrK2FNKXt2YXIgYUM9YUxbYU1d O3N3aXRjaChhQyl7Y2FzZSJcXEIiOmNhc2UiXFxiIjpjYXNlIlxcRCI6Y2FzZSJc XGQiOmNhc2UiXFxTIjpjYXNlIlxccyI6Y2FzZSJcXFciOmNhc2UiXFx3IjphRi5w dXNoKGFDKTtjb250aW51ZX12YXIgYUI9YXcoYUMpO3ZhciBhRztpZihhTSsyPGFF JiYiLSI9PT1hTFthTSsxXSl7YUc9YXcoYUxbYU0rMl0pO2FNKz0yfWVsc2V7YUc9 YUJ9YUEucHVzaChbYUIsYUddKTtpZighKGFHPDY1fHxhQj4xMjIpKXtpZighKGFH PDY1fHxhQj45MCkpe2FBLnB1c2goW01hdGgubWF4KDY1LGFCKXwzMixNYXRoLm1p bihhRyw5MCl8MzJdKX1pZighKGFHPDk3fHxhQj4xMjIpKXthQS5wdXNoKFtNYXRo Lm1heCg5NyxhQikmfjMyLE1hdGgubWluKGFHLDEyMikmfjMyXSl9fX1hQS5zb3J0 KGZ1bmN0aW9uKGFQLGFPKXtyZXR1cm4oYVBbMF0tYU9bMF0pfHwoYU9bMV0tYVBb MV0pfSk7dmFyIGFEPVtdO3ZhciBhSz1bTmFOLE5hTl07Zm9yKHZhciBhTT0wO2FN PGFBLmxlbmd0aDsrK2FNKXt2YXIgYU49YUFbYU1dO2lmKGFOWzBdPD1hS1sxXSsx KXthS1sxXT1NYXRoLm1heChhS1sxXSxhTlsxXSl9ZWxzZXthRC5wdXNoKGFLPWFO KX19dmFyIGFJPVsiWyJdO2lmKGFKKXthSS5wdXNoKCJeIil9YUkucHVzaC5hcHBs eShhSSxhRik7Zm9yKHZhciBhTT0wO2FNPGFELmxlbmd0aDsrK2FNKXt2YXIgYU49 YURbYU1dO2FJLnB1c2goYW8oYU5bMF0pKTtpZihhTlsxXT5hTlswXSl7aWYoYU5b MV0rMT5hTlswXSl7YUkucHVzaCgiLSIpfWFJLnB1c2goYW8oYU5bMV0pKX19YUku cHVzaCgiXSIpO3JldHVybiBhSS5qb2luKCIiKX1mdW5jdGlvbiBhcihhRyl7dmFy IGFFPWFHLnNvdXJjZS5tYXRjaChuZXcgUmVnRXhwKCIoPzpcXFsoPzpbXlxceDVD XFx4NURdfFxcXFxbXFxzXFxTXSkqXFxdfFxcXFx1W0EtRmEtZjAtOV17NH18XFxc XHhbQS1GYS1mMC05XXsyfXxcXFxcWzAtOV0rfFxcXFxbXnV4MC05XXxcXChcXD9b OiE9XXxbXFwoXFwpXFxeXXxbXlxceDVCXFx4NUNcXChcXClcXF5dKykiLCJnIikp O3ZhciBhQz1hRS5sZW5ndGg7dmFyIGFJPVtdO3ZhciBhSDtmb3IodmFyIGFGPTAs YUg9MDthRjxhQzsrK2FGKXt2YXIgYUI9YUVbYUZdO2lmKGFCPT09IigiKXsrK2FI fWVsc2V7aWYoIlxcIj09PWFCLmNoYXJBdCgwKSl7dmFyIGFBPSthQi5zdWJzdHJp bmcoMSk7aWYoYUEmJmFBPD1hSCl7YUlbYUFdPS0xfX19fWZvcih2YXIgYUY9MTth RjxhSS5sZW5ndGg7KythRil7aWYoLTE9PT1hSVthRl0pe2FJW2FGXT0rK2F5fX1m b3IodmFyIGFGPTAsYUg9MDthRjxhQzsrK2FGKXt2YXIgYUI9YUVbYUZdO2lmKGFC PT09IigiKXsrK2FIO2lmKGFJW2FIXT09PXVuZGVmaW5lZCl7YUVbYUZdPSIoPzoi fX1lbHNle2lmKCJcXCI9PT1hQi5jaGFyQXQoMCkpe3ZhciBhQT0rYUIuc3Vic3Ry aW5nKDEpO2lmKGFBJiZhQTw9YUgpe2FFW2FGXT0iXFwiK2FJW2FIXX19fX1mb3Io dmFyIGFGPTAsYUg9MDthRjxhQzsrK2FGKXtpZigiXiI9PT1hRVthRl0mJiJeIiE9 PWFFW2FGKzFdKXthRVthRl09IiJ9fWlmKGFHLmlnbm9yZUNhc2UmJmFuKXtmb3Io dmFyIGFGPTA7YUY8YUM7KythRil7dmFyIGFCPWFFW2FGXTt2YXIgYUQ9YUIuY2hh ckF0KDApO2lmKGFCLmxlbmd0aD49MiYmYUQ9PT0iWyIpe2FFW2FGXT1hdChhQil9 ZWxzZXtpZihhRCE9PSJcXCIpe2FFW2FGXT1hQi5yZXBsYWNlKC9bYS16QS1aXS9n LGZ1bmN0aW9uKGFKKXt2YXIgYUs9YUouY2hhckNvZGVBdCgwKTtyZXR1cm4iWyIr U3RyaW5nLmZyb21DaGFyQ29kZShhSyZ+MzIsYUt8MzIpKyJdIn0pfX19fXJldHVy biBhRS5qb2luKCIiKX12YXIgYXY9W107Zm9yKHZhciBhcT0wLGFwPWF1Lmxlbmd0 aDthcTxhcDsrK2FxKXt2YXIgYXo9YXVbYXFdO2lmKGF6Lmdsb2JhbHx8YXoubXVs dGlsaW5lKXt0aHJvdyBuZXcgRXJyb3IoIiIrYXopfWF2LnB1c2goIig/OiIrYXIo YXopKyIpIil9cmV0dXJuIG5ldyBSZWdFeHAoYXYuam9pbigifCIpLGF4PyJnaSI6 ImciKX12YXIgYWk9bnVsbDtmdW5jdGlvbiBhKGFxKXtpZihudWxsPT09YWkpe3Zh ciBhbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJQUkUiKTthby5hcHBlbmRDaGls ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnPCFET0NUWVBFIGZvbyBQVUJMSUMg ImZvbyBiYXIiPlxuPGZvbyAvPicpKTthaT0hLzwvLnRlc3QoYW8uaW5uZXJIVE1M KX1pZihhaSl7dmFyIGFwPWFxLmlubmVySFRNTDtpZihRKGFxKSl7YXA9cShhcCl9 ZWxzZXtpZigheihhcSxhcCkpe2FwPWFwLnJlcGxhY2UoLyg8YnJccypcLz8+KVtc clxuXSsvZywiJDEiKS5yZXBsYWNlKC8oPzpbXHJcbl0rWyBcdF0qKSsvZywiICIp fX1yZXR1cm4gYXB9dmFyIGFuPVtdO2Zvcih2YXIgYXI9YXEuZmlyc3RDaGlsZDth cjthcj1hci5uZXh0U2libGluZyl7YWooYXIsYW4pfXJldHVybiBhbi5qb2luKCIi KX1mdW5jdGlvbiBhZChhcCl7dmFyIGFuPSIgICAgICAgICAgICAgICAgIjt2YXIg YW89MDtyZXR1cm4gZnVuY3Rpb24oYXUpe3ZhciBhcj1udWxsO3ZhciBheD0wO2Zv cih2YXIgYXQ9MCxhdz1hdS5sZW5ndGg7YXQ8YXc7KythdCl7dmFyIGF2PWF1LmNo YXJBdChhdCk7c3dpdGNoKGF2KXtjYXNlIlx0IjppZighYXIpe2FyPVtdfWFyLnB1 c2goYXUuc3Vic3RyaW5nKGF4LGF0KSk7dmFyIGFxPWFwLShhbyVhcCk7YW8rPWFx O2Zvcig7YXE+PTA7YXEtPWFuLmxlbmd0aCl7YXIucHVzaChhbi5zdWJzdHJpbmco MCxhcSkpfWF4PWF0KzE7YnJlYWs7Y2FzZSJcbiI6YW89MDticmVhaztkZWZhdWx0 OisrYW99fWlmKCFhcil7cmV0dXJuIGF1fWFyLnB1c2goYXUuc3Vic3RyaW5nKGF4 KSk7cmV0dXJuIGFyLmpvaW4oIiIpfX12YXIgUD1uZXcgUmVnRXhwKCJbXjxdK3w8 IS0tW1xcc1xcU10qPy0tPnw8IVxcW0NEQVRBXFxbW1xcc1xcU10qP1xcXVxcXT58 PC8/W2EtekEtWl0oPzpbXj5cIiddfCdbXiddKid8XCJbXlwiXSpcIikqPnw8Iiwi ZyIpO3ZhciB1PS9ePFwhLS0vO3ZhciBTPS9ePCFcW0NEQVRBXFsvO3ZhciB0PS9e PGJyXGIvaTt2YXIgZj0vXjwoXC8/KShbYS16QS1aXVthLXpBLVowLTldKikvO2Z1 bmN0aW9uIEIoYUEpe3ZhciBhdz1hQS5tYXRjaChQKTt2YXIgYXo9W107dmFyIGFx PTA7dmFyIGFuPVtdO2lmKGF3KXtmb3IodmFyIGF2PTAsYXA9YXcubGVuZ3RoO2F2 PGFwOysrYXYpe3ZhciBheD1hd1thdl07aWYoYXgubGVuZ3RoPjEmJmF4LmNoYXJB dCgwKT09PSI8Iil7aWYodS50ZXN0KGF4KSl7Y29udGludWV9aWYoUy50ZXN0KGF4 KSl7YXoucHVzaChheC5zdWJzdHJpbmcoOSxheC5sZW5ndGgtMykpO2FxKz1heC5s ZW5ndGgtMTJ9ZWxzZXtpZih0LnRlc3QoYXgpKXthei5wdXNoKCJcbiIpOysrYXF9 ZWxzZXtpZihheC5pbmRleE9mKGFnKT49MCYmYWEoYXgpKXt2YXIgYW89YXgubWF0 Y2goZilbMl07dmFyIGF1PTE7dmFyIGF0O2VuZF90YWdfbG9vcDpmb3IoYXQ9YXYr MTthdDxhcDsrK2F0KXt2YXIgYXk9YXdbYXRdLm1hdGNoKGYpO2lmKGF5JiZheVsy XT09PWFvKXtpZihheVsxXT09PSIvIil7aWYoLS1hdT09PTApe2JyZWFrIGVuZF90 YWdfbG9vcH19ZWxzZXsrK2F1fX19aWYoYXQ8YXApe2FuLnB1c2goYXEsYXcuc2xp Y2UoYXYsYXQrMSkuam9pbigiIikpO2F2PWF0fWVsc2V7YW4ucHVzaChhcSxheCl9 fWVsc2V7YW4ucHVzaChhcSxheCl9fX19ZWxzZXt2YXIgYXI9cyhheCk7YXoucHVz aChhcik7YXErPWFyLmxlbmd0aH19fXJldHVybntzb3VyY2U6YXouam9pbigiIiks dGFnczphbn19ZnVuY3Rpb24gYWEoYW4pe3JldHVybiAhIWFuLnJlcGxhY2UoL1xz KFx3Kylccyo9XHMqKD86XCIoW15cIl0qKVwifCcoW15cJ10qKSd8KFxTKykpL2cs JyAkMT0iJDIkMyQ0IicpLm1hdGNoKC9bY0NdW2xMXVthQV1bc1NdW3NTXT1cIlte XCJdKlxibm9jb2RlXGIvKX1mdW5jdGlvbiBNKGFuLGFwLGFyLGFvKXtpZighYXAp e3JldHVybn12YXIgYXE9e3NvdXJjZTphcCxiYXNlUG9zOmFufTthcihhcSk7YW8u cHVzaC5hcHBseShhbyxhcS5kZWNvcmF0aW9ucyl9ZnVuY3Rpb24gaShhcCxhbyl7 dmFyIGFuPXt9O3ZhciBhcTsoZnVuY3Rpb24oKXt2YXIgYUE9YXAuY29uY2F0KGFv KTt2YXIgYUU9W107dmFyIGFEPXt9O2Zvcih2YXIgYXk9MCxhdz1hQS5sZW5ndGg7 YXk8YXc7KytheSl7dmFyIGF2PWFBW2F5XTt2YXIgYXo9YXZbM107aWYoYXope2Zv cih2YXIgYUI9YXoubGVuZ3RoOy0tYUI+PTA7KXthblthei5jaGFyQXQoYUIpXT1h dn19dmFyIGFDPWF2WzFdO3ZhciBheD0iIithQztpZighYUQuaGFzT3duUHJvcGVy dHkoYXgpKXthRS5wdXNoKGFDKTthRFtheF09bnVsbH19YUUucHVzaCgvW1wwLVx1 ZmZmZl0vKTthcT1uKGFFKX0pKCk7dmFyIGF1PWFvLmxlbmd0aDt2YXIgYXQ9L1xT Lzt2YXIgYXI9ZnVuY3Rpb24oYUUpe3ZhciBhdz1hRS5zb3VyY2UsYXY9YUUuYmFz ZVBvczt2YXIgYUE9W2F2LFVdO3ZhciBhQz0wO3ZhciBhSz1hdy5tYXRjaChhcSl8 fFtdO3ZhciBhRz17fTtmb3IodmFyIGFCPTAsYU89YUsubGVuZ3RoO2FCPGFPOysr YUIpe3ZhciBhRD1hS1thQl07dmFyIGFOPWFHW2FEXTt2YXIgYUY7dmFyIGFKO2lm KHR5cGVvZiBhTj09PSJzdHJpbmciKXthSj1mYWxzZX1lbHNle3ZhciBheD1hblth RC5jaGFyQXQoMCldO2lmKGF4KXthRj1hRC5tYXRjaChheFsxXSk7YU49YXhbMF19 ZWxzZXtmb3IodmFyIGFNPTA7YU08YXU7KythTSl7YXg9YW9bYU1dO2FGPWFELm1h dGNoKGF4WzFdKTtpZihhRil7YU49YXhbMF07YnJlYWt9fWlmKCFhRil7YU49VX19 YUo9YU4ubGVuZ3RoPj01JiYibGFuZy0iPT09YU4uc3Vic3RyaW5nKDAsNSk7aWYo YUomJiEoYUYmJmFGWzFdKSl7YUo9ZmFsc2U7YU49YWJ9aWYoIWFKKXthR1thRF09 YU59fXZhciBheT1hQzthQys9YUQubGVuZ3RoO2lmKCFhSil7YUEucHVzaChhdith eSxhTil9ZWxzZXt2YXIgYUk9YUZbMV07dmFyIGFIPWFELmluZGV4T2YoYUkpO3Zh ciBhej1hSCthSS5sZW5ndGg7dmFyIGFQPWFOLnN1YnN0cmluZyg1KTt2YXIgYUw9 YUEubGVuZ3RoLTEwO00oYXYrYXksYUQuc3Vic3RyaW5nKDAsYUgpLGFyLGFBKTtN KGF2K2F5K2FILGFJLHcoYVAsYUkpLGFBKTtNKGF2K2F5K2F6LGFELnN1YnN0cmlu ZyhheiksYXIsYUEpfX1hRS5kZWNvcmF0aW9ucz1hQX07cmV0dXJuIGFyfWZ1bmN0 aW9uIGsoYW8pe3ZhciBhcT1bXSxhbj1bXTtpZihhby50cmlwbGVRdW90ZWRTdHJp bmdzKXthcS5wdXNoKFtOLC9eKD86XCdcJ1wnKD86W15cJ1xcXXxcXFtcc1xTXXxc J3sxLDJ9KD89W15cJ10pKSooPzpcJ1wnXCd8JCl8XCJcIlwiKD86W15cIlxcXXxc XFtcc1xTXXxcInsxLDJ9KD89W15cIl0pKSooPzpcIlwiXCJ8JCl8XCcoPzpbXlxc XCddfFxcW1xzXFNdKSooPzpcJ3wkKXxcIig/OlteXFxcIl18XFxbXHNcU10pKig/ OlwifCQpKS8sbnVsbCwiJ1wiIl0pfWVsc2V7aWYoYW8ubXVsdGlMaW5lU3RyaW5n cyl7YXEucHVzaChbTiwvXig/OlwnKD86W15cXFwnXXxcXFtcc1xTXSkqKD86XCd8 JCl8XCIoPzpbXlxcXCJdfFxcW1xzXFNdKSooPzpcInwkKXxcYCg/OlteXFxcYF18 XFxbXHNcU10pKig/OlxgfCQpKS8sbnVsbCwiJ1wiYCJdKX1lbHNle2FxLnB1c2go W04sL14oPzpcJyg/OlteXFxcJ1xyXG5dfFxcLikqKD86XCd8JCl8XCIoPzpbXlxc XCJcclxuXXxcXC4pKig/OlwifCQpKS8sbnVsbCwiXCInIl0pfX1pZihhby52ZXJi YXRpbVN0cmluZ3Mpe2FuLnB1c2goW04sL15AXCIoPzpbXlwiXXxcIlwiKSooPzpc InwkKS8sbnVsbF0pfWlmKGFvLmhhc2hDb21tZW50cyl7aWYoYW8uY1N0eWxlQ29t bWVudHMpe2FxLnB1c2goW20sL14jKD86KD86ZGVmaW5lfGVsaWZ8ZWxzZXxlbmRp ZnxlcnJvcnxpZmRlZnxpbmNsdWRlfGlmbmRlZnxsaW5lfHByYWdtYXx1bmRlZnx3 YXJuaW5nKVxifFteXHJcbl0qKS8sbnVsbCwiIyJdKTthbi5wdXNoKFtOLC9ePCg/ Oig/Oig/OlwuXC5cLykqfFwvPykoPzpbXHctXSsoPzpcL1tcdy1dKykrKT9bXHct XStcLmh8W2Etel1cdyopPi8sbnVsbF0pfWVsc2V7YXEucHVzaChbbSwvXiNbXlxy XG5dKi8sbnVsbCwiIyJdKX19aWYoYW8uY1N0eWxlQ29tbWVudHMpe2FuLnB1c2go W20sL15cL1wvW15cclxuXSovLG51bGxdKTthbi5wdXNoKFttLC9eXC9cKltcc1xT XSo/KD86XCpcL3wkKS8sbnVsbF0pfWlmKGFvLnJlZ2V4TGl0ZXJhbHMpe3ZhciBh cj0oIi8oPz1bXi8qXSkoPzpbXi9cXHg1QlxceDVDXXxcXHg1Q1tcXHNcXFNdfFxc eDVCKD86W15cXHg1Q1xceDVEXXxcXHg1Q1tcXHNcXFNdKSooPzpcXHg1RHwkKSkr LyIpO2FuLnB1c2goWyJsYW5nLXJlZ2V4IixuZXcgUmVnRXhwKCJeIithZisiKCIr YXIrIikiKV0pfXZhciBhcD1hby5rZXl3b3Jkcy5yZXBsYWNlKC9eXHMrfFxzKyQv ZywiIik7aWYoYXAubGVuZ3RoKXthbi5wdXNoKFtLLG5ldyBSZWdFeHAoIl4oPzoi K2FwLnJlcGxhY2UoL1xzKy9nLCJ8IikrIilcXGIiKSxudWxsXSl9YXEucHVzaChb VSwvXlxzKy8sbnVsbCwiIFxyXG5cdFx4QTAiXSk7YW4ucHVzaChbViwvXkBbYS16 XyRdW2Etel8kQDAtOV0qL2ksbnVsbF0sW2FoLC9eQD9bQS1aXStbYS16XVtBLVph LXpfJEAwLTldKi8sbnVsbF0sW1UsL15bYS16XyRdW2Etel8kQDAtOV0qL2ksbnVs bF0sW1YsbmV3IFJlZ0V4cCgiXig/OjB4W2EtZjAtOV0rfCg/OlxcZCg/Ol9cXGQr KSpcXGQqKD86XFwuXFxkKik/fFxcLlxcZFxcKykoPzplWytcXC1dP1xcZCspPylb YS16XSoiLCJpIiksbnVsbCwiMDEyMzQ1Njc4OSJdLFthZSwvXi5bXlxzXHdcLiRA XCdcIlxgXC9cI10qLyxudWxsXSk7cmV0dXJuIGkoYXEsYW4pfXZhciBhYz1rKHtr ZXl3b3JkczpMLGhhc2hDb21tZW50czp0cnVlLGNTdHlsZUNvbW1lbnRzOnRydWUs bXVsdGlMaW5lU3RyaW5nczp0cnVlLHJlZ2V4TGl0ZXJhbHM6dHJ1ZX0pO2Z1bmN0 aW9uIE8oYXIpe3ZhciBhej1hci5zb3VyY2U7dmFyIGFxPWFyLmV4dHJhY3RlZFRh Z3M7dmFyIGFwPWFyLmRlY29yYXRpb25zO3ZhciBhdz1bXTt2YXIgYXU9MDt2YXIg YUU9bnVsbDt2YXIgYXg9bnVsbDt2YXIgYW89MDt2YXIgYUQ9MDt2YXIgYUY9YWQo d2luZG93LlBSX1RBQl9XSURUSCk7dmFyIGFCPS8oW1xyXG4gXSkgL2c7dmFyIGF0 PS8oXnwgKSAvZ207dmFyIGFBPS9cclxuP3xcbi9nO3ZhciBhdj0vWyBcclxuXSQv O3ZhciBhbj10cnVlO2Z1bmN0aW9uIGF5KGFHKXtpZihhRz5hdSl7aWYoYUUmJmFF IT09YXgpe2F3LnB1c2goIjwvc3Bhbj4iKTthRT1udWxsfWlmKCFhRSYmYXgpe2FF PWF4O2F3LnB1c2goJzxzcGFuIGNsYXNzPSInLGFFLCciPicpfXZhciBhSD1xKGFG KGF6LnN1YnN0cmluZyhhdSxhRykpKS5yZXBsYWNlKGFuP2F0OmFCLCIkMSZuYnNw OyIpO2FuPWF2LnRlc3QoYUgpO3ZhciBhST13aW5kb3cuX3ByX2lzSUU2KCk/IiZu YnNwOzxiciAvPiI6IjxiciAvPiI7YXcucHVzaChhSC5yZXBsYWNlKGFBLGFJKSk7 YXU9YUd9fXdoaWxlKHRydWUpe3ZhciBhQztpZihhbzxhcS5sZW5ndGgpe2lmKGFE PGFwLmxlbmd0aCl7YUM9YXFbYW9dPD1hcFthRF19ZWxzZXthQz10cnVlfX1lbHNl e2FDPWZhbHNlfWlmKGFDKXtheShhcVthb10pO2lmKGFFKXthdy5wdXNoKCI8L3Nw YW4+Iik7YUU9bnVsbH1hdy5wdXNoKGFxW2FvKzFdKTthbys9Mn1lbHNle2lmKGFE PGFwLmxlbmd0aCl7YXkoYXBbYURdKTtheD1hcFthRCsxXTthRCs9Mn1lbHNle2Jy ZWFrfX19YXkoYXoubGVuZ3RoKTtpZihhRSl7YXcucHVzaCgiPC9zcGFuPiIpfWFy LnByZXR0eVByaW50ZWRIdG1sPWF3LmpvaW4oIiIpfXZhciBBPXt9O2Z1bmN0aW9u IGUoYXAsYXEpe2Zvcih2YXIgYW49YXEubGVuZ3RoOy0tYW4+PTA7KXt2YXIgYW89 YXFbYW5dO2lmKCFBLmhhc093blByb3BlcnR5KGFvKSl7QVthb109YXB9ZWxzZXtp ZigiY29uc29sZSIgaW4gd2luZG93KXtjb25zb2xlLndhcm4oImNhbm5vdCBvdmVy cmlkZSBsYW5ndWFnZSBoYW5kbGVyICVzIixhbyl9fX19ZnVuY3Rpb24gdyhhbyxh bil7aWYoIShhbyYmQS5oYXNPd25Qcm9wZXJ0eShhbykpKXthbz0vXlxzKjwvLnRl c3QoYW4pPyJkZWZhdWx0LW1hcmt1cCI6ImRlZmF1bHQtY29kZSJ9cmV0dXJuIEFb YW9dfWUoYWMsWyJkZWZhdWx0LWNvZGUiXSk7ZShpKFtdLFtbVSwvXltePD9dKy9d LFtULC9ePCFcd1tePl0qKD86PnwkKS9dLFttLC9ePFwhLS1bXHNcU10qPyg/Oi1c LT58JCkvXSxbImxhbmctIiwvXjxcPyhbXHNcU10rPykoPzpcPz58JCkvXSxbImxh bmctIiwvXjwlKFtcc1xTXSs/KSg/OiU+fCQpL10sW2FlLC9eKD86PFslP118WyU/ XT4pL10sWyJsYW5nLSIsL148eG1wXGJbXj5dKj4oW1xzXFNdKz8pPFwveG1wXGJb Xj5dKj4vaV0sWyJsYW5nLWpzIiwvXjxzY3JpcHRcYltePl0qPihbXHNcU10rPyk8 XC9zY3JpcHRcYltePl0qPi9pXSxbImxhbmctY3NzIiwvXjxzdHlsZVxiW14+XSo+ KFtcc1xTXSs/KTxcL3N0eWxlXGJbXj5dKj4vaV0sWyJsYW5nLWluLnRhZyIsL14o PFwvP1thLXpdW148Pl0qPikvaV1dKSxbImRlZmF1bHQtbWFya3VwIiwiaHRtIiwi aHRtbCIsIm14bWwiLCJ4aHRtbCIsInhtbCIsInhzbCJdKTtlKGkoW1tVLC9eW1xz XSsvLG51bGwsIiBcdFxyXG4iXSxbciwvXig/OlwiW15cIl0qXCI/fFwnW15cJ10q XCc/KS8sbnVsbCwiXCInIl1dLFtbcCwvXl48XC8/W2Etel0oPzpbXHc6LV0qXHcp P3xcLz8+JC9pXSxbYWssL14oPyFzdHlsZVtccz1dfG9uKVthLXpdKD86W1x3Oi1d Klx3KT8vaV0sWyJsYW5nLXVxLnZhbCIsL149XHMqKFtePlwnXCJcc10qKD86W14+ XCdcIlxzXC9dfFwvKD89XHMpKSkvXSxbYWUsL15bPTw+XC9dKy9dLFsibGFuZy1q cyIsL15vblx3K1xzKj1ccypcIihbXlwiXSspXCIvaV0sWyJsYW5nLWpzIiwvXm9u XHcrXHMqPVxzKlwnKFteXCddKylcJy9pXSxbImxhbmctanMiLC9eb25cdytccyo9 XHMqKFteXCJcJz5cc10rKS9pXSxbImxhbmctY3NzIiwvXnN0eWxlXHMqPVxzKlwi KFteXCJdKylcIi9pXSxbImxhbmctY3NzIiwvXnN0eWxlXHMqPVxzKlwnKFteXCdd KylcJy9pXSxbImxhbmctY3NzIiwvXnN0eWxlXHMqPVxzKihbXlwiXCc+XHNdKykv aV1dKSxbImluLnRhZyJdKTtlKGkoW10sW1tyLC9eW1xzXFNdKy9dXSksWyJ1cS52 YWwiXSk7ZShrKHtrZXl3b3JkczpvLGhhc2hDb21tZW50czp0cnVlLGNTdHlsZUNv bW1lbnRzOnRydWV9KSxbImMiLCJjYyIsImNwcCIsImN4eCIsImN5YyIsIm0iXSk7 ZShrKHtrZXl3b3JkczoibnVsbCB0cnVlIGZhbHNlIn0pLFsianNvbiJdKTtlKGso e2tleXdvcmRzOmFsLGhhc2hDb21tZW50czp0cnVlLGNTdHlsZUNvbW1lbnRzOnRy dWUsdmVyYmF0aW1TdHJpbmdzOnRydWV9KSxbImNzIl0pO2Uoayh7a2V5d29yZHM6 RyxjU3R5bGVDb21tZW50czp0cnVlfSksWyJqYXZhIl0pO2Uoayh7a2V5d29yZHM6 WCxoYXNoQ29tbWVudHM6dHJ1ZSxtdWx0aUxpbmVTdHJpbmdzOnRydWV9KSxbImJz aCIsImNzaCIsInNoIl0pO2Uoayh7a2V5d29yZHM6WixoYXNoQ29tbWVudHM6dHJ1 ZSxtdWx0aUxpbmVTdHJpbmdzOnRydWUsdHJpcGxlUXVvdGVkU3RyaW5nczp0cnVl fSksWyJjdiIsInB5Il0pO2Uoayh7a2V5d29yZHM6eSxoYXNoQ29tbWVudHM6dHJ1 ZSxtdWx0aUxpbmVTdHJpbmdzOnRydWUscmVnZXhMaXRlcmFsczp0cnVlfSksWyJw ZXJsIiwicGwiLCJwbSJdKTtlKGsoe2tleXdvcmRzOmosaGFzaENvbW1lbnRzOnRy dWUsbXVsdGlMaW5lU3RyaW5nczp0cnVlLHJlZ2V4TGl0ZXJhbHM6dHJ1ZX0pLFsi cmIiXSk7ZShrKHtrZXl3b3JkczpGLGNTdHlsZUNvbW1lbnRzOnRydWUscmVnZXhM aXRlcmFsczp0cnVlfSksWyJqcyJdKTtlKGkoW10sW1tOLC9eW1xzXFNdKy9dXSks WyJyZWdleCJdKTtmdW5jdGlvbiBnKGFwKXt2YXIgYXI9YXAuc291cmNlQ29kZUh0 bWw7dmFyIGFvPWFwLmxhbmdFeHRlbnNpb247YXAucHJldHR5UHJpbnRlZEh0bWw9 YXI7dHJ5e3ZhciBhdD1CKGFyKTt2YXIgYW49YXQuc291cmNlO2FwLnNvdXJjZT1h bjthcC5iYXNlUG9zPTA7YXAuZXh0cmFjdGVkVGFncz1hdC50YWdzO3coYW8sYW4p KGFwKTtPKGFwKX1jYXRjaChhcSl7aWYoImNvbnNvbGUiIGluIHdpbmRvdyl7Y29u c29sZS5sb2coYXEpO2NvbnNvbGUudHJhY2UoKX19fWZ1bmN0aW9uIEgoYXAsYW8p e3ZhciBhbj17c291cmNlQ29kZUh0bWw6YXAsbGFuZ0V4dGVuc2lvbjphb307Zyhh bik7cmV0dXJuIGFuLnByZXR0eVByaW50ZWRIdG1sfWZ1bmN0aW9uIGQoYXope3Zh ciBhdT13aW5kb3cuX3ByX2lzSUU2KCk7dmFyIGF4PVtkb2N1bWVudC5nZXRFbGVt ZW50c0J5VGFnTmFtZSgicHJlIiksZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h bWUoImNvZGUiKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieG1wIild O3ZhciBhbz1bXTtmb3IodmFyIGF3PTA7YXc8YXgubGVuZ3RoOysrYXcpe2Zvcih2 YXIgYXY9MCxhcT1heFthd10ubGVuZ3RoO2F2PGFxOysrYXYpe2FvLnB1c2goYXhb YXddW2F2XSl9fWF4PW51bGw7dmFyIGFyPURhdGU7aWYoIWFyLm5vdyl7YXI9e25v dzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX19dmFyIGF0 PTA7dmFyIGFuO2Z1bmN0aW9uIGFwKCl7dmFyIGFBPSh3aW5kb3cuUFJfU0hPVUxE X1VTRV9DT05USU5VQVRJT04/YXIubm93KCkrMjUwOkluZmluaXR5KTtmb3IoO2F0 PGFvLmxlbmd0aCYmYXIubm93KCk8YUE7YXQrKyl7dmFyIGFDPWFvW2F0XTtpZihh Qy5jbGFzc05hbWUmJmFDLmNsYXNzTmFtZS5pbmRleE9mKCJwcmV0dHlwcmludCIp Pj0wKXt2YXIgYUI9YUMuY2xhc3NOYW1lLm1hdGNoKC9cYmxhbmctKFx3KylcYi8p O2lmKGFCKXthQj1hQlsxXX12YXIgYUY9ZmFsc2U7Zm9yKHZhciBhRT1hQy5wYXJl bnROb2RlO2FFO2FFPWFFLnBhcmVudE5vZGUpe2lmKChhRS50YWdOYW1lPT09InBy ZSJ8fGFFLnRhZ05hbWU9PT0iY29kZSJ8fGFFLnRhZ05hbWU9PT0ieG1wIikmJmFF LmNsYXNzTmFtZSYmYUUuY2xhc3NOYW1lLmluZGV4T2YoInByZXR0eXByaW50Iik+ PTApe2FGPXRydWU7YnJlYWt9fWlmKCFhRil7dmFyIGFEPWEoYUMpO2FEPWFELnJl cGxhY2UoLyg/OlxyXG4/fFxuKSQvLCIiKTthbj17c291cmNlQ29kZUh0bWw6YUQs bGFuZ0V4dGVuc2lvbjphQixzb3VyY2VOb2RlOmFDfTtnKGFuKTtheSgpfX19aWYo YXQ8YW8ubGVuZ3RoKXtzZXRUaW1lb3V0KGFwLDI1MCl9ZWxzZXtpZihheil7YXoo KX19fWZ1bmN0aW9uIGF5KCl7dmFyIGFIPWFuLnByZXR0eVByaW50ZWRIdG1sO2lm KCFhSCl7cmV0dXJufXZhciBhRD1hbi5zb3VyY2VOb2RlO2lmKCFRKGFEKSl7YUQu aW5uZXJIVE1MPWFIfWVsc2V7dmFyIGFBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo IlBSRSIpO2Zvcih2YXIgYUM9MDthQzxhRC5hdHRyaWJ1dGVzLmxlbmd0aDsrK2FD KXt2YXIgYUk9YUQuYXR0cmlidXRlc1thQ107aWYoYUkuc3BlY2lmaWVkKXt2YXIg YUY9YUkubmFtZS50b0xvd2VyQ2FzZSgpO2lmKGFGPT09ImNsYXNzIil7YUEuY2xh c3NOYW1lPWFJLnZhbHVlfWVsc2V7YUEuc2V0QXR0cmlidXRlKGFJLm5hbWUsYUku dmFsdWUpfX19YUEuaW5uZXJIVE1MPWFIO2FELnBhcmVudE5vZGUucmVwbGFjZUNo aWxkKGFBLGFEKTthRD1hQX1pZihhdSYmYUQudGFnTmFtZT09PSJQUkUiKXt2YXIg YUU9YUQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJyIik7Zm9yKHZhciBhQj1hRS5s ZW5ndGg7LS1hQj49MDspe3ZhciBhRz1hRVthQl07YUcucGFyZW50Tm9kZS5yZXBs YWNlQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlxyIiksYUcpfX19YXAo KX13aW5kb3cuUFJfbm9ybWFsaXplZEh0bWw9YWo7d2luZG93LnByZXR0eVByaW50 T25lPUg7d2luZG93LnByZXR0eVByaW50PWQ7d2luZG93LlBSPXtjb21iaW5lUHJl Zml4UGF0dGVybnM6bixjcmVhdGVTaW1wbGVMZXhlcjppLHJlZ2lzdGVyTGFuZ0hh bmRsZXI6ZSxzb3VyY2VEZWNvcmF0b3I6ayxQUl9BVFRSSUJfTkFNRTphayxQUl9B VFRSSUJfVkFMVUU6cixQUl9DT01NRU5UOm0sUFJfREVDTEFSQVRJT046VCxQUl9L RVlXT1JEOkssUFJfTElURVJBTDpWLFBSX05PQ09ERTphZyxQUl9QTEFJTjpVLFBS X1BVTkNUVUFUSU9OOmFlLFBSX1NPVVJDRTphYixQUl9TVFJJTkc6TixQUl9UQUc6 cCxQUl9UWVBFOmFofX0pKCk7alF1ZXJ5LmV4cHJbIjoiXS5yZWdleD1mdW5jdGlv bihnLGQsYyl7dmFyIGg9Y1szXS5zcGxpdCgiLCIpLGI9L14oZGF0YXxjc3MpOi8s YT17bWV0aG9kOmhbMF0ubWF0Y2goYik/aFswXS5zcGxpdCgiOiIpWzBdOiJhdHRy Iixwcm9wZXJ0eTpoLnNoaWZ0KCkucmVwbGFjZShiLCIiKX0sZj0iaWciLGU9bmV3 IFJlZ0V4cChoLmpvaW4oIiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKSxmKTty ZXR1cm4gZS50ZXN0KGpRdWVyeShnKVthLm1ldGhvZF0oYS5wcm9wZXJ0eSkpfTs= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=question.js Content-Type: application/x-javascript; charset=utf-8; name=question.js Content-Location: http://sstatic.net/so/js/question.js?v=5057 Content-Transfer-Encoding: Base64 77u/dmFyIHZvdGU9ZnVuY3Rpb24oKXt2YXIgaz17aW5mb3JtTW9kZXJhdG9yOi0x LHVuZG9Nb2Q6MCxhY2NlcHRlZEJ5T3duZXI6MSx1cE1vZDoyLGRvd25Nb2Q6Myxv ZmZlbnNpdmU6NCxmYXZvcml0ZTo1LGNsb3NlOjYscmVvcGVuOjcsZGVsZXRpb246 MTAsdW5kZWxldGlvbjoxMSxzcGFtOjEyfTt2YXIgZj1pbWFnZVBhdGgrInZvdGUt YXJyb3ctZG93bi5wbmciO3ZhciBjPWltYWdlUGF0aCsidm90ZS1hcnJvdy1kb3du LW9uLnBuZyI7dmFyIHg9aW1hZ2VQYXRoKyJ2b3RlLWFycm93LXVwLnBuZyI7dmFy IHc9aW1hZ2VQYXRoKyJ2b3RlLWFycm93LXVwLW9uLnBuZyI7dmFyIEE9aW1hZ2VQ YXRoKyJ2b3RlLWZhdm9yaXRlLW9uLnBuZyI7dmFyIG89aW1hZ2VQYXRoKyJ2b3Rl LWZhdm9yaXRlLW9mZi5wbmciO3ZhciBsPWZ1bmN0aW9uKCl7dmFyIEM9JzxhIGhy ZWY9Ii91c2Vycy9sb2dpbj9yZXR1cm51cmw9Jytlc2NhcGUoZG9jdW1lbnQubG9j YXRpb24pKyciPmxvZ2luIG9yIHJlZ2lzdGVyPC9hPic7JCgiZGl2LnZvdGUiKS5m aW5kKCJpbWciKS5ub3QoIi52b3RlLWFjY2VwdGVkIikudW5iaW5kKCJjbGljayIp LmNsaWNrKGZ1bmN0aW9uKCl7dSgkKHRoaXMpLCJQbGVhc2UgIitDKyIgdG8gdXNl IHZvdGluZy4iKX0pO3ooKS51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24o KXt1KCQodGhpcyksIlBsZWFzZSAiK0MrIiB0byBmbGFnIHRoaXMgcG9zdC4iKX0p fTt2YXIgQj1mdW5jdGlvbihDKXtpZighQyl7Qz0iZGl2LnZvdGUifSQoQykuZmlu ZCgiaW1nLnZvdGUtdXAiKS51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24o KXt2b3RlLnVwKCQodGhpcykpfSk7JChDKS5maW5kKCJpbWcudm90ZS1kb3duIiku dW5iaW5kKCJjbGljayIpLmNsaWNrKGZ1bmN0aW9uKCl7dm90ZS5kb3duKCQodGhp cykpfSk7JChDKS5maW5kKCJpbWcudm90ZS1mYXZvcml0ZSIpLnVuYmluZCgiY2xp Y2siKS5jbGljayhmdW5jdGlvbigpe3ZvdGUuZmF2b3JpdGUoJCh0aGlzKSl9KX07 dmFyIGk9ZnVuY3Rpb24oQyl7Qy5wYXJlbnQoKS5maW5kKCJpbWciKS5ub3QoIi52 b3RlLWFjY2VwdGVkIikudW5iaW5kKCJjbGljayIpfTt2YXIgZD1mdW5jdGlvbihD KXskLmFqYXgoe3R5cGU6IkdFVCIsdXJsOiIvcG9zdHMvIitDKyIvdm90ZXMiLGRh dGFUeXBlOiJqc29uIixzdWNjZXNzOnYsY2FjaGU6ZmFsc2V9KX07dmFyIHY9ZnVu Y3Rpb24oQyl7JC5lYWNoKEMsZnVuY3Rpb24oKXt2YXIgRD0kKCJkaXYudm90ZTpo YXMoaW5wdXRbdmFsdWU9Iit0aGlzLlBvc3RJZCsiXSkiKTtzd2l0Y2godGhpcy5W b3RlVHlwZUlkKXtjYXNlIGsudXBNb2Q6RC5maW5kKCJpbWcudm90ZS11cCIpLmF0 dHIoInNyYyIsdyk7YnJlYWs7Y2FzZSBrLmRvd25Nb2Q6RC5maW5kKCJpbWcudm90 ZS1kb3duIikuYXR0cigic3JjIixjKTticmVhaztjYXNlIGsuZmF2b3JpdGU6RC5m aW5kKCJpbWcudm90ZS1mYXZvcml0ZSIpLmF0dHIoInNyYyIsQSk7RC5maW5kKCJk aXYuZmF2b3JpdGVjb3VudCBiIikuYWRkQ2xhc3MoImZhdm9yaXRlY291bnQtc2Vs ZWN0ZWQiKTticmVhaztkZWZhdWx0OmFsZXJ0KCJzaXRlLnZvdGUuanMgPiBoaWdo bGlnaHRFeGlzdGluZ1ZvdGVzIGhhcyBubyBjYXNlIGZvciAiK3RoaXMuVm90ZVR5 cGVJZCk7YnJlYWt9fSk7dm90ZXNDYXN0PW51bGx9O3ZhciByPWZ1bmN0aW9uKCl7 cmV0dXJuICQoImRpdi52b3RlIGltZ1tpZF49J3ZvdGUtYWNjZXB0ZWQtJ10iKX07 dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4gJCgiZGl2LnBvc3QtbWVudSBhW2lkXj0n bG9jay1wb3N0LSddIil9O3ZhciB6PWZ1bmN0aW9uKCl7cmV0dXJuICQoImRpdi5w b3N0LW1lbnUgYVtpZF49J2ZsYWctcG9zdC0nXSIpfTt2YXIgbj1mdW5jdGlvbigp e3ZhciBDPW5ldyBJbWFnZSgpO0Muc3JjPXc7Qz1uZXcgSW1hZ2UoKTtDLnNyYz1j fTt2YXIgbT1mdW5jdGlvbihDKXtyZXR1cm4gQy5hdHRyKCJzcmMiKT09d307dmFy IHE9ZnVuY3Rpb24oQyl7cmV0dXJuIEMuYXR0cigic3JjIik9PUF9O3ZhciBhPWZ1 bmN0aW9uKEMpe3JldHVybiBDLmF0dHIoInNyYyIpPT1jfTt2YXIgaD1mdW5jdGlv bihDKXtyZXR1cm4gQy5wYXJlbnQoKS5maW5kKCJpbnB1dCIpLnZhbCgpfTt2YXIg eT1mdW5jdGlvbihELEMpe2lmKG0oRCkpe0QuYXR0cigic3JjIix4KX1pZihhKEMp KXtDLmF0dHIoInNyYyIsZil9fTt2YXIgcz1mdW5jdGlvbihDLEQpe3ZhciBFPUMu c2libGluZ3MoInNwYW4udm90ZS1jb3VudC1wb3N0Iik7RS50ZXh0KHBhcnNlSW50 KEUudGV4dCgpLDEwKStEKX07dmFyIHQ9ZnVuY3Rpb24oRSxEKXtpKEUpO3ZhciBD PWgoRSk7cChFLEMsRCxiKX07dmFyIHA9ZnVuY3Rpb24oRixELEMsSSxIKXt2YXIg Rz17ZmtleTpma2V5fTtpZihIKXtmb3IodmFyIEUgaW4gSCl7R1tFXT1IW0VdfX0k LmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL3Bvc3RzLyIrRCsiL3ZvdGUvIitDLGRh dGE6RyxkYXRhVHlwZToianNvbiIsc3VjY2VzczpmdW5jdGlvbihKKXtJKEYsRCxK KX0sZXJyb3I6ZnVuY3Rpb24oKXt1KEYsIkFuIGVycm9yIGhhcyBvY2N1cnJlZCAt IHBsZWFzZSByZXRyeSB5b3VyIHJlcXVlc3QuIil9fSl9O3ZhciBiPWZ1bmN0aW9u KEQsQyxFKXtpZihFLlN1Y2Nlc3Mpe2lmKEUuTWVzc2FnZSl7ZyhELEUuTWVzc2Fn ZSl9fWVsc2V7aWYod2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmZpcmVi dWcmJighRS5NZXNzYWdlfHxFLk1lc3NhZ2UubGVuZ3RoPDUpKXt1KEQsIkZpcmVC dWcgc2VlbXMgdG8gYmUgZW5hYmxlZCwgd2hpY2ggY2FuIHNvbWV0aW1lcyBpbnRl cmZlcmUgd2l0aCB2b3Rpbmc7PGJyPnBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIHRv IHNlZSBpZiB5b3VyIHZvdGUgd2FzIHByb2Nlc3NlZC48YnI+PGJyPklmIHRoaXMg cGVyc2lzdHMsIGNvbnNpZGVyIGRpc2FibGluZyBGaXJlQnVnIGZvciB0aGlzIHNp dGUuIil9ZWxzZXt1KEQsRS5NZXNzYWdlKTt5KEQsRCk7RC5wYXJlbnQoKS5maW5k KCJzcGFuLnZvdGUtY291bnQtcG9zdCIpLnRleHQoRS5OZXdTY29yZSk7aWYoRS5M YXN0Vm90ZVR5cGVJZCl7aihELEUuTGFzdFZvdGVUeXBlSWQpfX19QihELnBhcmVu dCgpKX07dmFyIGo9ZnVuY3Rpb24oRixEKXt2YXIgRSxDO2lmKEQ9PWsudXBNb2Qp e0U9ImltZy52b3RlLXVwIjtDPXd9ZWxzZXtpZihEPT1rLmRvd25Nb2Qpe0U9Imlt Zy52b3RlLWRvd24iO0M9Y319aWYoRSl7Ri5wYXJlbnQoKS5maW5kKEUpLmF0dHIo InNyYyIsQyl9fTt2YXIgdT1mdW5jdGlvbihDLEQpe3ZhciBFPSQoJzxkaXYgY2xh c3M9ImVycm9yLW5vdGlmaWNhdGlvbiBzdXBlcm5vdmFiZyI+PGgyPicrRCsiPC9o Mj4oY2xpY2sgb24gdGhpcyBib3ggdG8gZGlzbWlzcyk8L2Rpdj4iKTtFLmNsaWNr KGZ1bmN0aW9uKEYpeyQoIi5lcnJvci1ub3RpZmljYXRpb24iKS5mYWRlT3V0KCJm YXN0IixmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlKCl9KX0pO0MucGFyZW50KCku YXBwZW5kKEUpO0UuZmFkZUluKCJmYXN0Iil9O3ZhciBnPWZ1bmN0aW9uKEQsRil7 dmFyIEc9JCgnPGRpdiBjbGFzcz0iZXJyb3Itbm90aWZpY2F0aW9uIHN1cGVybm92 YWJnIj48aDI+JytGKyI8L2gyPjwvZGl2PiIpO0QucGFyZW50KCkuYXBwZW5kKEcp O0cuZmFkZUluKCJmYXN0Iik7dmFyIEM9ZnVuY3Rpb24oKXskKCIuZXJyb3Itbm90 aWZpY2F0aW9uIikuZmFkZU91dCgiZmFzdCIsZnVuY3Rpb24oKXskKHRoaXMpLnJl bW92ZSgpfSl9O3ZhciBFPU1hdGgubWF4KDI1MDAsRi5sZW5ndGgqNDApO3NldFRp bWVvdXQoQyxFKX07cmV0dXJue2luaXQ6ZnVuY3Rpb24oQyl7aWYodHlwZW9mIGlz UmVnaXN0ZXJlZCE9InVuZGVmaW5lZCImJmlzUmVnaXN0ZXJlZCl7bigpO2lmKHZv dGVzQ2FzdD09bnVsbCl7ZChDKX1lbHNle3Yodm90ZXNDYXN0KX1CKCk7eigpLnVu YmluZCgiY2xpY2siKS5jbGljayhmdW5jdGlvbigpe3ZvdGUuZmxhZygkKHRoaXMp KX0pfWVsc2V7bCgpfXIoKS51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24o KXt2b3RlLmFjY2VwdGVkQW5zd2VyKCQodGhpcykpfSk7dmFyIEQ9JCgiZGl2LnBv c3QtbWVudSBhW2lkXj0nY2xvc2UtcXVlc3Rpb24tJ10iKTtELnVuYmluZCgiY2xp Y2siKS5jbGljayhmdW5jdGlvbigpe3ZvdGUuY2xvc2UoRCl9KTskKCJkaXYucG9z dC1tZW51IGFbaWRePSdkZWxldGUtcG9zdC0nXSIpLnVuYmluZCgiY2xpY2siKS5j bGljayhmdW5jdGlvbigpe3ZvdGUuZGVsZXRpb24oJCh0aGlzKSl9KX0sdXA6ZnVu Y3Rpb24oRil7dmFyIEc9Ri5wYXJlbnQoKS5maW5kKCJpbWcudm90ZS11cCIpO3Zh ciBFPUYucGFyZW50KCkuZmluZCgiaW1nLnZvdGUtZG93biIpO3ZhciBEPW0oRyk7 dmFyIEM9YShFKTt2YXIgSD1EPy0xOihDPzI6MSk7cyhGLEgpO3koRyxFKTtpZigh RCl7Ry5hdHRyKCJzcmMiLHcpfXQoRixEP2sudW5kb01vZDprLnVwTW9kKX0sZG93 bjpmdW5jdGlvbihGKXt2YXIgRz1GLnBhcmVudCgpLmZpbmQoImltZy52b3RlLXVw Iik7dmFyIEU9Ri5wYXJlbnQoKS5maW5kKCJpbWcudm90ZS1kb3duIik7dmFyIEQ9 YShFKTt2YXIgQz1tKEcpO3ZhciBIPUQ/MTooQz8tMjotMSk7cyhGLEgpO3koRyxF KTtpZighRCl7RS5hdHRyKCJzcmMiLGMpfXQoRixEP2sudW5kb01vZDprLmRvd25N b2QpfSxmYXZvcml0ZTpmdW5jdGlvbihEKXt2YXIgRT1ELnBhcmVudCgpLmZpbmQo ImRpdi5mYXZvcml0ZWNvdW50IGIiKTt2YXIgQz1wYXJzZUludCgiMCIrRS50ZXh0 KCkucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLDEwKTtpZighcShEKSl7RC5hdHRy KCJzcmMiLEEpO0UuYWRkQ2xhc3MoImZhdm9yaXRlY291bnQtc2VsZWN0ZWQiKS50 ZXh0KCsrQyl9ZWxzZXtELmF0dHIoInNyYyIsbyk7RS5yZW1vdmVDbGFzcygiZmF2 b3JpdGVjb3VudC1zZWxlY3RlZCIpLnRleHQoKEMtLTw9MCk/IiI6Qyl9RC51bmJp bmQoImNsaWNrIik7cChELGgoRCksay5mYXZvcml0ZSxmdW5jdGlvbihGKXtELmNs aWNrKGZ1bmN0aW9uKCl7dm90ZS5mYXZvcml0ZSgkKHRoaXMpKX0pfSl9LGFjY2Vw dGVkQW5zd2VyOmZ1bmN0aW9uKEQpe2lmKHR5cGVvZiBoYXNPcGVuQm91bnR5IT0i dW5kZWZpbmVkIiYmaGFzT3BlbkJvdW50eSl7dmFyIEU9KCQoIiMiK0MrIi1pcy1v d25lZC1ieS1xdWVzdGlvbi1vd25lciIpLmxlbmd0aD4wKT8iQXJlIHlvdSBzdXJl IHlvdSB3YW50IHRvIGFjY2VwdCB5b3VyIG93biBhbnN3ZXI/ICBZb3Ugd2lsbCBT VElMTCBMT1NFIHRoZSBvZmZlcmVkIHJlcCBhbmQgVEhJUyBDQU5OT1QgQkUgVU5E T05FISI6IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBhY2NlcHQgdGhpcyBhbnN3 ZXIgdG8geW91ciBib3VudHkgcXVlc3Rpb24gLSBUSElTIENBTk5PVCBCRSBVTkRP TkUhIjtpZighY29uZmlybShFKSl7cmV0dXJufX1pZih0eXBlb2YgaXNCb3VudHlR dWVzdGlvbiE9InVuZGVmaW5lZCImJmlzQm91bnR5UXVlc3Rpb24mJnR5cGVvZiBo YXNPcGVuQm91bnR5PT0idW5kZWZpbmVkIil7dShELCJZb3UgY2Fubm90IGNoYW5n ZSB0aGUgYWNjZXB0ZWQgYW5zd2VyIG9uIGEgYm91bnR5IHF1ZXN0aW9uIik7cmV0 dXJufXIoKS51bmJpbmQoImNsaWNrIik7dmFyIEM9RC5hdHRyKCJpZCIpLnN1YnN0 cmluZygidm90ZS1hY2NlcHRlZC0iLmxlbmd0aCk7cChELEMsay5hY2NlcHRlZEJ5 T3duZXIsZnVuY3Rpb24oSSxHLEspe2lmKEsuTWVzc2FnZS5pbmRleE9mKGltYWdl UGF0aCk+LTEpe3ZhciBIPSJjb21tZW50cy1saW5rIjt2YXIgSj0iY29tbWVudHMt Y29udGFpbmVyIjskKCJkaXYuYW5zd2VyIikucmVtb3ZlQ2xhc3MoImFjY2VwdGVk LWFuc3dlciIpOyQoImltZy52b3RlLWFjY2VwdGVkIikuYXR0cigic3JjIixpbWFn ZVBhdGgrInZvdGUtYWNjZXB0ZWQucG5nIik7JCgiYS5jb21tZW50cy1saW5rLWFj Y2VwdGVkIikucmVtb3ZlQ2xhc3MoKS5hZGRDbGFzcyhIKTskKCJkaXYuY29tbWVu dHMtY29udGFpbmVyLWFjY2VwdGVkIikucmVtb3ZlQ2xhc3MoKS5hZGRDbGFzcyhK KTt2YXIgRj1mdW5jdGlvbihMKXtMLmZpbmQoIi5jb21tZW50cy1saW5rIikucmVt b3ZlQ2xhc3MoKS5hZGRDbGFzcygiY29tbWVudHMtbGluay1vd25lciIpLmVuZCgp LmZpbmQoIi5jb21tZW50cy1jb250YWluZXIiKS5yZW1vdmVDbGFzcygpLmFkZENs YXNzKCJjb21tZW50cy1jb250YWluZXItb3duZXIiKX07JCgiZGl2LmFuc3dlcjpo YXMoaW5wdXRbaWQkPSctaXMtb3duZWQtYnktcXVlc3Rpb24tb3duZXInXSkiKS5u b3QoIi5vd25lci1hbnN3ZXIiKS5hZGRDbGFzcygib3duZXItYW5zd2VyIikuZWFj aChmdW5jdGlvbigpe0YoJCh0aGlzKSl9KTtpZihLLk1lc3NhZ2U9PWltYWdlUGF0 aCsidm90ZS1hY2NlcHRlZC1vbi5wbmciKXskKCJkaXYuYW5zd2VyOmhhcyhpbWdb aWRePSd2b3RlLWFjY2VwdGVkLSIrRysiJ10pIikucmVtb3ZlQ2xhc3MoIm93bmVy LWFuc3dlciIpLmFkZENsYXNzKCJhY2NlcHRlZC1hbnN3ZXIiKTtIPUgrIi1hY2Nl cHRlZCI7Sj1KKyItYWNjZXB0ZWQifWVsc2V7aWYoJCgiIyIrRysiLWlzLW93bmVk LWJ5LXF1ZXN0aW9uLW93bmVyIikubGVuZ3RoPjApe0YoJCgiI2Fuc3dlci0iK0cp KX19JCgiYVtpZD0nY29tbWVudHMtbGluay0iK0crIiddIikucmVtb3ZlQ2xhc3Mo KS5hZGRDbGFzcyhIKS5zaWJsaW5ncygiZGl2IikucmVtb3ZlQ2xhc3MoKS5hZGRD bGFzcyhKKTtJLmF0dHIoInNyYyIsSy5NZXNzYWdlKTtpZih0eXBlb2YgaGFzT3Bl bkJvdW50eSE9InVuZGVmaW5lZCImJmhhc09wZW5Cb3VudHkpe2hhc09wZW5Cb3Vu dHk9ZmFsc2U7JCgiI2JvdW50eS1ub3RpZmljYXRpb24iKS5oaWRlKCl9fWVsc2V7 dShJLEsuTWVzc2FnZSl9cigpLmNsaWNrKGZ1bmN0aW9uKCl7dm90ZS5hY2NlcHRl ZEFuc3dlcigkKHRoaXMpKX0pfSl9LGZsYWc6ZnVuY3Rpb24oRSl7dmFyIEM9RS5h dHRyKCJpZCIpLnN1YnN0cmluZygiZmxhZy1wb3N0LSIubGVuZ3RoKTt2YXIgSj0i Zm9ybS1mbGFnLSIrQzt2YXIgTT0kKCIjIitDKyItaXMtb3duZWQtYnktY3VycmVu dC11c2VyIikubGVuZ3RoPjA7dmFyIEs9W1trLm9mZmVuc2l2ZSwiT2ZmZW5zaXZl LCBBYnVzaXZlLCBvciBIYXRlIFNwZWVjaCIsIU1dLFtrLnNwYW0sIlNwYW0iLCFN XSxbay5pbmZvcm1Nb2RlcmF0b3IsIlJlcXVpcmVzIE1vZGVyYXRvciBhdHRlbnRp b24iLHRydWVdXTt2YXIgSD0nPGRpdiBjbGFzcz0icG9wdXAgZmxhZy1tZW51Ij48 aDI+UGxlYXNlIGZsYWcgd2l0aCBjYXJlOjwvaDI+JztIKz0nPGRpdiBjbGFzcz0i ZmxhZy1yZWFzb25zIj48Zm9ybSBpZD0iJytKKyciPic7Zm9yKHZhciBGPTA7RjxL Lmxlbmd0aDtGKyspe2lmKEtbRl1bMl0pe3ZhciBMPSJmbGFnLXJhZGlvIitDKyIt IitLW0ZdWzBdO0grPSc8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSInK0wrJyIgbmFt ZT0iZmxhZy0nK0MrJyIgdmFsdWU9IicrS1tGXVswXSsnIj4nO0grPSc8bGFiZWwg Zm9yPSInK0wrJyI+JytLW0ZdWzFdKyI8L2xhYmVsPjxicj4ifX1IKz0nPGRpdiBj bGFzcz0iZmxhZy1jb21tZW50Ij5XaHkgYXJlIHlvdSBmbGFnZ2luZyB0aGlzIHBv c3Q/PHRleHRhcmVhIG5hbWU9ImZsYWctcmVhc29uIiBjb2xzPSIzMyIgcm93cz0i NCI+PC90ZXh0YXJlYT4nO0grPSc8YnI+PHNwYW4gY2xhc3M9InRleHQtY291bnRl ciI+PC9zcGFuPjwvZGl2Pic7SCs9IjwvZm9ybT48L2Rpdj4iO0grPSc8aW5wdXQg dHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhZy1jYW5jZWwiIHZhbHVlPSJDYW5jZWwi PjxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFnLXN1Ym1pdCIgdmFsdWU9 IkZsYWcgUG9zdCI+JztIKz0iPC9kaXY+Ijt2YXIgRz0kKEgpO3ZhciBEPUcuZmlu ZCgiIyIrSik7dmFyIEk9RC5maW5kKCJ0ZXh0YXJlYSIpO0QuZmluZCgiaW5wdXQi KS5jbGljayhmdW5jdGlvbigpe3ZhciBOPUQuZmluZCgiZGl2LmZsYWctY29tbWVu dCIpO3ZhciBPPXZvdGUuZmxhZ0lzSW5mb3JtKEQpO04udG9nZ2xlKE8pO2lmKE8p e0kuZm9jdXMoKX12b3RlLmZsYWdBbGxvd1N1Ym1pdChHLEksTyl9KTtJLmJpbmQo ImJsdXIgZm9jdXMga2V5dXAiLGZ1bmN0aW9uKCl7Y29tbWVudHMudXBkYXRlVGV4 dENvdW50ZXIodGhpcywxNTApO3ZvdGUuZmxhZ0FsbG93U3VibWl0KEcsSSx2b3Rl LmZsYWdJc0luZm9ybShEKSl9KTtHLmZpbmQoIi5mbGFnLXN1Ym1pdCIpLmNsaWNr KGZ1bmN0aW9uKCl7aWYodm90ZS5mbGFnSXNJbmZvcm0oRCkmJiF2b3RlLmZsYWdU ZXh0VmFsaWQoSSkpe3JldHVybn12b3RlLmZsYWdTdWJtaXQoRSxDLEQsSSl9KTtH LmZpbmQoIi5mbGFnLWNhbmNlbCIpLmNsaWNrKGZ1bmN0aW9uKCl7dm90ZS5mbGFn Q2xvc2VQb3B1cChFKX0pO0UucGFyZW50KCkuYXBwZW5kKEcpO0cuZmFkZUluKCJm YXN0Iil9LGZsYWdJc0luZm9ybTpmdW5jdGlvbihDKXt2YXIgRD1DLmZpbmQoImlu cHV0OnJhZGlvOmNoZWNrZWQiKTtpZihELmxlbmd0aD09MCl7cmV0dXJuIGZhbHNl fXJldHVybiBELnZhbCgpPT1rLmluZm9ybU1vZGVyYXRvcn0sZmxhZ0FsbG93U3Vi bWl0OmZ1bmN0aW9uKEQsRSxGKXt2YXIgQz1GP3ZvdGUuZmxhZ1RleHRWYWxpZChF KTp0cnVlO0QuZmluZCgiLmZsYWctc3VibWl0IikudG9nZ2xlKEMpfSxmbGFnVGV4 dFZhbGlkOmZ1bmN0aW9uKEQpe3ZhciBDPUQudmFsKCkubGVuZ3RoO3JldHVybihD Pj0xMCYmQzw9MTUwKX0sZmxhZ0Nsb3NlUG9wdXA6ZnVuY3Rpb24oQyl7Qy5wYXJl bnQoKS5maW5kKCIucG9wdXAiKS5mYWRlT3V0KCJmYXN0IixmdW5jdGlvbigpeyQo dGhpcykucmVtb3ZlKCl9KX0sZmxhZ1N1Ym1pdDpmdW5jdGlvbihGLEQsQyxHKXt2 b3RlLmZsYWdDbG9zZVBvcHVwKEYpO3ZhciBFPUMuZmluZCgiaW5wdXQ6cmFkaW86 Y2hlY2tlZCIpLnZhbCgpO3ZhciBEPUYuYXR0cigiaWQiKS5zdWJzdHJpbmcoImZs YWctcG9zdC0iLmxlbmd0aCk7aWYoRT09ay5pbmZvcm1Nb2RlcmF0b3IpeyQuYWph eCh7dHlwZToiUE9TVCIsdXJsOiIvbWVzc2FnZXMvaW5mb3JtLW1vZGVyYXRvci1h Ym91dC1wb3N0LyIrRCxkYXRhVHlwZToianNvbiIsZGF0YTp7ZmtleTpma2V5LG1z ZzpHLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKEgpe3Nob3dBamF4RXJyb3IoRi5w YXJlbnQoKSxILk1lc3NhZ2UpfSxlcnJvcjpmdW5jdGlvbihILEosSSl7c2hvd0Fq YXhFcnJvcihGLnBhcmVudCgpLChILnJlc3BvbnNlVGV4dCYmSC5yZXNwb25zZVRl eHQubGVuZ3RoPDEwMD9ILnJlc3BvbnNlVGV4dDoiQW4gZXJyb3Igb2NjdXJyZWQg ZHVyaW5nIHN1Ym1pc3Npb24iKSl9fSl9ZWxzZXtwKEYsRCxFLHZvdGUuZmxhZ1N1 Ym1pdENhbGxiYWNrLHtjb21tZW50OkcudmFsKCl9KX19LGZsYWdTdWJtaXRDYWxs YmFjazpmdW5jdGlvbihELEMsRil7aWYoRiYmRi5TdWNjZXNzKXtpZihGLk1lc3Nh Z2Upe319ZWxzZXt2YXIgRT1ELnBhcmVudCgpO2lmKEYmJkYuTWVzc2FnZSl7c2hv d0FqYXhFcnJvcihFLEYuTWVzc2FnZSl9ZWxzZXtzaG93QWpheEVycm9yKEUsIkEg cHJvYmxlbSBvY2N1cnJlZCBkdXJpbmcgZmxhZ2dpbmciKX19fSxjbG9zZTpmdW5j dGlvbihEKXt2YXIgRT1ELnRleHQoKS5pbmRleE9mKCJvcGVuIik+LTE7dmFyIEM9 RC5hdHRyKCJpZCIpLnN1YnN0cmluZygiY2xvc2UtcXVlc3Rpb24tIi5sZW5ndGgp O2lmKEUpe2lmKGNvbmZpcm0oIk5vbWluYXRlIHRoaXMgcXVlc3Rpb24gZm9yIHJl b3BlbmluZz8iKSl7cChELEMsay5yZW9wZW4sdm90ZS5jbG9zZV9yZXN1bHQpfX1l bHNle2lmKCF2b3RlLmNsb3NlX3JlYXNvbnMpe3ZvdGUuY2xvc2VfZmV0Y2hSZWFz b25zKEQsQyl9ZWxzZXt2b3RlLmNsb3NlX3JlbmRlckZvcm0oRCl9fX0sY2xvc2Vf cmVhc29uczpudWxsLGNsb3NlX2ZldGNoUmVhc29uczpmdW5jdGlvbihELEMpeyQo Ii5lcnJvci1ub3RpZmljYXRpb24iKS5mYWRlT3V0QW5kUmVtb3ZlKCk7YXBwZW5k TG9hZGVyKEQpOyQuYWpheCh7dHlwZToiR0VUIix1cmw6Ii9wb3N0cy9jbG9zZS1y ZWFzb25zLyIrQyxkYXRhVHlwZToianNvbiIsc3VjY2VzczpmdW5jdGlvbihFKXty ZW1vdmVMb2FkZXIoKTt2b3RlLmNsb3NlX3JlYXNvbnM9RTt2b3RlLmNsb3NlX3Jl bmRlckZvcm0oRCl9LGVycm9yOmZ1bmN0aW9uKEUsRyxGKXtyZW1vdmVMb2FkZXIo KTtzaG93QWpheEVycm9yKEQucGFyZW50KCksKEUucmVzcG9uc2VUZXh0JiZFLnJl c3BvbnNlVGV4dC5sZW5ndGg8MTAwP0UucmVzcG9uc2VUZXh0OiJBbiBlcnJvciBv Y2N1cnJlZCB3aGlsZSBmZXRjaGluZyBjbG9zZSByZWFzb25zIikpfX0pfSxjbG9z ZV9yZW5kZXJGb3JtOmZ1bmN0aW9uKEYpe3ZhciBEPUYuYXR0cigiaWQiKS5zdWJz dHJpbmcoImNsb3NlLXF1ZXN0aW9uLSIubGVuZ3RoKTt2YXIgQz0iY2xvc2UtcG9w dXAtIitEO3ZhciBLPSJmb3JtLWNsb3NlLSIrRDskKCIjIitDKS5yZW1vdmUoKTt2 YXIgST0nPGRpdiBpZD0iJytDKyciIGNsYXNzPSJwb3B1cCIgc3R5bGU9IndpZHRo OjMxMHB4Ij48aDI+V2h5IHNob3VsZCB0aGlzIHF1ZXN0aW9uIGJlIGNsb3NlZD88 L2gyPjx1bCBjbGFzcz0iY2xvc2UtcmVhc29ucyI+Jztmb3IodmFyIEc9MDtHPHZv dGUuY2xvc2VfcmVhc29ucy5sZW5ndGg7RysrKXt2YXIgSj12b3RlLmNsb3NlX3Jl YXNvbnNbR107dmFyIEU9ImNsb3NlLXJlYXNvbi0iK0ouaWQ7SSs9JzxsaT48aW5w dXQgdHlwZT0icmFkaW8iIGlkPSInK0UrJyIgbmFtZT0iY2xvc2UtJytEKyciIHZh bHVlPSInK0ouaWQrJyI+PGxhYmVsIGZvcj0iJytFKyciJysoSi5kZXNjcmlwdGlv bj8nIHRpdGxlPSInK0ouZGVzY3JpcHRpb24rJyInOiIiKSsiPiIrSi5uYW1lKyIi KyhKLmNvdW50PjA/JyA8c3BhbiB0aXRsZT0idGhpcyBtYW55IHZvdGVzIGFscmVh ZHkgZXhpc3QiPignK0ouY291bnQrIik8L3NwYW4+IjoiIikrIjwvbGFiZWw+PC9s aT4ifUkrPSc8L3VsPjxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZS1j YW5jZWwiIHZhbHVlPSJDYW5jZWwiPjxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNz PSJjbG9zZS1zdWJtaXQiIHZhbHVlPSJWb3RlIHRvIENsb3NlIj4nO0krPSI8L2Rp dj4iO3ZhciBIPSQoSSk7SC5maW5kKCdpbnB1dFt0eXBlPSJyYWRpbyJdJykuY2xp Y2soZnVuY3Rpb24oKXtILmZpbmQoIi5jbG9zZS1zdWJtaXQiKS5zaG93KCl9KTtI LmZpbmQoIi5jbG9zZS1zdWJtaXQiKS5jbGljayhmdW5jdGlvbigpe3ZvdGUuY2xv c2VfcmVhc29uQ2xpY2soRixILEQpfSk7SC5maW5kKCIuY2xvc2UtY2FuY2VsIiku Y2xpY2soZnVuY3Rpb24oKXtILmZhZGVPdXRBbmRSZW1vdmUoKX0pO0YucGFyZW50 KCkuYXBwZW5kKEgpO0guZmFkZUluKCJmYXN0Iil9LGNsb3NlX3JlYXNvbkV4YWN0 RHVwbGljYXRlSWQ6MSxjbG9zZV9oYXNMaW5rZWREdXBsaWNhdGVRdWVzdGlvbnM6 ZmFsc2UsY2xvc2VfcmVhc29uQ2xpY2s6ZnVuY3Rpb24oRCxFLEMpe3ZhciBGPUUu ZmluZCgnaW5wdXRbdHlwZT0icmFkaW8iXTpjaGVja2VkJykudmFsKCk7aWYoRj09 dm90ZS5jbG9zZV9yZWFzb25FeGFjdER1cGxpY2F0ZUlkKXt2b3RlLmNsb3NlX2R1 cGxpY2F0ZUZvcm0oRCxFLEMpfWVsc2V7RS5mYWRlT3V0QW5kUmVtb3ZlKCk7YXBw ZW5kTG9hZGVyKEQpO3AoRCxDLGsuY2xvc2Usdm90ZS5jbG9zZV9yZXN1bHQseyJj bG9zZS1yZWFzb24taWQiOkZ9KX19LGNsb3NlX2R1cGxpY2F0ZUZvcm06ZnVuY3Rp b24oRixHLEQpe0cuZmluZCgiaDIsIHVsLCAuY2xvc2Utc3VibWl0IikucmVtb3Zl KCk7Ry5jc3MoIndpZHRoIiwiNDkwcHgiKTt2YXIgSD0iZHVwbGljYXRlLXF1ZXN0 aW9uLSIrRDt2YXIgRT0nPGRpdiBzdHlsZT0icGFkZGluZy1ib3R0b206MThweCI+ PGgyPlRoaXMgcXVlc3Rpb24gaXMgYSBkdXBsaWNhdGUgb2Ygd2hpY2ggb3RoZXIg cXVlc3Rpb24/PC9oMj48aW5wdXQgaWQ9IicrSCsnIiB0eXBlPSJ0ZXh0IiBzaXpl PSI3OCI+PGJyPjxzcGFuIGNsYXNzPSJjbG9zZS1kdXBsaWNhdGUtcHJvbXB0Ij5U eXBlIGEgcXVlc3Rpb24gaWQgb3IgdGl0bGUgdG8gc2VhcmNoIGZvciB2YWxpZCB0 YXJnZXRzPC9zcGFuPjxkaXYgY2xhc3M9ImV4aXN0aW5nLWxpbmtlZC1xdWVzdGlv bnMiPjwvZGl2PjwvZGl2PjxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9z ZS1zdWJtaXQiIHZhbHVlPSJWb3RlIHRvIENsb3NlIj4nO3ZhciBDPSQoRSk7Qy5m aW5kKCIjIitIKS5hdXRvY29tcGxldGUoIi9zZWFyY2gvZHVwbGljYXRlLXF1ZXN0 aW9ucy8iK0Qse2hpZ2hsaWdodEl0ZW06dHJ1ZSxtYXRjaENvbnRhaW5zOnRydWUs bWF0Y2hTdWJzZXQ6ZmFsc2Usc2Nyb2xsOnRydWUsc2Nyb2xsSGVpZ2h0OjMwMCxm b3JtYXRJdGVtOmZ1bmN0aW9uKEkpe0cuZmluZCgiYS5jbG9zZS1zdWJtaXQiKS5o aWRlKCk7dmFyIEs9SVswXTt2YXIgSj1JWzFdO3JldHVybihLPT0iLTEiKT8oJzxi IHN0eWxlPSJjb2xvcjojOTkwMDAwIj4nK0orIjwvYj4iKTooSysiIC0gIitKKX0s Zm9ybWF0UmVzdWx0OmZ1bmN0aW9uKEkpe3ZhciBKPUlbMF07cmV0dXJuKEo9PSIt MSIpPyIgIjpKfX0pLnJlc3VsdChmdW5jdGlvbihKLEkpe0cuZmluZCgiLmNsb3Nl LXN1Ym1pdCIpLnRvZ2dsZSgoSSYmSVswXSE9Ii0xIikpfSk7Ry5wcmVwZW5kKEMp O3ZvdGUuY2xvc2Vfc2hvd0V4aXN0aW5nRHVwbGljYXRlcyhHLEQpO0cuZmluZCgi IyIrSCkuZm9jdXMoKTtHLmZpbmQoIi5jbG9zZS1zdWJtaXQiKS5jbGljayhmdW5j dGlvbigpe0cuZmFkZU91dEFuZFJlbW92ZSgpO3AoRixELGsuY2xvc2Usdm90ZS5j bG9zZV9yZXN1bHQseyJjbG9zZS1yZWFzb24taWQiOnZvdGUuY2xvc2VfcmVhc29u RXhhY3REdXBsaWNhdGVJZCwiZHVwbGljYXRlLXF1ZXN0aW9uLWlkIjokKCIjIitI KS52YWwoKX0pfSl9LGNsb3NlX3Nob3dFeGlzdGluZ0R1cGxpY2F0ZXM6ZnVuY3Rp b24oSCxDKXt2YXIgRz1mYWxzZTtmb3IodmFyIEU9MDtFPHZvdGUuY2xvc2VfcmVh c29ucy5sZW5ndGg7RSsrKXt2YXIgRj12b3RlLmNsb3NlX3JlYXNvbnNbRV07aWYo Ri5pZD09dm90ZS5jbG9zZV9yZWFzb25FeGFjdER1cGxpY2F0ZUlkKXtpZihGLmNv dW50PjApe0c9dHJ1ZX1icmVha319aWYoIUcpe3JldHVybn12YXIgRD1ILmZpbmQo ImRpdi5leGlzdGluZy1saW5rZWQtcXVlc3Rpb25zIik7YXBwZW5kTG9hZGVyKEQp O0QuYXBwZW5kKCI8cD5PdGhlciB1c2VycyBjaG9zZSB0aGVzZSBxdWVzdGlvbnMg YXMgdGhlIG1hc3RlciBxdWVzdGlvbjo8L3A+Iik7JC5nZXRKU09OKCIvcG9zdHMv ZXhpc3RpbmctY2xvc2UtZHVwbGljYXRlLXF1ZXN0aW9ucy8iK0MsZnVuY3Rpb24o Sil7cmVtb3ZlTG9hZGVyKCk7Zm9yKHZhciBJPTA7STxKLmxlbmd0aDtJKyspe0Qu YXBwZW5kKCc8bGk+PGEgaHJlZj0iJytKW0ldLnVybCsnIiB0YXJnZXQ9Il9ibGFu ayI+JytKW0ldLnRpdGxlKyI8L2E+PC9saT4iKX19KX0sY2xvc2VfcmVzdWx0OmZ1 bmN0aW9uKEQsQyxGKXtyZW1vdmVMb2FkZXIoKTtpZihGJiZGLlN1Y2Nlc3Mpe2lm KEYuTWVzc2FnZSl7dmFyIEc9RC50ZXh0KCkuaW5kZXhPZigib3BlbiIpPi0xO0Qu dGV4dChELnRleHQoKS5yZXBsYWNlKC9cdz9cKFxkXCkvLCIiKSsiICIrRi5NZXNz YWdlKTt1KEQsIlRoaXMgcXVlc3Rpb24gc3RpbGwgbmVlZHMgIitGLk5ld1Njb3Jl KyIgdm90ZShzKSBmcm9tIG90aGVyIHVzZXJzIHRvICIrKEc/InJlb3BlbiI6ImNs b3NlIikpfWVsc2V7bG9jYXRpb24ucmVsb2FkKHRydWUpfXZvdGUuY2xvc2VfcmVh c29ucz1udWxsfWVsc2V7dmFyIEU9RC5wYXJlbnQoKTtpZihGJiZGLk1lc3NhZ2Up e3Nob3dBamF4RXJyb3IoRSxGLk1lc3NhZ2UpfWVsc2V7c2hvd0FqYXhFcnJvcihF LCJBIHByb2JsZW0gb2NjdXJyZWQgZHVyaW5nIGNsb3NpbmcvcmVvcGVuaW5nIil9 fX0sZGVsZXRpb246ZnVuY3Rpb24oRSl7dmFyIEM9RS5hdHRyKCJpZCIpLnN1YnN0 cmluZygiZGVsZXRlLXBvc3QtIi5sZW5ndGgpO3ZhciBEPUUudGV4dCgpLmluZGV4 T2YoInVuZGVsZXRlIik+LTE7aWYoY29uZmlybSgiVm90ZSB0byAiKyhEPyJ1biI6 IiIpKyJkZWxldGUgdGhpcyBwb3N0PyIpKXtwKEUsQywoRD9rLnVuZGVsZXRpb246 ay5kZWxldGlvbiksdm90ZS5kZWxldGlvbkNhbGxiYWNrKX19LGRlbGV0aW9uQ2Fs bGJhY2s6ZnVuY3Rpb24oRixFLEcpe3ZhciBIPUYudGV4dCgpLmluZGV4T2YoInVu ZGVsZXRlIik+LTE7aWYoRyYmRy5TdWNjZXNzKXtGLnRleHQoRy5NZXNzYWdlKTtp ZihHLk5ld1Njb3JlPDApe3ZhciBEPSQoIiNxdWVzdGlvbjpoYXMoYVtpZD0nZGVs ZXRlLXBvc3QtIitFKyInXSkiKS5sZW5ndGg+MDt2YXIgQz1EPyIjcXVlc3Rpb24s IGRpdi5hbnN3ZXIiOiIjYW5zd2VyLSIrRTt2b3RlLnNldERlbGV0ZVN0eWxlcygk KEMpLCFIKX1lbHNle3UoRiwiVGhpcyBwb3N0IHN0aWxsIG5lZWRzICIrRy5OZXdT Y29yZSsiIHZvdGUocykgZnJvbSBvdGhlciB1c2VycyB0byAiKyhIPyJ1biI6IiIp KyJkZWxldGUiKX19ZWxzZXt2YXIgST0oRyYmRy5NZXNzYWdlKT9HLk1lc3NhZ2U6 IkEgcHJvYmxlbSBvY2N1cnJlZCBkdXJpbmcgIisoSD8idW4iOiIiKSsiZGVsZXRp b24iO3Nob3dBamF4RXJyb3IoRi5wYXJlbnQoKSxJKX19LHNldERlbGV0ZVN0eWxl czpmdW5jdGlvbihELEMpe2lmKEMpeyQoImRpdi5xdWVzdGlvbi1zdGF0dXM6aGFz KHNwYW46Y29udGFpbnMoJ2RlbGV0ZScpKSIpLnNob3coKTtELmFkZENsYXNzKCJk ZWxldGVkLWFuc3dlciIpLmZpbmQoImFbaWRePSdkZWxldGUtcG9zdC0nXSIpLmFk ZENsYXNzKCJkZWxldGVkLXBvc3QiKS5lbmQoKS5maW5kKCJkaXZbaWRePSdjb21t ZW50cy0nXSIpLmFkZENsYXNzKCJjb21tZW50cy1jb250YWluZXItZGVsZXRlZCIp LmVuZCgpLmZpbmQoImFbaWRePSdjb21tZW50cy1saW5rLSddIikuYWRkQ2xhc3Mo ImNvbW1lbnRzLWxpbmstZGVsZXRlZCIpfWVsc2V7ZG9jdW1lbnQubG9jYXRpb24u cmVsb2FkKHRydWUpfX0sYm91bnR5U3RhcnQ6ZnVuY3Rpb24oRCl7dmFyIEM9JCgi I3F1ZXN0aW9uIGRpdi52b3RlIGlucHV0OmZpcnN0IikudmFsKCk7JC5wb3N0KCIv cG9zdHMvIitDKyIvYm91bnR5LXN0YXJ0Iix7ZmtleTpma2V5LGFtb3VudDpEfSxm dW5jdGlvbihFKXtpZihFLlN1Y2Nlc3Mpe2xvY2F0aW9uLnJlbG9hZCh0cnVlKX1l bHNle3UoJCgiI2JvdW50eS1lcnJvcnMiKSxFLk1lc3NhZ2UpOyQoIiNib3VudHkt c3VibWl0IikuYXR0cigiZGlzYWJsZWQiLCIiKX19LCJqc29uIil9fX0oKTt2YXIg Y29tbWVudHM9ZnVuY3Rpb24oKXt2YXIgbD1pbWFnZVBhdGgrImNvbW1lbnQtZmxh Zy5wbmciO3ZhciBmPWltYWdlUGF0aCsiY29tbWVudC1mbGFnLWhvdmVyLnBuZyI7 dmFyIGM9aW1hZ2VQYXRoKyJjb21tZW50LXVwLnBuZyI7dmFyIG09aW1hZ2VQYXRo KyJjb21tZW50LXVwLWhvdmVyLnBuZyI7dmFyIGU9aW1hZ2VQYXRoKyJjb21tZW50 LWRlbC5wbmciO3ZhciBpPWltYWdlUGF0aCsiY29tbWVudC1kZWwtaG92ZXIucG5n Ijt2YXIgcT02MDA7dmFyIGI9ZnVuY3Rpb24ocil7cmV0dXJuICQoIiNjb21tZW50 cy0iK3IpfTt2YXIgbz1mdW5jdGlvbihyKXthcHBlbmRMb2FkZXIoIiNjb21tZW50 cy0iK3IrIiBkaXYuY29tbWVudHMiKX07dmFyIGo9ZnVuY3Rpb24ocyx2KXt2YXIg cj0kKCIjZm9ybS1jb21tZW50cy0iK3MpO2lmKHIubGVuZ3RoPjApe3ZhciB1PSc8 dGFibGU+PHRyPjx0ZD48dGV4dGFyZWEgbmFtZT0iY29tbWVudCIgY29scz0iNjgi IHJvd3M9IjMiIG1heGxlbmd0aD0iJytxO3UrPSciIG9uYmx1cj0iY29tbWVudHMu dXBkYXRlVGV4dENvdW50ZXIodGhpcykiICc7dSs9J29uZm9jdXM9ImNvbW1lbnRz LnVwZGF0ZVRleHRDb3VudGVyKHRoaXMpIiBvbmtleXVwPSJjb21tZW50cy51cGRh dGVUZXh0Q291bnRlcih0aGlzKSI+PC90ZXh0YXJlYT4nO3UrPSc8aW5wdXQgdHlw ZT0ic3VibWl0IiB2YWx1ZT0iQWRkIENvbW1lbnQiIC8+PC90ZD48L3RyPjx0cj48 dGQ+PHNwYW4gY2xhc3M9InRleHQtY291bnRlciI+PC9zcGFuPic7dSs9JzxzcGFu IGNsYXNzPSJmb3JtLWVycm9yIj48L3NwYW4+PC90ZD48L3RyPjwvdGFibGU+Jzty LmFwcGVuZCh1KTtyLnN1Ym1pdChmdW5jdGlvbigpe3ZhciB3PXRydWU7dmFyIHg9 ZnVuY3Rpb24oeSl7dz15fTtiaW5kTGVuZ3RoVmFsaWRhdGlvbihyLmZpbmQoInRl eHRhcmVhIiksMTUsIiogcmVxdWlyZWQgLSBhdCBsZWFzdCAxNSBjaGFyYWN0ZXJz IixyLmZpbmQoIi5mb3JtLWVycm9yIikseCk7aWYodyl7ZGlzYWJsZVN1Ym1pdEJ1 dHRvbihyKTtnKHMscil9cmV0dXJuIGZhbHNlfSk7dmFyIHQ9JCgiI2NvbW1lbnRz LSIrcysiIHRyLmNvbW1lbnQ6Zmlyc3QgdGQuY29tbWVudC1hY3Rpb25zIikud2lk dGgoKXx8LTE7dCs9OTtyLmNoaWxkcmVuKCJ0YWJsZSIpLmNzcygibWFyZ2luLWxl ZnQiLHQrInB4Iil9fTt2YXIgaD1mdW5jdGlvbihyLHMpe28ocik7JC5hamF4KHt0 eXBlOiJHRVQiLHVybDoiL3Bvc3RzLyIrcisiL2NvbW1lbnRzIixkYXRhVHlwZToi aHRtbCIsc3VjY2VzczpmdW5jdGlvbih0KXthKHIsdCl9LGVycm9yOmZ1bmN0aW9u KHQsdix1KXtyZW1vdmVMb2FkZXIoKTtzaG93QWpheEVycm9yKCIjY29tbWVudHMt IityLCh0LnJlc3BvbnNlVGV4dCYmdC5yZXNwb25zZVRleHQubGVuZ3RoPDEwMD90 LnJlc3BvbnNlVGV4dDoiQW4gZXJyb3IgaGFzIG9jY3VyZWQgd2hpbGUgZmV0Y2hp bmcgY29tbWVudHMiKSl9fSl9O3ZhciBhPWZ1bmN0aW9uKHIscyl7dmFyIHQ9Yihy KS5maW5kKCJkaXYuY29tbWVudHMiKTtpZih0LmNoaWxkcmVuKCkubGVuZ3RoPjAp e3QuY2hpbGRyZW4oKS5yZW1vdmUoKX10LmFwcGVuZChzKTtuKCk7cCgpO3JlbW92 ZUxvYWRlcigpfTt2YXIgZD1mdW5jdGlvbih0KXt2YXIgcj0iIjtpZih0JiZ0PjAp e3ZhciBzPXQ8NT8iIjp0PD0xNT8id2FybSI6dDw9MzA/ImhvdCI6InN1cGVybm92 YSI7cis9JzxzcGFuIHRpdGxlPSJudW1iZXIgb2YgXCdncmVhdCBjb21tZW50XCcg dm90ZXMgcmVjZWl2ZWQiIGNsYXNzPSInK3MrJyI+Jyt0KyI8L3NwYW4+In1yZXR1 cm4gcn07dmFyIHA9ZnVuY3Rpb24oKXskKCJpbWcuY29tbWVudC11cCIpLmNsaWNr KGZ1bmN0aW9uKCl7aygkKHRoaXMpLDIsYyxtLGZ1bmN0aW9uKHMscil7cy5jbG9z ZXN0KCJ0ciIpLnNpYmxpbmdzKCJ0ciIpLnJlbW92ZSgpO3MucGFyZW50KCkuc2li bGluZ3MoKS5jaGlsZHJlbigpLnJlbW92ZSgpO3MucGFyZW50KCkuc2libGluZ3Mo KS5hcHBlbmQoZChyLk5ld1Njb3JlKSl9KX0pLmhvdmVyKGZ1bmN0aW9uKCl7JCh0 aGlzKS5hdHRyKCJzcmMiLG0pfSxmdW5jdGlvbigpeyQodGhpcykuYXR0cigic3Jj IixjKX0pOyQoImltZy5jb21tZW50LWZsYWciKS5jbGljayhmdW5jdGlvbigpe2lm KGNvbmZpcm0oIlJlYWxseSBmbGFnIHRoaXMgY29tbWVudCBhcyBub2lzZSwgb2Zm ZW5zaXZlIG9yIHNwYW0/Iikpe2soJCh0aGlzKSw0LGwsZixmdW5jdGlvbihzLHIp e2lmKHIuTmV3U2NvcmU9PS0xKXtzLnBhcmVudHMoInRyLmNvbW1lbnQiKS5yZW1v dmUoKX1lbHNle3MucGFyZW50cygidHIuY29tbWVudCIpLmZpbmQoImltZy5jb21t ZW50LXVwIikucmVtb3ZlKCk7cy5yZW1vdmUoKX19KX19KS5ob3ZlcihmdW5jdGlv bigpeyQodGhpcykuYXR0cigic3JjIixmKX0sZnVuY3Rpb24oKXskKHRoaXMpLmF0 dHIoInNyYyIsbCl9KTskKCJpbWcuY29tbWVudC1kZWxldGUiKS5jbGljayhmdW5j dGlvbigpe2lmKGNvbmZpcm0oIlJlYWxseSBkZWxldGUgdGhpcyBjb21tZW50PyIp KXtrKCQodGhpcyksMTAsZSxpLGZ1bmN0aW9uKHMscil7cy5wYXJlbnRzKCJ0ci5j b21tZW50IikucmVtb3ZlKCl9KX19KS5ob3ZlcihmdW5jdGlvbigpeyQodGhpcyku YXR0cigic3JjIixpKX0sZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoInNyYyIsZSl9 KTskKCJ0ci5jb21tZW50IikuaG92ZXIoZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQo ImltZy5jb21tZW50LXVwLCBpbWcuY29tbWVudC1mbGFnLCBpbWcuY29tbWVudC1k ZWxldGUiKS5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIikuY2xvc2VzdCgidHIu Y29tbWVudCIpLmFkZENsYXNzKCJjb21tZW50LWhvdmVyIil9LGZ1bmN0aW9uKCl7 JCh0aGlzKS5yZW1vdmVDbGFzcygiY29tbWVudC1ob3ZlciIpLmZpbmQoImltZy5j b21tZW50LXVwLCBpbWcuY29tbWVudC1mbGFnLCBpbWcuY29tbWVudC1kZWxldGUi KS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pfTt2YXIgbj1mdW5jdGlvbigp eyQoInRyLmNvbW1lbnQiKS51bmJpbmQoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIp OyQoImltZy5jb21tZW50LXVwLCBpbWcuY29tbWVudC1mbGFnLCBpbWcuY29tbWVu dC1kZWxldGUiKS51bmJpbmQoImNsaWNrIG1vdXNlZW50ZXIgbW91c2VsZWF2ZSIp fTt2YXIgaz1mdW5jdGlvbih5LHUseCx2LHQpe3ZhciB3PXkucGFyZW50cygidHIu Y29tbWVudCIpLmF0dHIoImlkIikuc3Vic3RyKCJjb21tZW50LSIubGVuZ3RoKTt2 YXIgcz15LmF0dHIoImNsYXNzIik7JCgiZGl2LmVycm9yLW5vdGlmaWNhdGlvbiIp LmhpZGUoKTt5LnJlbW92ZUNsYXNzKCkudW5iaW5kKCJjbGljayBtb3VzZWVudGVy IG1vdXNlbGVhdmUiKS5hdHRyKCJzcmMiLHYpO2FwcGVuZExvYWRlcih5LnBhcmVu dCgpKTt2YXIgcj1mdW5jdGlvbigpe3kuYWRkQ2xhc3MocykuY2xpY2soZnVuY3Rp b24oKXtrKHksdSx4LHYsdCl9KS5hdHRyKCJzcmMiLHgpfTskLmFqYXgoe3R5cGU6 IlBPU1QiLHVybDoiL3Bvc3RzL2NvbW1lbnRzLyIrdysiL3ZvdGUvIit1LGRhdGFU eXBlOiJqc29uIixkYXRhOntma2V5OmZrZXl9LHN1Y2Nlc3M6ZnVuY3Rpb24oeil7 aWYoei5TdWNjZXNzKXt0KHkseil9ZWxzZXtzaG93QWpheEVycm9yKHkucGFyZW50 KCksei5NZXNzYWdlKTtyKCl9fSxlcnJvcjpmdW5jdGlvbih6LEIsQSl7c2hvd0Fq YXhFcnJvcih5LnBhcmVudCgpLCh6LnJlc3BvbnNlVGV4dCYmei5yZXNwb25zZVRl eHQubGVuZ3RoPDEwMD96LnJlc3BvbnNlVGV4dDoiQW4gZXJyb3Igb2NjdXJyZWQg ZHVyaW5nIHZvdGluZyIpKTtyKCl9fSk7cmVtb3ZlTG9hZGVyKCl9O3ZhciBnPWZ1 bmN0aW9uKHQscyl7dmFyIHI9cy5maW5kKCJ0ZXh0YXJlYSIpO2lmKHIudmFsKCkm JnIudmFsKCkubGVuZ3RoPnEpe3Nob3dBamF4RXJyb3IocywiQ29tbWVudHMgYXJl IGxpbWl0ZWQgdG8gIitxKyIgY2hhcmFjdGVycyIpO2VuYWJsZVN1Ym1pdEJ1dHRv bihzKTtyZXR1cm59byh0KTt2YXIgdT1mdW5jdGlvbigpeyQoIi5lcnJvci1ub3Rp ZmljYXRpb24iKS5mYWRlT3V0KCJmYXN0IixmdW5jdGlvbigpeyQodGhpcykucmVt b3ZlKCl9KX07JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9wb3N0cy8iK3QrIi9j b21tZW50cyIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6e2NvbW1lbnQ6ci52YWwoKSxm a2V5OmZrZXl9LHN1Y2Nlc3M6ZnVuY3Rpb24odil7dSgpO2EodCx2KTtyLnZhbCgi Iik7Y29tbWVudHMudXBkYXRlVGV4dENvdW50ZXIocik7ZW5hYmxlU3VibWl0QnV0 dG9uKHMpfSxlcnJvcjpmdW5jdGlvbih2LHgsdyl7cmVtb3ZlTG9hZGVyKCk7dSgp O3Nob3dBamF4RXJyb3Iocywodi5yZXNwb25zZVRleHQmJnYucmVzcG9uc2VUZXh0 Lmxlbmd0aDwxMDA/di5yZXNwb25zZVRleHQ6IkFuIGVycm9yIG9jY3VycmVkIGR1 cmluZyBjb21tZW50IHN1Ym1pc3Npb24iKSk7ZW5hYmxlU3VibWl0QnV0dG9uKHMp fX0pfTtyZXR1cm57aW5pdDpmdW5jdGlvbigpeyQoImFbaWRePSdjb21tZW50cy1s aW5rLSddIikudW5iaW5kKCJjbGljayIpLmNsaWNrKGZ1bmN0aW9uKCl7dmFyIHI9 JCh0aGlzKS5hdHRyKCJpZCIpLnN1YnN0cigiY29tbWVudHMtbGluay0iLmxlbmd0 aCk7dmFyIHU9YihyKTtqKHIsdSk7dS5yZW1vdmVDbGFzcygiZGlzcGxheS1ub25l Iik7aWYoJCh0aGlzKS50ZXh0KCkuaW5kZXhPZigibW9yZSBjb21tZW50Iik+LTEp e2gocix1KX1lbHNle3ZhciBzPXUuZmluZCgiZm9ybSB0ZXh0YXJlYSIpO3ZhciB0 PTIwMCsoJCgnZm9ybVtpZF49ImZvcm0tY29tbWVudHMtIl0gPiB0YWJsZScpLmxl bmd0aCoyKTtzLmF0dHIoInRhYmluZGV4Iix0KyspO3UuZmluZCgiZm9ybSBpbnB1 dCIpLmF0dHIoInRhYmluZGV4Iix0KTtzLmZvY3VzKCl9JCh0aGlzKS5oaWRlKCl9 KTtwKCl9LHVwZGF0ZVRleHRDb3VudGVyOmZ1bmN0aW9uKHQscyl7aWYoIXMpe3M9 cX12YXIgdT10LnZhbHVlP3QudmFsdWUubGVuZ3RoOjA7dmFyIHI9dT5zKjAuOD8i c3VwZXJub3ZhIjp1PnMqMC42PyJob3QiOnU+cyowLjQ/Indhcm0iOiJjb29sIjt2 YXIgdj0kKHQpO3YucGFyZW50cygiZm9ybSIpLmZpbmQoInNwYW4udGV4dC1jb3Vu dGVyIikuaHRtbCgocy11KSsiIGNoYXJhY3RlciIrKHU8cy0xPyJzIjoiIikrIiBs ZWZ0IikucmVtb3ZlQ2xhc3MoKS5hZGRDbGFzcygidGV4dC1jb3VudGVyIikuYWRk Q2xhc3Mocil9fX0oKTtmdW5jdGlvbiBlZGl0b3JSZWFkeShhKXskLmdldCgiL3F1 ZXN0aW9ucy90aWNrcyIsZnVuY3Rpb24oYil7JCgiI3Bvc3QtZWRpdG9yLWhpZGRl biIpLmFwcGVuZCgiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0naTFsJyB2YWx1 ZT0nIitiKyInIC8+Iil9KTtpZigkKCIjc2hvdy1lZGl0b3ItYnV0dG9uIikubGVu Z3RoPT0wKXtpbml0UG9zdEVkaXRvcihhKX19ZnVuY3Rpb24gaW5pdFBvc3RFZGl0 b3IoYyl7dmFyIGI9JCgiI3Bvc3QtZm9ybSIpO3ZhciBhPSQoIiN3bWQtaW5wdXQi KTtiLnN1Ym1pdChmdW5jdGlvbigpe3ZhciBkPXRydWU7dmFyIGU9ZnVuY3Rpb24o Zil7ZD1mfTtiaW5kTGVuZ3RoVmFsaWRhdGlvbigiI3RpdGxlIiwxNSwiKiByZXF1 aXJlZCAtIGF0IGxlYXN0IDE1IGNoYXJhY3RlcnMiLCQoIiNxdWVzdGlvbi1zdWdn ZXN0aW9ucyIpLGUpO2JpbmRMZW5ndGhWYWxpZGF0aW9uKGEsMTUsIiogcmVxdWly ZWQgLSBhdCBsZWFzdCAxNSBjaGFyYWN0ZXJzIiwkKCIjd21kLWZvcm0tZXJyb3Ii KS5maW5kKCIuZm9ybS1lcnJvciIpLGUpO2JpbmRMZW5ndGhWYWxpZGF0aW9uKCIj dGFnbmFtZXMiLDEsIiogcmVxdWlyZWQiLG51bGwsZSk7YmluZExlbmd0aFZhbGlk YXRpb24oIiNkaXNwbGF5LW5hbWUiLDEsIiogcmVxdWlyZWQgaWYgeW91J3JlIG5v dCB1c2luZyBhbiBPcGVuSUQiLCQoJ2xhYmVsW2Zvcj0iZGlzcGxheS1uYW1lIl0g PiBzcGFuLmZvcm0tZXJyb3InKSxlLCIjb3BlbmlkX2lkZW50aWZpZXIiKTtiaW5k TGVuZ3RoVmFsaWRhdGlvbigiI20tYWRkcmVzcyIsMSwiKiByZXF1aXJlZCBpZiB5 b3UncmUgbm90IHVzaW5nIGFuIE9wZW5JRCIsJCgnbGFiZWxbZm9yPSJtLWFkZHJl c3MiXSA+IHNwYW4uZm9ybS1lcnJvcicpLGUsIiNvcGVuaWRfaWRlbnRpZmllciIp O2lmKGQpe2Rpc2FibGVTdWJtaXRCdXR0b24oYik7c2V0Q29uZmlybVVubG9hZChu dWxsKX1yZXR1cm4gZH0pO2Eubm90KCIucHJvY2Vzc2VkIikuVGV4dEFyZWFSZXNp emVyKCk7YS50eXBlV2F0Y2goe2hpZ2hsaWdodDpmYWxzZSx3YWl0OjUwMDAsY2Fw dHVyZUxlbmd0aDo1LGNhbGxiYWNrOnN0eWxlQ29kZX0pO0F0dGFja2xhYi53bWRC YXNlKCk7QXR0YWNrbGFiLlV0aWwuc3RhcnRFZGl0b3IoKTtpZihjKXthLmtleXBy ZXNzKGhlYXJ0YmVhdC5zdGFydCl9YS5rZXlwcmVzcyhpbml0TmF2UHJldmVudGlv bil9dmFyIGludmFsaWRFbGVtZW50cz1mdW5jdGlvbigpe3ZhciBiPVtdO3ZhciBh PWZ1bmN0aW9uKGMpe3JldHVybiBjLmF0dHIoIm5hbWUiKX07cmV0dXJue2FkZDpm dW5jdGlvbihlKXt2YXIgYz1hKGUpO3ZhciBmPXRydWU7Zm9yKHZhciBkPTA7ZDxi Lmxlbmd0aDtkKyspe2lmKGJbZF09PWMpe2Y9ZmFsc2U7YnJlYWt9fWlmKGYpe2Iu cHVzaChjKX19LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgYz1hKGUpO2Zvcih2YXIg ZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtpZihiW2RdPT1jKXtiLnNwbGljZShkLDEpfX19 LGFueTpmdW5jdGlvbigpe3JldHVybiBiLmxlbmd0aD4wfX19KCk7ZnVuY3Rpb24g YmluZExlbmd0aFZhbGlkYXRpb24oZixhLGQsYixlLGMpeyQoZikuZWFjaChmdW5j dGlvbigpe3ZhciBqPSQodGhpcyk7dmFyIGk9ai5wYXJlbnRzKCJmb3JtIik7dmFy IGg9Yj8kKGIpOmoucGFyZW50KCkuZmluZCgiLmZvcm0tZXJyb3IiKTt2YXIgbT1m dW5jdGlvbigpe3JldHVybiAkLnRyaW0oai52YWwoKSkubGVuZ3RoPj1hfTt2YXIg Zz1mdW5jdGlvbigpe2gudGV4dChkKX07dmFyIG49ZnVuY3Rpb24oKXtnKCk7ZGlz YWJsZVN1Ym1pdEJ1dHRvbihpKTtpbnZhbGlkRWxlbWVudHMuYWRkKGopfTt2YXIg bD1mdW5jdGlvbigpe3JldHVybihjJiYkKGMpLnZhbCgpLmxlbmd0aD4wKX07aWYo IWwoKSYmIW0oKSl7ZShmYWxzZSk7bigpO2lmKCFqLmF0dHIoImhhc0xlbmd0aFZh bGlkYXRpb25FdmVudCIpKXtqLmF0dHIoImhhc0xlbmd0aFZhbGlkYXRpb25FdmVu dCIsInRydWUiKTt2YXIgaz1mdW5jdGlvbigpe2lmKCFsKCkmJiFtKCkpe24oKX1l bHNle2gudGV4dCgiIik7aW52YWxpZEVsZW1lbnRzLnJlbW92ZShqKTtpZighaW52 YWxpZEVsZW1lbnRzLmFueSgpKXtlbmFibGVTdWJtaXRCdXR0b24oaSl9fX07ai5r ZXl1cChrKTtpZihjKXskKGMpLmtleXVwKGspfX19fSl9ZnVuY3Rpb24gaW5pdE5h dlByZXZlbnRpb24oYSl7aWYoYS53aGljaD09InVuZGVmaW5lZCIpe3JldHVybn12 YXIgYj0kKCIjd21kLWlucHV0Iik7Yi51bmJpbmQoImtleXByZXNzIixpbml0TmF2 UHJldmVudGlvbik7c2V0Q29uZmlybVVubG9hZCgiWW91IGhhdmUgc3RhcnRlZCB3 cml0aW5nIG9yIGVkaXRpbmcgYSBwb3N0LiIsYil9dmFyIGhlYXJ0YmVhdD1mdW5j dGlvbigpe3ZhciBkPTEwMDAqNjA7dmFyIGI7dmFyIGU9MDt2YXIgYT1mYWxzZTt2 YXIgYz0wO3JldHVybntzdGFydDpmdW5jdGlvbihmKXtpZihmLndoaWNoPT0idW5k ZWZpbmVkIil7cmV0dXJufWlmKGUrKz4wKXtyZXR1cm59JCgiI3dtZC1pbnB1dCIp LnVuYmluZCgia2V5cHJlc3MiLGhlYXJ0YmVhdC5zdGFydCk7Yj1sb2NhdGlvbi5o cmVmLm1hdGNoKC9cL3F1ZXN0aW9uc1wvKFxkKykvaSlbMV07c2V0VGltZW91dCho ZWFydGJlYXQucGluZyxkKX0scGluZzpmdW5jdGlvbigpe3ZhciBmPSIiOyQoImRp di5hbnN3ZXIiKS5lYWNoKGZ1bmN0aW9uKCl7Zis9dGhpcy5pZC5zdWJzdHJpbmco ImFuc3dlci0iLmxlbmd0aCkrIiAifSk7JC5wb3N0KCIvcG9zdHMvIitiKyIvbmV3 LWFjdGl2aXR5LWhlYXJ0YmVhdCIse2Fuc3dlcklkczpmfSxoZWFydGJlYXQucmVz dWx0LCJqc29uIil9LHJlc3VsdDpmdW5jdGlvbihnKXt2YXIgZj0rK2M8MzA7aWYo ZyYmIWEpe2lmKGcuTm9Qb3N0aW5nKXt2YXIgaD0iVGhpcyBxdWVzdGlvbiBoYXMg YmVlbiAiK2cuTXNnKyIgLSBubyBtb3JlIGFuc3dlcnMgd2lsbCBiZSBhY2NlcHRl ZC4iO25vdGlmeS5zaG93KGgpO2E9dHJ1ZTtkaXNhYmxlU3VibWl0QnV0dG9uKCIj cG9zdC1mb3JtIik7c2V0Q29uZmlybVVubG9hZChudWxsKTtmPWZhbHNlfWVsc2V7 aWYoZy5SZXN1bHQpe3ZhciBoPWcuQ291bnQrIiBuZXcgYW5zd2VyIisoZy5Db3Vu dD09MT8iIGhhcyI6InMgaGF2ZSIpKyIgYmVlbiBwb3N0ZWQgLSAiO2grPSc8YSBv bmNsaWNrPSJoZWFydGJlYXQudXBkYXRlKCkiPmxvYWQgbmV3IGFuc3dlcnMuPC9h Pic7bm90aWZ5LnNob3coaCk7YT10cnVlfX19aWYoZil7c2V0VGltZW91dChoZWFy dGJlYXQucGluZyxkKX19LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciBmPVtdOyQuZ2V0 KCIvcXVlc3Rpb25zLyIrYixmdW5jdGlvbihpKXt2YXIgbD0kKGkpO2wuZmluZCgi ZGl2LmFuc3dlciIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT10aGlzLmlkLnN1YnN0 cmluZygiYW5zd2VyLSIubGVuZ3RoKTtpZigkKCIjYW5zd2VyLSIrbSkubGVuZ3Ro PT0wKXtmLnB1c2godGhpcy5pZCl9fSk7aWYoZi5sZW5ndGg+MCl7dmFyIGg9IiMi K2Yuam9pbigiLCMiKTt2YXIgaz1sLmZpbmQoaCk7dmFyIGc9JCgiZGl2LmFuc3dl cjpsYXN0Iik7aWYoZy5sZW5ndGg9PTApe2c9JCgiI2Fuc3dlcnMtaGVhZGVyIil9 ay5oaWRlKCk7Zy5hZnRlcihrKTtrLmZhZGVJbigic2xvdyIpO3ZhciBqPSQoImRp di5hbnN3ZXIiKS5sZW5ndGg7JCgiI3N1YmhlYWRlciBoMiIpLnRleHQoaisiIEFu c3dlciIrKGo+MT8icyI6IiIpKTt2b3RlLmluaXQoYik7Y29tbWVudHMuaW5pdCgp fW5vdGlmeS5jbG9zZSgpO2E9ZmFsc2V9LCJodG1sIil9fX0oKTsoZnVuY3Rpb24o YSl7YS5mbi50eXBlV2F0Y2g9ZnVuY3Rpb24oZCl7dmFyIGI9YS5leHRlbmQoe3dh aXQ6NzUwLGNhbGxiYWNrOmZ1bmN0aW9uKCl7fSxoaWdobGlnaHQ6dHJ1ZSxjYXB0 dXJlTGVuZ3RoOjJ9LGQpO2Z1bmN0aW9uIGMoaCxnKXt2YXIgZj1hKGguZWwpLnZh bCgpO2lmKChmLmxlbmd0aD5iLmNhcHR1cmVMZW5ndGgmJmYudG9VcHBlckNhc2Uo KSE9aC50ZXh0KXx8KGcmJmYubGVuZ3RoPmIuY2FwdHVyZUxlbmd0aCkpe2gudGV4 dD1mLnRvVXBwZXJDYXNlKCk7aC5jYihmKX19ZnVuY3Rpb24gZShnKXtpZihnLnR5 cGUudG9VcHBlckNhc2UoKT09IlRFWFQifHxnLm5vZGVOYW1lLnRvVXBwZXJDYXNl KCk9PSJURVhUQVJFQSIpe3ZhciBoPXt0aW1lcjpudWxsLHRleHQ6YShnKS52YWwo KS50b1VwcGVyQ2FzZSgpLGNiOmIuY2FsbGJhY2ssZWw6Zyx3YWl0OmIud2FpdH07 aWYoYi5oaWdobGlnaHQpe2EoZykuZm9jdXMoZnVuY3Rpb24oKXt0aGlzLnNlbGVj dCgpfSl9dmFyIGY9ZnVuY3Rpb24oaSl7dmFyIGw9aC53YWl0O3ZhciBrPWZhbHNl O2lmKGkua2V5Q29kZT09MTMmJnRoaXMudHlwZS50b1VwcGVyQ2FzZSgpPT0iVEVY VCIpe2w9MTtrPXRydWV9dmFyIGo9ZnVuY3Rpb24oKXtjKGgsayl9O2NsZWFyVGlt ZW91dChoLnRpbWVyKTtoLnRpbWVyPXNldFRpbWVvdXQoaixsKX07YShnKS5rZXlk b3duKGYpfX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGYpe2UodGhpcyl9KX19 KShqUXVlcnkpOyhmdW5jdGlvbihjKXt2YXIgaCxpO3ZhciBkPTA7dmFyIGE9MzI7 dmFyIGU7Yy5mbi5UZXh0QXJlYVJlc2l6ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhp cy5lYWNoKGZ1bmN0aW9uKCl7aD1jKHRoaXMpLmFkZENsYXNzKCJwcm9jZXNzZWQi KSxpPW51bGw7Yyh0aGlzKS5wYXJlbnQoKS5hcHBlbmQoYygnPGRpdiBjbGFzcz0i Z3JpcHBpZSI+PC9kaXY+JykuYmluZCgibW91c2Vkb3duIix7ZWw6dGhpc30sYikp O3ZhciBrPWMoImRpdi5ncmlwcGllIixjKHRoaXMpLnBhcmVudCgpKVswXTtrLnN0 eWxlLm1hcmdpblJpZ2h0PShrLm9mZnNldFdpZHRoLWModGhpcylbMF0ub2Zmc2V0 V2lkdGgpKyJweCJ9KX07ZnVuY3Rpb24gYihrKXtoPWMoay5kYXRhLmVsKTtoLmJs dXIoKTtkPWooaykueTtpPWguaGVpZ2h0KCktZDtoLmNzcygib3BhY2l0eSIsMC4y NSk7Yyhkb2N1bWVudCkubW91c2Vtb3ZlKGcpLm1vdXNldXAoZik7cmV0dXJuIGZh bHNlfWZ1bmN0aW9uIGcobSl7dmFyIGs9aihtKS55O3ZhciBsPWkraztpZihkPj0o aykpe2wtPTV9ZD1rO2w9TWF0aC5tYXgoYSxsKTtoLmhlaWdodChsKyJweCIpO2lm KGw8YSl7ZihtKX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gZihrKXtjKGRvY3VtZW50 KS51bmJpbmQoIm1vdXNlbW92ZSIsZykudW5iaW5kKCJtb3VzZXVwIixmKTtoLmNz cygib3BhY2l0eSIsMSk7aC5mb2N1cygpO2g9bnVsbDtpPW51bGw7ZD0wfWZ1bmN0 aW9uIGooayl7cmV0dXJue3g6ay5jbGllbnRYK2RvY3VtZW50LmRvY3VtZW50RWxl bWVudC5zY3JvbGxMZWZ0LHk6ay5jbGllbnRZK2RvY3VtZW50LmRvY3VtZW50RWxl bWVudC5zY3JvbGxUb3B9fX0pKGpRdWVyeSk7 ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=logo.png Content-Type: image/png; name=logo.png Content-Location: http://sstatic.net/so/img/logo.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAPoAAAA9CAMAAACz34QDAAAC7lBMVEX////Rz9Cd m5x+fHxoZWZmY2R+e3zc29vY19eop6jx8fHAvr+Jh4htamtmZGV1c3PW1tiwrq+R j5Dm5uiCf4BwbW6Ni4zIxsf08/KenJ3DwsO6u718enuamJiwr7DT09PQzs+/wMKg np95d3h4dXbZ2dnAv8DIx8hdWlsqJygjHR6Ihoc5NTXg399gXV5FQUJAPT5MSUo1 MTKrqqtKR0hZV1hUUVKhn6A6NzhiYGEwLC1hX2CYlpc8OTpQTU7k4+NCP0Dw7/By bnD39/i4treAfX5IRUbh4eG4t7jd3d1kYWJRT1CBgoh6eHnx7enp4tzh1s3ZzcHR w7XIuKa/rJm7pZC3oIqymoLWyr3k3NTb0MTLu6rCsJy2n4iwln6rkXamim6ojXLF s6GtlHq4o4zBrZnPwLG/q5fe1Mn9iAj+iAfTiyj9/Pr8+vn+jRH8+fTAlVP89ez6 7uHCmFfMy8vCmVrhsG707eLVkTQoJCXVjzD969v+lSP7/Pz18ez+6dP+ehX+3cT+ 4svOrXvz4snMqXP+8uX9tXzgr2vszqTbolLYvZXFnmDr3sr906v+rFTJpGz59vP+ s2IiHiDZmUP5+fn+59XitHXu6OP26df+hir+t2rj0bTbn03w27z+sHXp2sP+2K7+ yIzLpnDw59j+kBmcmpr+fRrdxqP+voz+pEPGoGXStYbqyJolISL+jjj+uoXn2L/+ pWDluX7+x5v+nTP+zJSAgYX93bn+zaXk07j+mSv+0qL+w5X+q2rUuIz+gR+joqPT iyfdplnu5NPw2LczLzDpxJL08/QtKSrY19j+/v7Utor+4sP+1bTz4MaQjo7+xoj4 9/jawJjy3sP06tv+xYazsrV+gIXfyKbl5eX+oTv19fX+nVH+v3vt4s/YmD/o5+jr 6uvfqWDizq/WlTrZv5jv1K/+uW6UkpP+qEro5+b+z5z+o1z+oFf+27P+iS6opqf1 59P+m0/+giP+17hYVVb+kj/fyqj+qGWFOn8aAAAKO0lEQVR4XuTYNZfcMBwE8Pm6 kozLTMfMzMzMjGFmZmamLpbXu++2yUtyV0k/t27mef5TGP/CDCc3ulKQ0a+viURi BDLaTFg2IaMNHv0HZPRtyIreakIS+uIyMhr5rW+nIId4lbZmwqG3JiyVkIGyHiGE 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 ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=vote-arrow-up.png Content-Type: image/png; name=vote-arrow-up.png Content-Location: http://sstatic.net/so/img/vote-arrow-up.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACgAAAAZAgMAAAA+toT2AAAADFBMVEX///+MjZG9 vcCBgYWen5GPAAAAAXRSTlMAQObYZgAAAENJREFUeF69zqERACEMRNEbLMWkmuvn OksrlBGVBW7mx2NY9cUT+1xaH5UWlZ5Ukz6oBDYJ7FIWXRgKtp0BBb//zq5Oa3km WA3GV4oAAAAASUVORK5CYII= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=vote-arrow-down.png Content-Type: image/png; name=vote-arrow-down.png Content-Location: http://sstatic.net/so/img/vote-arrow-down.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACgAAAAZAgMAAAA+toT2AAAADFBMVEX///+9vcCB gYWMjZGirsYcAAAAAXRSTlMAQObYZgAAAD9JREFUeF69yjEBgEAMALH+UhFVg56q QQQLmAQaByxkuuHimxvZ1+uUNXnInNzlmtyCtlJW0sqyEm2lrKT1Bw+HlR2imLLu HQAAAABJRU5ErkJggg== ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=vote-favorite-off.png Content-Type: image/png; name=vote-favorite-off.png Content-Location: http://sstatic.net/so/img/vote-favorite-off.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACAAAAAfBAMAAAB0eNK/AAAALVBMVEX9/f3h4eGq qqq5ubnx8fGtra3b29uzs7O+vr7AwMD19fXk5OTR0dHKysr4+PgS43aPAAAAAXRS TlMAQObYZgAAAMhJREFUeF6tTzEOgkAQXGNCFNEYEx/gEgSCGELsKH2BvIDwBFob Q3WluRfwBCOFjQWxtTG8wPASPS4Hdz1TzO5OZnczMCDSrTrriIUiaGaYKMJ097oq QuPd9+rNYKxepZXhdsOEEIK3Gf7LpRVyRHREYbC7h1rGHb4Qau4wMOJziRVvHlbb GPEZOBa0fUndr9idm4zDj5SEsZSm8WC0BClNGkDtg5SGViViJKXBZ3xaW2/sBDt3 C506We+wEgAt7h2rA+PjBgbCD5HdKINeoY4qAAAAAElFTkSuQmCC ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=41a83a94768c6dacedd11ae24cde09f8.png Content-Type: image/png; name=41a83a94768c6dacedd11ae24cde09f8.png Content-Location: http://www.gravatar.com/avatar/41a83a94768c6dacedd11ae24cde09f8?s=32&d=identicon&r=PG Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABVUlEQVRYhWNssrT7 z4AH1B47iMJvtrLHp5yhZMcWBk4+XqLVM+GVpQNAcYBVTBSDU2YazSzDZj4LsqRz VjpcYt/0WVS3HJv5cAdw8PLAJTl4EGz0OMxZswJFHh30ePhgFcdlPtwBMBdx8PAw bOvuw2kBBw8PSiIjFuAynwWbIloBbOYPeC5g/P//P0o5gB7n6OUAqQDdPPRyYsBD gCQHHF28lGHvtJlky2MDLISVIAxHTkTIeZoYeZwOIDaf//j8BcH+8oXh////DIyM jATlS3ZsQTEHvZzACAFc+Rzmox9fvjB4lRahWI5PnlCZQXQUwCxB9zkp8tgAybmA kOGkWE6WA6gNhpYDhmc5QCifwuoCcssBQuUMC7F1O7nlADpAL2dGywFGQv0CdIBe n6MDQv0AdDC4yoHRfgGcjZRPCZUT6AA9n8PUk90vILUPgKs9MdovwAUAZ5vMouco amsAAAAASUVORK5CYII= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=8fe496625f910b5f94e8ebd9870408b4.png Content-Type: image/png; name=8fe496625f910b5f94e8ebd9870408b4.png Content-Location: http://www.gravatar.com/avatar/8fe496625f910b5f94e8ebd9870408b4?s=32&d=identicon&r=PG Content-Transfer-Encoding: Base64 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 dRwogk/KfwFGl3FHIdNVvQAAAABJRU5ErkJggg== ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=wmd.js Content-Type: application/x-javascript; charset=utf-8; name=wmd.js Content-Location: http://sstatic.net/so/Js/wmd.js?v=3297 Content-Transfer-Encoding: Base64 77u/dmFyIEF0dGFja2xhYj1BdHRhY2tsYWJ8fHt9O3ZhciBBdHRhY2tsYWI9QXR0 YWNrbGFifHx7fTtBdHRhY2tsYWIuc2hvd2Rvd249QXR0YWNrbGFiLnNob3dkb3du fHx7fTtBdHRhY2tsYWIuc2hvd2Rvd24uY29udmVydGVyPWZ1bmN0aW9uKCl7dmFy IGE7dmFyIGo7dmFyIEE7dmFyIGk9MDt0aGlzLm1ha2VIdG1sPWZ1bmN0aW9uKEgp e2E9bmV3IEFycmF5KCk7aj1uZXcgQXJyYXkoKTtBPW5ldyBBcnJheSgpO0g9SC5y ZXBsYWNlKC9+L2csIn5UIik7SD1ILnJlcGxhY2UoL1wkL2csIn5EIik7SD1ILnJl cGxhY2UoL1xyXG4vZywiXG4iKTtIPUgucmVwbGFjZSgvXHIvZywiXG4iKTtIPSJc blxuIitIKyJcblxuIjtIPXooSCk7SD1ILnJlcGxhY2UoL15bIFx0XSskL21nLCIi KTtIPW0oSCk7SD1kKEgpO0g9RyhIKTtIPXEoSCk7SD1ILnJlcGxhY2UoL35EL2cs IiQkIik7SD1ILnJlcGxhY2UoL35UL2csIn4iKTtyZXR1cm4gSH07dmFyIGQ9ZnVu Y3Rpb24oSCl7dmFyIEg9SC5yZXBsYWNlKC9eWyBdezAsM31cWyguKylcXTpbIFx0 XSpcbj9bIFx0XSo8PyhcUys/KT4/WyBcdF0qXG4/WyBcdF0qKD86KFxuKilbIihd KC4rPylbIildWyBcdF0qKT8oPzpcbispL2dtLGZ1bmN0aW9uKEssTSxMLEosSSl7 TT1NLnRvTG93ZXJDYXNlKCk7YVtNXT1oKEwpO2lmKEope3JldHVybiBKK0l9ZWxz ZXtpZihJKXtqW01dPUkucmVwbGFjZSgvIi9nLCImcXVvdDsiKX19cmV0dXJuIiJ9 KTtyZXR1cm4gSH07dmFyIG09ZnVuY3Rpb24oSil7Sj1KLnJlcGxhY2UoL1xuL2cs IlxuXG4iKTt2YXIgST0icHxkaXZ8aFsxLTZdfGJsb2NrcXVvdGV8cHJlfHRhYmxl fGRsfG9sfHVsfHNjcmlwdHxub3NjcmlwdHxmb3JtfGZpZWxkc2V0fGlmcmFtZXxt YXRofGluc3xkZWwiO3ZhciBIPSJwfGRpdnxoWzEtNl18YmxvY2txdW90ZXxwcmV8 dGFibGV8ZGx8b2x8dWx8c2NyaXB0fG5vc2NyaXB0fGZvcm18ZmllbGRzZXR8aWZy YW1lfG1hdGgiO0o9Si5yZXBsYWNlKC9eKDwocHxkaXZ8aFsxLTZdfGJsb2NrcXVv dGV8cHJlfHRhYmxlfGRsfG9sfHVsfHNjcmlwdHxub3NjcmlwdHxmb3JtfGZpZWxk c2V0fGlmcmFtZXxtYXRofGluc3xkZWwpXGJbXlxyXSo/XG48XC9cMj5bIFx0XSoo Pz1cbispKS9nbSx4KTtKPUoucmVwbGFjZSgvXig8KHB8ZGl2fGhbMS02XXxibG9j a3F1b3RlfHByZXx0YWJsZXxkbHxvbHx1bHxzY3JpcHR8bm9zY3JpcHR8Zm9ybXxm aWVsZHNldHxpZnJhbWV8bWF0aClcYlteXHJdKj8uKjxcL1wyPlsgXHRdKig/PVxu KylcbikvZ20seCk7Sj1KLnJlcGxhY2UoLyhcblsgXXswLDN9KDwoaHIpXGIoW148 Pl0pKj9cLz8+KVsgXHRdKig/PVxuezIsfSkpL2cseCk7Sj1KLnJlcGxhY2UoLyhc blxuWyBdezAsM308ISgtLVteXHJdKj8tLVxzKikrPlsgXHRdKig/PVxuezIsfSkp L2cseCk7Sj1KLnJlcGxhY2UoLyg/OlxuXG4pKFsgXXswLDN9KD86PChbPyVdKVte XHJdKj9cMj4pWyBcdF0qKD89XG57Mix9KSkvZyx4KTtKPUoucmVwbGFjZSgvXG5c bi9nLCJcbiIpO3JldHVybiBKfTt2YXIgeD1mdW5jdGlvbihILEkpe3ZhciBKPUk7 Sj1KLnJlcGxhY2UoL1xuXG4vZywiXG4iKTtKPUoucmVwbGFjZSgvXlxuLywiIik7 Sj1KLnJlcGxhY2UoL1xuKyQvZywiIik7Sj0iXG5cbn5LIisoQS5wdXNoKEopLTEp KyJLXG5cbiI7cmV0dXJuIEp9O3ZhciBHPWZ1bmN0aW9uKEkpe0k9ZihJKTt2YXIg SD1vKCI8aHIgLz4iKTtJPUkucmVwbGFjZSgvXlsgXXswLDJ9KFsgXT9cKlsgXT8p ezMsfVsgXHRdKiQvZ20sSCk7ST1JLnJlcGxhY2UoL15bIF17MCwyfShbIF0/LVsg XT8pezMsfVsgXHRdKiQvZ20sSCk7ST1JLnJlcGxhY2UoL15bIF17MCwyfShbIF0/ X1sgXT8pezMsfVsgXHRdKiQvZ20sSCk7ST1FKEkpO0k9YihJKTtJPXUoSSk7ST1t KEkpO0k9ZyhJKTtyZXR1cm4gSX07dmFyIHI9ZnVuY3Rpb24oSCl7SD1DKEgpO0g9 bChIKTtIPWUoSCk7SD1GKEgpO0g9eShIKTtIPW4oSCk7SD1oKEgpO0g9YyhIKTtI PUgucmVwbGFjZSgvICArXG4vZywiIDxicj5cbiIpO3JldHVybiBIfTt2YXIgbD1m dW5jdGlvbihJKXt2YXIgSD0vKDxbYS16XC8hJF0oIlteIl0qInwnW14nXSonfFte JyI+XSkqPnw8ISgtLS4qPy0tXHMqKSs+KS9naTtJPUkucmVwbGFjZShILGZ1bmN0 aW9uKEspe3ZhciBKPUsucmVwbGFjZSgvKC4pPFwvP2NvZGU+KD89LikvZywiJDFg Iik7Sj13KEosIlxcYCpfIik7cmV0dXJuIEp9KTtyZXR1cm4gSX07dmFyIHk9ZnVu Y3Rpb24oSCl7SD1ILnJlcGxhY2UoLyhcWygoPzpcW1teXF1dKlxdfFteXFtcXV0p KilcXVsgXT8oPzpcblsgXSopP1xbKC4qPylcXSkoKSgpKCkoKS9nLEQpO0g9SC5y ZXBsYWNlKC8oXFsoKD86XFtbXlxdXSpcXXxbXlxbXF1dKSopXF1cKFsgXHRdKigp PD8oLio/KT4/WyBcdF0qKChbJyJdKSguKj8pXDZbIFx0XSopP1wpKS9nLEQpO0g9 SC5yZXBsYWNlKC8oXFsoW15cW1xdXSspXF0pKCkoKSgpKCkoKS9nLEQpO3JldHVy biBIfTt2YXIgRD1mdW5jdGlvbihOLFQsUyxSLFEsUCxNLEwpe2lmKEw9PXVuZGVm aW5lZCl7TD0iIn12YXIgSz1UO3ZhciBJPVM7dmFyIEo9Ui50b0xvd2VyQ2FzZSgp O3ZhciBIPVE7dmFyIE89TDtpZihIPT0iIil7aWYoSj09IiIpe0o9SS50b0xvd2Vy Q2FzZSgpLnJlcGxhY2UoLyA/XG4vZywiICIpfUg9IiMiK0o7aWYoYVtKXSE9dW5k ZWZpbmVkKXtIPWFbSl07aWYoaltKXSE9dW5kZWZpbmVkKXtPPWpbSl19fWVsc2V7 aWYoSy5zZWFyY2goL1woXHMqXCkkL20pPi0xKXtIPSIifWVsc2V7cmV0dXJuIEt9 fX1IPXcoSCwiKl8iKTt2YXIgVT0nPGEgaHJlZj0iJytIKyciJztpZihPIT0iIil7 Tz1PLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7Tz13KE8sIipfIik7VSs9JyB0aXRs ZT0iJytPKyciJ31VKz0iPiIrSSsiPC9hPiI7cmV0dXJuIFV9O3ZhciBGPWZ1bmN0 aW9uKEgpe0g9SC5yZXBsYWNlKC8oIVxbKC4qPylcXVsgXT8oPzpcblsgXSopP1xb KC4qPylcXSkoKSgpKCkoKS9nLHQpO0g9SC5yZXBsYWNlKC8oIVxbKC4qPylcXVxz P1woWyBcdF0qKCk8PyhcUys/KT4/WyBcdF0qKChbJyJdKSguKj8pXDZbIFx0XSop P1wpKS9nLHQpO3JldHVybiBIfTt2YXIgdD1mdW5jdGlvbihOLFQsUyxSLFEsUCxN LEwpe3ZhciBLPVQ7dmFyIEo9Uzt2YXIgST1SLnRvTG93ZXJDYXNlKCk7dmFyIEg9 UTt2YXIgTz1MO2lmKCFPKXtPPSIifWlmKEg9PSIiKXtpZihJPT0iIil7ST1KLnRv TG93ZXJDYXNlKCkucmVwbGFjZSgvID9cbi9nLCIgIil9SD0iIyIrSTtpZihhW0ld IT11bmRlZmluZWQpe0g9YVtJXTtpZihqW0ldIT11bmRlZmluZWQpe089altJXX19 ZWxzZXtyZXR1cm4gS319Sj1KLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7SD13KEgs IipfIik7dmFyIFU9JzxpbWcgc3JjPSInK0grJyIgYWx0PSInK0orJyInO089Ty5y ZXBsYWNlKC8iL2csIiZxdW90OyIpO089dyhPLCIqXyIpO1UrPScgdGl0bGU9Iicr TysnIic7VSs9IiAvPiI7cmV0dXJuIFV9O3ZhciBmPWZ1bmN0aW9uKEgpe0g9SC5y ZXBsYWNlKC9eKC4rKVsgXHRdKlxuPStbIFx0XSpcbisvZ20sZnVuY3Rpb24oSSxK KXtyZXR1cm4gbygiPGgxPiIrcihKKSsiPC9oMT4iKX0pO0g9SC5yZXBsYWNlKC9e KC4rKVsgXHRdKlxuLStbIFx0XSpcbisvZ20sZnVuY3Rpb24oSixJKXtyZXR1cm4g bygiPGgyPiIrcihJKSsiPC9oMj4iKX0pO0g9SC5yZXBsYWNlKC9eKFwjezEsNn0p WyBcdF0qKC4rPylbIFx0XSpcIypcbisvZ20sZnVuY3Rpb24oSSxMLEspe3ZhciBK PUwubGVuZ3RoO3JldHVybiBvKCI8aCIrSisiPiIrcihLKSsiPC9oIitKKyI+Iil9 KTtyZXR1cm4gSH07dmFyIHA7dmFyIEU9ZnVuY3Rpb24oSSl7SSs9In4wIjt2YXIg SD0vXigoWyBdezAsM30oWyorLV18XGQrWy5dKVsgXHRdKylbXlxyXSs/KH4wfFxu ezIsfSg/PVxTKSg/IVsgXHRdKig/OlsqKy1dfFxkK1suXSlbIFx0XSspKSkvZ207 aWYoaSl7ST1JLnJlcGxhY2UoSCxmdW5jdGlvbihLLE4sTSl7dmFyIE89Tjt2YXIg TD0oTS5zZWFyY2goL1sqKy1dL2cpPi0xKT8idWwiOiJvbCI7Tz1PLnJlcGxhY2Uo L1xuezIsfS9nLCJcblxuXG4iKTt2YXIgSj1wKE8pO0o9Si5yZXBsYWNlKC9ccysk LywiIik7Sj0iPCIrTCsiPiIrSisiPC8iK0wrIj5cbiI7cmV0dXJuIEp9KX1lbHNl e0g9LyhcblxufF5cbj8pKChbIF17MCwzfShbKistXXxcZCtbLl0pWyBcdF0rKVte XHJdKz8ofjB8XG57Mix9KD89XFMpKD8hWyBcdF0qKD86WyorLV18XGQrWy5dKVsg XHRdKykpKS9nO0k9SS5yZXBsYWNlKEgsZnVuY3Rpb24oTCxQLE4sSyl7dmFyIE89 UDt2YXIgUT1OO3ZhciBNPShLLnNlYXJjaCgvWyorLV0vZyk+LTEpPyJ1bCI6Im9s Ijt2YXIgUT1RLnJlcGxhY2UoL1xuezIsfS9nLCJcblxuXG4iKTt2YXIgSj1wKFEp O0o9TysiPCIrTSsiPlxuIitKKyI8LyIrTSsiPlxuIjtyZXR1cm4gSn0pfUk9SS5y ZXBsYWNlKC9+MC8sIiIpO3JldHVybiBJfTtwPWZ1bmN0aW9uKEgpe2krKztIPUgu cmVwbGFjZSgvXG57Mix9JC8sIlxuIik7SCs9In4wIjtIPUgucmVwbGFjZSgvKFxu KT8oXlsgXHRdKikoWyorLV18XGQrWy5dKVsgXHRdKyhbXlxyXSs/KFxuezEsMn0p KSg/PVxuKih+MHxcMihbKistXXxcZCtbLl0pWyBcdF0rKSkvZ20sZnVuY3Rpb24o SyxNLEwsSixJKXt2YXIgTz1JO3ZhciBOPU07dmFyIFA9TDtpZihOfHwoTy5zZWFy Y2goL1xuezIsfS8pPi0xKSl7Tz1HKHMoTykpfWVsc2V7Tz1FKHMoTykpO089Ty5y ZXBsYWNlKC9cbiQvLCIiKTtPPXIoTyl9cmV0dXJuIjxsaT4iK08rIjwvbGk+XG4i fSk7SD1ILnJlcGxhY2UoL34wL2csIiIpO2ktLTtyZXR1cm4gSH07dmFyIGI9ZnVu Y3Rpb24oSCl7SCs9In4wIjtIPUgucmVwbGFjZSgvKD86XG5cbnxeKSgoPzooPzpb IF17NH18XHQpLipcbispKykoXG4qWyBdezAsM31bXiBcdFxuXXwoPz1+MCkpL2cs ZnVuY3Rpb24oSSxLLEope3ZhciBMPUs7dmFyIE09SjtMPXYocyhMKSk7TD16KEwp O0w9TC5yZXBsYWNlKC9eXG4rL2csIiIpO0w9TC5yZXBsYWNlKC9cbiskL2csIiIp O0w9IjxwcmU+PGNvZGU+IitMKyJcbjwvY29kZT48L3ByZT4iO3JldHVybiBvKEwp K019KTtIPUgucmVwbGFjZSgvfjAvLCIiKTtyZXR1cm4gSH07dmFyIG89ZnVuY3Rp b24oSCl7SD1ILnJlcGxhY2UoLyheXG4rfFxuKyQpL2csIiIpO3JldHVybiJcblxu fksiKyhBLnB1c2goSCktMSkrIktcblxuIn07dmFyIEM9ZnVuY3Rpb24oSCl7SD1I LnJlcGxhY2UoLyhefFteXFxdKShgKykoW15ccl0qP1teYF0pXDIoPyFgKS9nbSxm dW5jdGlvbihLLE0sTCxKLEkpe3ZhciBOPUo7Tj1OLnJlcGxhY2UoL14oWyBcdF0q KS9nLCIiKTtOPU4ucmVwbGFjZSgvWyBcdF0qJC9nLCIiKTtOPXYoTik7cmV0dXJu IE0rIjxjb2RlPiIrTisiPC9jb2RlPiJ9KTtyZXR1cm4gSH07dmFyIHY9ZnVuY3Rp b24oSCl7SD1ILnJlcGxhY2UoLyYvZywiJmFtcDsiKTtIPUgucmVwbGFjZSgvPC9n LCImbHQ7Iik7SD1ILnJlcGxhY2UoLz4vZywiJmd0OyIpO0g9dyhILCIqX3t9W11c XCIsZmFsc2UpO3JldHVybiBIfTt2YXIgYz1mdW5jdGlvbihIKXtIPUgucmVwbGFj ZSgvKFwqXCp8X18pKD89XFMpKFteXHJdKj9cU1tcKl9dKilcMS9nLCI8c3Ryb25n PiQyPC9zdHJvbmc+Iik7SD1ILnJlcGxhY2UoLyhcKnxfKSg/PVxTKShbXlxyXSo/ XFMpXDEvZywiPGVtPiQyPC9lbT4iKTtyZXR1cm4gSH07dmFyIHU9ZnVuY3Rpb24o SCl7SD1ILnJlcGxhY2UoLygoXlsgXHRdKj5bIFx0XT8uK1xuKC4rXG4pKlxuKikr KS9nbSxmdW5jdGlvbihJLEope3ZhciBLPUo7Sz1LLnJlcGxhY2UoL15bIFx0XSo+ WyBcdF0/L2dtLCJ+MCIpO0s9Sy5yZXBsYWNlKC9+MC9nLCIiKTtLPUsucmVwbGFj ZSgvXlsgXHRdKyQvZ20sIiIpO0s9RyhLKTtLPUsucmVwbGFjZSgvKF58XG4pL2cs IiQxICAiKTtLPUsucmVwbGFjZSgvKFxzKjxwcmU+W15ccl0rPzxcL3ByZT4pL2dt LGZ1bmN0aW9uKEwsTSl7dmFyIE49TTtOPU4ucmVwbGFjZSgvXiAgL21nLCJ+MCIp O049Ti5yZXBsYWNlKC9+MC9nLCIiKTtyZXR1cm4gTn0pO3JldHVybiBvKCI8Ymxv Y2txdW90ZT5cbiIrSysiXG48L2Jsb2NrcXVvdGU+Iil9KTtyZXR1cm4gSH07dmFy IGc9ZnVuY3Rpb24oTil7Tj1OLnJlcGxhY2UoL15cbisvZywiIik7Tj1OLnJlcGxh Y2UoL1xuKyQvZywiIik7dmFyIE09Ti5zcGxpdCgvXG57Mix9L2cpO3ZhciBKPW5l dyBBcnJheSgpO3ZhciBIPU0ubGVuZ3RoO2Zvcih2YXIgST0wO0k8SDtJKyspe3Zh ciBMPU1bSV07aWYoTC5zZWFyY2goL35LKFxkKylLL2cpPj0wKXtKLnB1c2goTCl9 ZWxzZXtpZihMLnNlYXJjaCgvXFMvKT49MCl7TD1yKEwpO0w9TC5yZXBsYWNlKC9e KFsgXHRdKikvZywiPHA+Iik7TCs9IjwvcD4iO0oucHVzaChMKX19fUg9Si5sZW5n dGg7Zm9yKHZhciBJPTA7STxIO0krKyl7d2hpbGUoSltJXS5zZWFyY2goL35LKFxk KylLLyk+PTApe3ZhciBLPUFbUmVnRXhwLiQxXTtLPUsucmVwbGFjZSgvXCQvZywi JCQkJCIpO0pbSV09SltJXS5yZXBsYWNlKC9+S1xkK0svLEspfX1yZXR1cm4gSi5q b2luKCJcblxuIil9O3ZhciBoPWZ1bmN0aW9uKEgpe0g9SC5yZXBsYWNlKC8mKD8h Iz9beFhdPyg/OlswLTlhLWZBLUZdK3xcdyspOykvZywiJmFtcDsiKTtIPUgucmVw bGFjZSgvPCg/IVthLXpcLz9cJCFdKS9naSwiJmx0OyIpO3JldHVybiBIfTt2YXIg ZT1mdW5jdGlvbihIKXtIPUgucmVwbGFjZSgvXFwoXFwpL2csayk7SD1ILnJlcGxh Y2UoL1xcKFtgKl97fVxbXF0oKT4jKy0uIV0pL2csayk7cmV0dXJuIEh9O3ZhciBu PWZ1bmN0aW9uKEgpe0g9SC5yZXBsYWNlKC88KChodHRwcz98ZnRwfGRpY3QpOlte JyI+XHNdKyk+L2dpLCc8YSBocmVmPSIkMSI+JDE8L2E+Jyk7SD1ILnJlcGxhY2Uo LzwoPzptYWlsdG86KT8oWy0uXHddK1xAWy1hLXowLTldKyhcLlstYS16MC05XSsp KlwuW2Etel0rKT4vZ2ksZnVuY3Rpb24oSSxKKXtyZXR1cm4gQihxKEopKX0pO3Jl dHVybiBIfTt2YXIgQj1mdW5jdGlvbihKKXtmdW5jdGlvbiBJKEwpe3ZhciBLPSIw MTIzNDU2Nzg5QUJDREVGIjt2YXIgTT1MLmNoYXJDb2RlQXQoMCk7cmV0dXJuKEsu Y2hhckF0KE0+PjQpK0suY2hhckF0KE0mMTUpKX12YXIgSD1bZnVuY3Rpb24oSyl7 cmV0dXJuIiYjIitLLmNoYXJDb2RlQXQoMCkrIjsifSxmdW5jdGlvbihLKXtyZXR1 cm4iJiN4IitJKEspKyI7In0sZnVuY3Rpb24oSyl7cmV0dXJuIEt9XTtKPSJtYWls dG86IitKO0o9Si5yZXBsYWNlKC8uL2csZnVuY3Rpb24oSyl7aWYoSz09IkAiKXtL PUhbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjIpXShLKX1lbHNle2lmKEshPSI6 Iil7dmFyIEw9TWF0aC5yYW5kb20oKTtLPShMPjAuOT9IWzJdKEspOkw+MC40NT9I WzFdKEspOkhbMF0oSykpfX1yZXR1cm4gS30pO0o9JzxhIGhyZWY9IicrSisnIj4n K0orIjwvYT4iO0o9Si5yZXBsYWNlKC8iPi4rOi9nLCciPicpO3JldHVybiBKfTt2 YXIgcT1mdW5jdGlvbihIKXtIPUgucmVwbGFjZSgvfkUoXGQrKUUvZyxmdW5jdGlv bihJLEspe3ZhciBKPXBhcnNlSW50KEspO3JldHVybiBTdHJpbmcuZnJvbUNoYXJD b2RlKEopfSk7cmV0dXJuIEh9O3ZhciBzPWZ1bmN0aW9uKEgpe0g9SC5yZXBsYWNl KC9eKFx0fFsgXXsxLDR9KS9nbSwifjAiKTtIPUgucmVwbGFjZSgvfjAvZywiIik7 cmV0dXJuIEh9O3ZhciB6PWZ1bmN0aW9uKEgpe0g9SC5yZXBsYWNlKC9cdCg/PVx0 KS9nLCIgICAgIik7SD1ILnJlcGxhY2UoL1x0L2csIn5BfkIiKTtIPUgucmVwbGFj ZSgvfkIoLis/KX5BL2csZnVuY3Rpb24oSSxMLEspe3ZhciBOPUw7dmFyIEo9NC1O Lmxlbmd0aCU0O2Zvcih2YXIgTT0wO008SjtNKyspe04rPSIgIn1yZXR1cm4gTn0p O0g9SC5yZXBsYWNlKC9+QS9nLCIgICAgIik7SD1ILnJlcGxhY2UoL35CL2csIiIp O3JldHVybiBIfTt2YXIgdz1mdW5jdGlvbihMLEksSil7dmFyIEg9IihbIitJLnJl cGxhY2UoLyhbXFtcXVxcXSkvZywiXFwkMSIpKyJdKSI7aWYoSil7SD0iXFxcXCIr SH12YXIgSz1uZXcgUmVnRXhwKEgsImciKTtMPUwucmVwbGFjZShLLGspO3JldHVy biBMfTt2YXIgaz1mdW5jdGlvbihILEope3ZhciBJPUouY2hhckNvZGVBdCgwKTty ZXR1cm4ifkUiK0krIkUifX07QXR0YWNrbGFiLndtZEJhc2U9ZnVuY3Rpb24oKXtB dHRhY2tsYWIud21kX2Vudj17dmVyc2lvbjoxLG91dHB1dDoiTWFya2Rvd24iLGxp bmVMZW5ndGg6NDAsYnV0dG9uczoiYm9sZCBpdGFsaWMgbGluayBibG9ja3F1b3Rl IGNvZGUgaW1hZ2Ugb2wgdWwgaGVhZGluZyBociJ9O3ZhciBrPXRvcC5BdHRhY2ts YWI7dmFyIG09dG9wLmRvY3VtZW50O3ZhciBuPXRvcC5SZWdFeHA7dmFyIGE9dG9w Lm5hdmlnYXRvcjtrLlV0aWw9e307ay5Qb3NpdGlvbj17fTtrLkNvbW1hbmQ9e307 ay5HbG9iYWw9e307dmFyIGY9ay5VdGlsO3ZhciBnPWsuUG9zaXRpb247dmFyIGU9 ay5Db21tYW5kO3ZhciBiPWsuR2xvYmFsO2IuaXNJRT0vbXNpZS8udGVzdChhLnVz ZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtiLmlzSUVfNW9yNj0vbXNpZSA2Ly50ZXN0 KGEudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpfHwvbXNpZSA1Ly50ZXN0KGEudXNl ckFnZW50LnRvTG93ZXJDYXNlKCkpO2IuaXNJRV83cGx1cz1iLmlzSUUmJiFiLmlz SUVfNW9yNjtiLmlzT3BlcmE9L29wZXJhLy50ZXN0KGEudXNlckFnZW50LnRvTG93 ZXJDYXNlKCkpO2IuaXNLb25xdWVyb3I9L2tvbnF1ZXJvci8udGVzdChhLnVzZXJB Z2VudC50b0xvd2VyQ2FzZSgpKTt2YXIgaj0nPHA+PGI+SW5zZXJ0IEh5cGVybGlu azwvYj48L3A+PHA+aHR0cDovL2V4YW1wbGUuY29tLyAib3B0aW9uYWwgdGl0bGUi PC9wPic7dmFyIGk9IjxwPjxiPkluc2VydCBJbWFnZTwvYj48L3A+PHA+aHR0cDov L2V4YW1wbGUuY29tL2ltYWdlcy9kaWFncmFtLmpwZyBcIm9wdGlvbmFsIHRpdGxl XCI8YnI+PGJyPk5lZWQgPGEgaHJlZj0naHR0cDovL3d3dy5nb29nbGUuY29tL3Nl YXJjaD9xPWZyZWUraW1hZ2UraG9zdGluZycgdGFyZ2V0PSdfYmxhbmsnPmZyZWUg aW1hZ2UgaG9zdGluZz88L2E+PC9wPiI7dmFyIGQ9Imh0dHA6Ly8iO3ZhciBvPSJo dHRwOi8vIjt2YXIgYz0iaHR0cDovL3NzdGF0aWMubmV0L3NvL0ltZy8iO3ZhciBo PSIvZWRpdGluZy1oZWxwIjt2YXIgbD0iTWFya2Rvd24gRWRpdGluZyBIZWxwIjtr LlBhbmVsQ29sbGVjdGlvbj1mdW5jdGlvbigpe3RoaXMuYnV0dG9uQmFyPW0uZ2V0 RWxlbWVudEJ5SWQoIndtZC1idXR0b24tYmFyIik7dGhpcy5wcmV2aWV3PW0uZ2V0 RWxlbWVudEJ5SWQoIndtZC1wcmV2aWV3Iik7dGhpcy5vdXRwdXQ9bS5nZXRFbGVt ZW50QnlJZCgid21kLW91dHB1dCIpO3RoaXMuaW5wdXQ9bS5nZXRFbGVtZW50QnlJ ZCgid21kLWlucHV0Iil9O2sucGFuZWxzPXVuZGVmaW5lZDtrLmllQ2FjaGVkUmFu Z2U9bnVsbDtrLmllUmV0YXJkZWRDbGljaz1mYWxzZTtmLmlzVmlzaWJsZT1mdW5j dGlvbihwKXtpZih3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSl7cmV0dXJuIHdpbmRv dy5nZXRDb21wdXRlZFN0eWxlKHAsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiZGlz cGxheSIpIT09Im5vbmUifWVsc2V7aWYocC5jdXJyZW50U3R5bGUpe3JldHVybiBw LmN1cnJlbnRTdHlsZS5kaXNwbGF5IT09Im5vbmUifX19O2YuYWRkRXZlbnQ9ZnVu Y3Rpb24ocSxwLHIpe2lmKHEuYXR0YWNoRXZlbnQpe3EuYXR0YWNoRXZlbnQoIm9u IitwLHIpfWVsc2V7cS5hZGRFdmVudExpc3RlbmVyKHAscixmYWxzZSl9fTtmLnJl bW92ZUV2ZW50PWZ1bmN0aW9uKHEscCxyKXtpZihxLmRldGFjaEV2ZW50KXtxLmRl dGFjaEV2ZW50KCJvbiIrcCxyKX1lbHNle3EucmVtb3ZlRXZlbnRMaXN0ZW5lcihw LHIsZmFsc2UpfX07Zi5maXhFb2xDaGFycz1mdW5jdGlvbihwKXtwPXAucmVwbGFj ZSgvXHJcbi9nLCJcbiIpO3A9cC5yZXBsYWNlKC9cci9nLCJcbiIpO3JldHVybiBw fTtmLmV4dGVuZFJlZ0V4cD1mdW5jdGlvbihyLHQscSl7aWYodD09PW51bGx8fHQ9 PT11bmRlZmluZWQpe3Q9IiJ9aWYocT09PW51bGx8fHE9PT11bmRlZmluZWQpe3E9 IiJ9dmFyIHM9ci50b1N0cmluZygpO3ZhciBwO3M9cy5yZXBsYWNlKC9cLyhbZ2lt XSopJC8sIiIpO3A9bi4kMTtzPXMucmVwbGFjZSgvKF5cL3xcLyQpL2csIiIpO3M9 dCtzK3E7cmV0dXJuIG5ldyBuKHMscCl9O2YuY3JlYXRlSW1hZ2U9ZnVuY3Rpb24o cCl7dmFyIHI9YytwO3ZhciBxPW0uY3JlYXRlRWxlbWVudCgiaW1nIik7cS5jbGFz c05hbWU9IndtZC1idXR0b24iO3Euc3JjPXI7cmV0dXJuIHF9O2YucHJvbXB0PWZ1 bmN0aW9uKHYseSxyKXt2YXIgczt2YXIgcDt2YXIgdDtpZih5PT09dW5kZWZpbmVk KXt5PSIifXZhciB1PWZ1bmN0aW9uKHope3ZhciBBPSh6LmNoYXJDb2RlfHx6Lmtl eUNvZGUpO2lmKEE9PT0yNyl7dyh0cnVlKX19O3ZhciB3PWZ1bmN0aW9uKHope2Yu cmVtb3ZlRXZlbnQobS5ib2R5LCJrZXlkb3duIix1KTt2YXIgQT10LnZhbHVlO2lm KHope0E9bnVsbH1lbHNle0E9QS5yZXBsYWNlKCJodHRwOi8vaHR0cDovLyIsImh0 dHA6Ly8iKTtBPUEucmVwbGFjZSgiaHR0cDovL2h0dHBzOi8vIiwiaHR0cHM6Ly8i KTtBPUEucmVwbGFjZSgiaHR0cDovL2Z0cDovLyIsImZ0cDovLyIpO2lmKEEuaW5k ZXhPZigiaHR0cDovLyIpPT09LTEmJkEuaW5kZXhPZigiZnRwOi8vIik9PT0tMSYm QS5pbmRleE9mKCJodHRwczovLyIpPT09LTEpe0E9Imh0dHA6Ly8iK0F9fXMucGFy ZW50Tm9kZS5yZW1vdmVDaGlsZChzKTtwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo cCk7cihBKTtyZXR1cm4gZmFsc2V9O3ZhciBxPWZ1bmN0aW9uKCl7cD1tLmNyZWF0 ZUVsZW1lbnQoImRpdiIpO3AuY2xhc3NOYW1lPSJ3bWQtcHJvbXB0LWJhY2tncm91 bmQiO3N0eWxlPXAuc3R5bGU7c3R5bGUucG9zaXRpb249ImFic29sdXRlIjtzdHls ZS50b3A9IjAiO3N0eWxlLnpJbmRleD0iMTAwMCI7aWYoYi5pc0tvbnF1ZXJvcil7 c3R5bGUuYmFja2dyb3VuZENvbG9yPSJ0cmFuc3BhcmVudCJ9ZWxzZXtpZihiLmlz SUUpe3N0eWxlLmZpbHRlcj0iYWxwaGEob3BhY2l0eT01MCkifWVsc2V7c3R5bGUu b3BhY2l0eT0iMC41In19dmFyIHo9Zy5nZXRQYWdlU2l6ZSgpO3N0eWxlLmhlaWdo dD16WzFdKyJweCI7aWYoYi5pc0lFKXtzdHlsZS5sZWZ0PW0uZG9jdW1lbnRFbGVt ZW50LnNjcm9sbExlZnQ7c3R5bGUud2lkdGg9bS5kb2N1bWVudEVsZW1lbnQuY2xp ZW50V2lkdGh9ZWxzZXtzdHlsZS5sZWZ0PSIwIjtzdHlsZS53aWR0aD0iMTAwJSJ9 bS5ib2R5LmFwcGVuZENoaWxkKHApfTt2YXIgeD1mdW5jdGlvbigpe3M9bS5jcmVh dGVFbGVtZW50KCJkaXYiKTtzLmNsYXNzTmFtZT0id21kLXByb21wdC1kaWFsb2ci O3Muc3R5bGUucGFkZGluZz0iMTBweDsiO3Muc3R5bGUucG9zaXRpb249ImZpeGVk IjtzLnN0eWxlLndpZHRoPSI0MDBweCI7cy5zdHlsZS56SW5kZXg9IjEwMDEiO3Zh ciB6PW0uY3JlYXRlRWxlbWVudCgiZGl2Iik7ei5pbm5lckhUTUw9djt6LnN0eWxl LnBhZGRpbmc9IjVweCI7cy5hcHBlbmRDaGlsZCh6KTt2YXIgQT1tLmNyZWF0ZUVs ZW1lbnQoImZvcm0iKTtBLm9uc3VibWl0PWZ1bmN0aW9uKCl7cmV0dXJuIHcoZmFs c2UpfTtzdHlsZT1BLnN0eWxlO3N0eWxlLnBhZGRpbmc9IjAiO3N0eWxlLm1hcmdp bj0iMCI7c3R5bGUuY3NzRmxvYXQ9ImxlZnQiO3N0eWxlLndpZHRoPSIxMDAlIjtz dHlsZS50ZXh0QWxpZ249ImNlbnRlciI7c3R5bGUucG9zaXRpb249InJlbGF0aXZl IjtzLmFwcGVuZENoaWxkKEEpO3Q9bS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Qu dHlwZT0idGV4dCI7dC52YWx1ZT15O3N0eWxlPXQuc3R5bGU7c3R5bGUuZGlzcGxh eT0iYmxvY2siO3N0eWxlLndpZHRoPSI4MCUiO3N0eWxlLm1hcmdpbkxlZnQ9c3R5 bGUubWFyZ2luUmlnaHQ9ImF1dG8iO0EuYXBwZW5kQ2hpbGQodCk7dmFyIEM9bS5j cmVhdGVFbGVtZW50KCJpbnB1dCIpO0MudHlwZT0iYnV0dG9uIjtDLm9uY2xpY2s9 ZnVuY3Rpb24oKXtyZXR1cm4gdyhmYWxzZSl9O0MudmFsdWU9Ik9LIjtzdHlsZT1D LnN0eWxlO3N0eWxlLm1hcmdpbj0iMTBweCI7c3R5bGUuZGlzcGxheT0iaW5saW5l IjtzdHlsZS53aWR0aD0iN2VtIjt2YXIgQj1tLmNyZWF0ZUVsZW1lbnQoImlucHV0 Iik7Qi50eXBlPSJidXR0b24iO0Iub25jbGljaz1mdW5jdGlvbigpe3JldHVybiB3 KHRydWUpfTtCLnZhbHVlPSJDYW5jZWwiO3N0eWxlPUIuc3R5bGU7c3R5bGUubWFy Z2luPSIxMHB4IjtzdHlsZS5kaXNwbGF5PSJpbmxpbmUiO3N0eWxlLndpZHRoPSI3 ZW0iO2lmKC9tYWMvLnRlc3QoYS5wbGF0Zm9ybS50b0xvd2VyQ2FzZSgpKSl7QS5h cHBlbmRDaGlsZChCKTtBLmFwcGVuZENoaWxkKEMpfWVsc2V7QS5hcHBlbmRDaGls ZChDKTtBLmFwcGVuZENoaWxkKEIpfWYuYWRkRXZlbnQobS5ib2R5LCJrZXlkb3du Iix1KTtzLnN0eWxlLnRvcD0iNTAlIjtzLnN0eWxlLmxlZnQ9IjUwJSI7cy5zdHls ZS5kaXNwbGF5PSJibG9jayI7aWYoYi5pc0lFXzVvcjYpe3Muc3R5bGUucG9zaXRp b249ImFic29sdXRlIjtzLnN0eWxlLnRvcD1tLmRvY3VtZW50RWxlbWVudC5zY3Jv bGxUb3ArMjAwKyJweCI7cy5zdHlsZS5sZWZ0PSI1MCUifW0uYm9keS5hcHBlbmRD aGlsZChzKTtzLnN0eWxlLm1hcmdpblRvcD0tKGcuZ2V0SGVpZ2h0KHMpLzIpKyJw eCI7cy5zdHlsZS5tYXJnaW5MZWZ0PS0oZy5nZXRXaWR0aChzKS8yKSsicHgifTtx KCk7dG9wLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt4KCk7dmFyIEE9eS5sZW5ndGg7 aWYodC5zZWxlY3Rpb25TdGFydCE9PXVuZGVmaW5lZCl7dC5zZWxlY3Rpb25TdGFy dD0wO3Quc2VsZWN0aW9uRW5kPUF9ZWxzZXtpZih0LmNyZWF0ZVRleHRSYW5nZSl7 dmFyIHo9dC5jcmVhdGVUZXh0UmFuZ2UoKTt6LmNvbGxhcHNlKGZhbHNlKTt6Lm1v dmVTdGFydCgiY2hhcmFjdGVyIiwtQSk7ei5tb3ZlRW5kKCJjaGFyYWN0ZXIiLEEp O3ouc2VsZWN0KCl9fXQuZm9jdXMoKX0sMCl9O2cuZ2V0VG9wPWZ1bmN0aW9uKHIs cSl7dmFyIHA9ci5vZmZzZXRUb3A7aWYoIXEpe3doaWxlKHI9ci5vZmZzZXRQYXJl bnQpe3ArPXIub2Zmc2V0VG9wfX1yZXR1cm4gcH07Zy5nZXRIZWlnaHQ9ZnVuY3Rp b24ocCl7cmV0dXJuIHAub2Zmc2V0SGVpZ2h0fHxwLnNjcm9sbEhlaWdodH07Zy5n ZXRXaWR0aD1mdW5jdGlvbihwKXtyZXR1cm4gcC5vZmZzZXRXaWR0aHx8cC5zY3Jv bGxXaWR0aH07Zy5nZXRQYWdlU2l6ZT1mdW5jdGlvbigpe3ZhciBxLHI7dmFyIHAs dTtpZihzZWxmLmlubmVySGVpZ2h0JiZzZWxmLnNjcm9sbE1heFkpe3E9bS5ib2R5 LnNjcm9sbFdpZHRoO3I9c2VsZi5pbm5lckhlaWdodCtzZWxmLnNjcm9sbE1heFl9 ZWxzZXtpZihtLmJvZHkuc2Nyb2xsSGVpZ2h0Pm0uYm9keS5vZmZzZXRIZWlnaHQp e3E9bS5ib2R5LnNjcm9sbFdpZHRoO3I9bS5ib2R5LnNjcm9sbEhlaWdodH1lbHNl e3E9bS5ib2R5Lm9mZnNldFdpZHRoO3I9bS5ib2R5Lm9mZnNldEhlaWdodH19aWYo c2VsZi5pbm5lckhlaWdodCl7cD1zZWxmLmlubmVyV2lkdGg7dT1zZWxmLmlubmVy SGVpZ2h0fWVsc2V7aWYobS5kb2N1bWVudEVsZW1lbnQmJm0uZG9jdW1lbnRFbGVt ZW50LmNsaWVudEhlaWdodCl7cD1tLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0 aDt1PW0uZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodH1lbHNle2lmKG0uYm9k eSl7cD1tLmJvZHkuY2xpZW50V2lkdGg7dT1tLmJvZHkuY2xpZW50SGVpZ2h0fX19 dmFyIHQ9TWF0aC5tYXgocSxwKTt2YXIgcz1NYXRoLm1heChyLHUpO3JldHVyblt0 LHMscCx1XX07ay51bmRvTWFuYWdlcj1mdW5jdGlvbihBKXt2YXIgRT10aGlzO3Zh ciB5PVtdO3ZhciB3PTA7dmFyIHY9Im5vbmUiO3ZhciBxO3ZhciBCO3ZhciByO3Zh ciB1O3ZhciBwPWZ1bmN0aW9uKEcsRil7aWYodiE9Ryl7dj1HO2lmKCFGKXtzKCl9 fWlmKCFiLmlzSUV8fHYhPSJtb3ZpbmciKXtyPXRvcC5zZXRUaW1lb3V0KHgsMSl9 ZWxzZXt1PW51bGx9fTt2YXIgeD1mdW5jdGlvbigpe3U9bmV3IGsuVGV4dGFyZWFT dGF0ZSgpO3I9dW5kZWZpbmVkfTt0aGlzLnNldENvbW1hbmRNb2RlPWZ1bmN0aW9u KCl7dj0iY29tbWFuZCI7cygpO3I9dG9wLnNldFRpbWVvdXQoeCwwKX07dGhpcy5j YW5VbmRvPWZ1bmN0aW9uKCl7cmV0dXJuIHc+MX07dGhpcy5jYW5SZWRvPWZ1bmN0 aW9uKCl7aWYoeVt3KzFdKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9O3RoaXMu dW5kbz1mdW5jdGlvbigpe2lmKEUuY2FuVW5kbygpKXtpZihxKXtxLnJlc3RvcmUo KTtxPW51bGx9ZWxzZXt5W3ddPW5ldyBrLlRleHRhcmVhU3RhdGUoKTt5Wy0td10u cmVzdG9yZSgpO2lmKEEpe0EoKX19fXY9Im5vbmUiO2sucGFuZWxzLmlucHV0LmZv Y3VzKCk7eCgpfTt0aGlzLnJlZG89ZnVuY3Rpb24oKXtpZihFLmNhblJlZG8oKSl7 eVsrK3ddLnJlc3RvcmUoKTtpZihBKXtBKCl9fXY9Im5vbmUiO2sucGFuZWxzLmlu cHV0LmZvY3VzKCk7eCgpfTt2YXIgcz1mdW5jdGlvbigpe3ZhciBGPXV8fG5ldyBr LlRleHRhcmVhU3RhdGUoKTtpZighRil7cmV0dXJuIGZhbHNlfWlmKHY9PSJtb3Zp bmciKXtpZighcSl7cT1GfXJldHVybn1pZihxKXtpZih5W3ctMV0udGV4dCE9cS50 ZXh0KXt5W3crK109cX1xPW51bGx9eVt3KytdPUY7eVt3KzFdPW51bGw7aWYoQSl7 QSgpfX07dmFyIHo9ZnVuY3Rpb24oRil7dmFyIEg9ZmFsc2U7aWYoRi5jdHJsS2V5 fHxGLm1ldGFLZXkpe3ZhciBHPUYuY2hhckNvZGV8fEYua2V5Q29kZTt2YXIgST1T dHJpbmcuZnJvbUNoYXJDb2RlKEcpO3N3aXRjaChJKXtjYXNlInkiOkUucmVkbygp O0g9dHJ1ZTticmVhaztjYXNlInoiOmlmKCFGLnNoaWZ0S2V5KXtFLnVuZG8oKX1l bHNle0UucmVkbygpfUg9dHJ1ZTticmVha319aWYoSCl7aWYoRi5wcmV2ZW50RGVm YXVsdCl7Ri5wcmV2ZW50RGVmYXVsdCgpfWlmKHRvcC5ldmVudCl7dG9wLmV2ZW50 LnJldHVyblZhbHVlPWZhbHNlfXJldHVybn19O3ZhciBEPWZ1bmN0aW9uKEYpe2lm KCFGLmN0cmxLZXkmJiFGLm1ldGFLZXkpe3ZhciBHPUYua2V5Q29kZTtpZigoRz49 MzMmJkc8PTQwKXx8KEc+PTYzMjMyJiZHPD02MzIzNSkpe3AoIm1vdmluZyIpfWVs c2V7aWYoRz09OHx8Rz09NDZ8fEc9PTEyNyl7cCgiZGVsZXRpbmciKX1lbHNle2lm KEc9PTEzKXtwKCJuZXdsaW5lcyIpfWVsc2V7aWYoRz09Mjcpe3AoImVzY2FwZSIp fWVsc2V7aWYoKEc8MTZ8fEc+MjApJiZHIT05MSl7cCgidHlwaW5nIil9fX19fX19 O3ZhciB0PWZ1bmN0aW9uKCl7Zi5hZGRFdmVudChrLnBhbmVscy5pbnB1dCwia2V5 cHJlc3MiLGZ1bmN0aW9uKEcpe2lmKChHLmN0cmxLZXl8fEcubWV0YUtleSkmJihH LmtleUNvZGU9PTg5fHxHLmtleUNvZGU9PTkwKSl7Ry5wcmV2ZW50RGVmYXVsdCgp fX0pO3ZhciBGPWZ1bmN0aW9uKCl7aWYoYi5pc0lFfHwodSYmdS50ZXh0IT1rLnBh bmVscy5pbnB1dC52YWx1ZSkpe2lmKHI9PXVuZGVmaW5lZCl7dj0icGFzdGUiO3Mo KTt4KCl9fX07Zi5hZGRFdmVudChrLnBhbmVscy5pbnB1dCwia2V5ZG93biIseik7 Zi5hZGRFdmVudChrLnBhbmVscy5pbnB1dCwia2V5ZG93biIsRCk7Zi5hZGRFdmVu dChrLnBhbmVscy5pbnB1dCwibW91c2Vkb3duIixmdW5jdGlvbigpe3AoIm1vdmlu ZyIpfSk7ay5wYW5lbHMuaW5wdXQub25wYXN0ZT1GO2sucGFuZWxzLmlucHV0Lm9u ZHJvcD1GfTt2YXIgQz1mdW5jdGlvbigpe3QoKTt4KCk7cygpfTtDKCl9O2suZWRp dG9yPWZ1bmN0aW9uKHkpe2lmKCF5KXt5PWZ1bmN0aW9uKCl7fX12YXIgdj1rLnBh bmVscy5pbnB1dDt2YXIgcz0wO3ZhciB6PXRoaXM7dmFyIHU7dmFyIEI7dmFyIHE7 dmFyIHc7dmFyIHg7dmFyIEU9ZnVuY3Rpb24oRyl7di5mb2N1cygpO2lmKEcudGV4 dE9wKXtpZih4KXt4LnNldENvbW1hbmRNb2RlKCl9dmFyIEk9bmV3IGsuVGV4dGFy ZWFTdGF0ZSgpO2lmKCFJKXtyZXR1cm59dmFyIEo9SS5nZXRDaHVua3MoKTt2YXIg Rj1mdW5jdGlvbigpe3YuZm9jdXMoKTtpZihKKXtJLnNldENodW5rcyhKKX1JLnJl c3RvcmUoKTt5KCl9O3ZhciBIPUcudGV4dE9wKEosRik7aWYoIUgpe0YoKX19aWYo Ry5leGVjdXRlKXtHLmV4ZWN1dGUoeil9fTt2YXIgQz1mdW5jdGlvbigpe2lmKHgp e3AoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndtZC11bmRvLWJ1dHRvbiIpLHgu Y2FuVW5kbygpKTtwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3bWQtcmVkby1i dXR0b24iKSx4LmNhblJlZG8oKSl9fTt2YXIgcD1mdW5jdGlvbihGLEgpe3ZhciBJ PSIwcHgiO3ZhciBKPSItMjBweCI7dmFyIEc9Ii00MHB4IjtpZihIKXtGLnN0eWxl LmJhY2tncm91bmRQb3NpdGlvbj1GLlhTaGlmdCsiICIrSTtGLm9ubW91c2VvdmVy PWZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb249dGhpcy5Y U2hpZnQrIiAiK0d9O0Yub25tb3VzZW91dD1mdW5jdGlvbigpe3RoaXMuc3R5bGUu YmFja2dyb3VuZFBvc2l0aW9uPXRoaXMuWFNoaWZ0KyIgIitJfTtpZihiLmlzSUUp e0Yub25tb3VzZWRvd249ZnVuY3Rpb24oKXtrLmllUmV0YXJkZWRDbGljaz10cnVl O2suaWVDYWNoZWRSYW5nZT1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2Uo KX19aWYoIUYuaXNIZWxwKXtGLm9uY2xpY2s9ZnVuY3Rpb24oKXtpZih0aGlzLm9u bW91c2VvdXQpe3RoaXMub25tb3VzZW91dCgpfUUodGhpcyk7cmV0dXJuIGZhbHNl fX19ZWxzZXtGLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbj1GLlhTaGlmdCsiICIr SjtGLm9ubW91c2VvdmVyPUYub25tb3VzZW91dD1GLm9uY2xpY2s9ZnVuY3Rpb24o KXt9fX07dmFyIHQ9ZnVuY3Rpb24oKXt2YXIgSz1kb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgid21kLWJ1dHRvbi1iYXIiKTt2YXIgRz0iMHB4Ijt2YXIgSj0iLTIwcHgi O3ZhciBQPSItNDBweCI7dmFyIFY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwi KTtWLmlkPSJ3bWQtYnV0dG9uLXJvdyI7Vj1LLmFwcGVuZENoaWxkKFYpO3ZhciBP PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Ty5jbGFzc05hbWU9IndtZC1i dXR0b24iO08uaWQ9IndtZC1ib2xkLWJ1dHRvbiI7Ty50aXRsZT0iU3Ryb25nIDxz dHJvbmc+IEN0cmwrQiI7Ty5YU2hpZnQ9IjBweCI7Ty50ZXh0T3A9ZS5kb0JvbGQ7 cChPLHRydWUpO1YuYXBwZW5kQ2hpbGQoTyk7dmFyIE49ZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgibGkiKTtOLmNsYXNzTmFtZT0id21kLWJ1dHRvbiI7Ti5pZD0id21k LWl0YWxpYy1idXR0b24iO04udGl0bGU9IkVtcGhhc2lzIDxlbT4gQ3RybCtJIjtO LlhTaGlmdD0iLTIwcHgiO04udGV4dE9wPWUuZG9JdGFsaWM7cChOLHRydWUpO1Yu YXBwZW5kQ2hpbGQoTik7dmFyIFM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGki KTtTLmNsYXNzTmFtZT0id21kLXNwYWNlciI7Uy5pZD0id21kLXNwYWNlcjEiO1Yu YXBwZW5kQ2hpbGQoUyk7dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGki KTtULmNsYXNzTmFtZT0id21kLWJ1dHRvbiI7VC5pZD0id21kLWxpbmstYnV0dG9u IjtULnRpdGxlPSJIeXBlcmxpbmsgPGE+IEN0cmwrTCI7VC5YU2hpZnQ9Ii00MHB4 IjtULnRleHRPcD1mdW5jdGlvbihhYixhYyl7cmV0dXJuIGUuZG9MaW5rT3JJbWFn ZShhYixhYyxmYWxzZSl9O3AoVCx0cnVlKTtWLmFwcGVuZENoaWxkKFQpO3ZhciBX PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Vy5jbGFzc05hbWU9IndtZC1i dXR0b24iO1cuaWQ9IndtZC1xdW90ZS1idXR0b24iO1cudGl0bGU9IkJsb2NrcXVv dGUgPGJsb2NrcXVvdGU+IEN0cmwrUSI7Vy5YU2hpZnQ9Ii02MHB4IjtXLnRleHRP cD1lLmRvQmxvY2txdW90ZTtwKFcsdHJ1ZSk7Vi5hcHBlbmRDaGlsZChXKTt2YXIg WD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO1guY2xhc3NOYW1lPSJ3bWQt YnV0dG9uIjtYLmlkPSJ3bWQtY29kZS1idXR0b24iO1gudGl0bGU9IkNvZGUgU2Ft cGxlIDxwcmU+PGNvZGU+IEN0cmwrSyI7WC5YU2hpZnQ9Ii04MHB4IjtYLnRleHRP cD1lLmRvQ29kZTtwKFgsdHJ1ZSk7Vi5hcHBlbmRDaGlsZChYKTt2YXIgTD1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO0wuY2xhc3NOYW1lPSJ3bWQtYnV0dG9u IjtMLmlkPSJ3bWQtaW1hZ2UtYnV0dG9uIjtMLnRpdGxlPSJJbWFnZSA8aW1nPiBD dHJsK0ciO0wuWFNoaWZ0PSItMTAwcHgiO0wudGV4dE9wPWZ1bmN0aW9uKGFiLGFj KXtyZXR1cm4gZS5kb0xpbmtPckltYWdlKGFiLGFjLHRydWUpfTtwKEwsdHJ1ZSk7 Vi5hcHBlbmRDaGlsZChMKTt2YXIgUj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJs aSIpO1IuY2xhc3NOYW1lPSJ3bWQtc3BhY2VyIjtSLmlkPSJ3bWQtc3BhY2VyMiI7 Vi5hcHBlbmRDaGlsZChSKTt2YXIgTT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJs aSIpO00uY2xhc3NOYW1lPSJ3bWQtYnV0dG9uIjtNLmlkPSJ3bWQtb2xpc3QtYnV0 dG9uIjtNLnRpdGxlPSJOdW1iZXJlZCBMaXN0IDxvbD4gQ3RybCtPIjtNLlhTaGlm dD0iLTEyMHB4IjtNLnRleHRPcD1mdW5jdGlvbihhYixhYyl7ZS5kb0xpc3QoYWIs YWMsdHJ1ZSl9O3AoTSx0cnVlKTtWLmFwcGVuZENoaWxkKE0pO3ZhciBhYT1kb2N1 bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO2FhLmNsYXNzTmFtZT0id21kLWJ1dHRv biI7YWEuaWQ9IndtZC11bGlzdC1idXR0b24iO2FhLnRpdGxlPSJCdWxsZXRlZCBM aXN0IDx1bD4gQ3RybCtVIjthYS5YU2hpZnQ9Ii0xNDBweCI7YWEudGV4dE9wPWZ1 bmN0aW9uKGFiLGFjKXtlLmRvTGlzdChhYixhYyxmYWxzZSl9O3AoYWEsdHJ1ZSk7 Vi5hcHBlbmRDaGlsZChhYSk7dmFyIFU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi bGkiKTtVLmNsYXNzTmFtZT0id21kLWJ1dHRvbiI7VS5pZD0id21kLWhlYWRpbmct YnV0dG9uIjtVLnRpdGxlPSJIZWFkaW5nIDxoMT4vPGgyPiBDdHJsK0giO1UuWFNo aWZ0PSItMTYwcHgiO1UudGV4dE9wPWUuZG9IZWFkaW5nO3AoVSx0cnVlKTtWLmFw cGVuZENoaWxkKFUpO3ZhciBIPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7 SC5jbGFzc05hbWU9IndtZC1idXR0b24iO0guaWQ9IndtZC1oci1idXR0b24iO0gu dGl0bGU9Ikhvcml6b250YWwgUnVsZSA8aHI+IEN0cmwrUiI7SC5YU2hpZnQ9Ii0x ODBweCI7SC50ZXh0T3A9ZS5kb0hvcml6b250YWxSdWxlO3AoSCx0cnVlKTtWLmFw cGVuZENoaWxkKEgpO3ZhciBRPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7 US5jbGFzc05hbWU9IndtZC1zcGFjZXIiO1EuaWQ9IndtZC1zcGFjZXIzIjtWLmFw cGVuZENoaWxkKFEpO3ZhciBGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7 Ri5jbGFzc05hbWU9IndtZC1idXR0b24iO0YuaWQ9IndtZC11bmRvLWJ1dHRvbiI7 Ri50aXRsZT0iVW5kbyAtIEN0cmwrWiI7Ri5YU2hpZnQ9Ii0yMDBweCI7Ri5leGVj dXRlPWZ1bmN0aW9uKGFiKXthYi51bmRvKCl9O3AoRix0cnVlKTtWLmFwcGVuZENo aWxkKEYpO3ZhciBaPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Wi5jbGFz c05hbWU9IndtZC1idXR0b24iO1ouaWQ9IndtZC1yZWRvLWJ1dHRvbiI7Wi50aXRs ZT0iUmVkbyAtIEN0cmwrWSI7aWYoL3dpbi8udGVzdChhLnBsYXRmb3JtLnRvTG93 ZXJDYXNlKCkpKXtaLnRpdGxlPSJSZWRvIC0gQ3RybCtZIn1lbHNle1oudGl0bGU9 IlJlZG8gLSBDdHJsK1NoaWZ0K1oifVouWFNoaWZ0PSItMjIwcHgiO1ouZXhlY3V0 ZT1mdW5jdGlvbihhYil7YWIucmVkbygpfTtwKFosdHJ1ZSk7Vi5hcHBlbmRDaGls ZChaKTt2YXIgWT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO1kuY2xhc3NO YW1lPSJ3bWQtYnV0dG9uIjtZLmlkPSJ3bWQtaGVscC1idXR0b24iO1kuWFNoaWZ0 PSItMjQwcHgiO1kuaXNIZWxwPXRydWU7dmFyIEk9ZG9jdW1lbnQuY3JlYXRlRWxl bWVudCgiYSIpO0kuaHJlZj1oO0kudGFyZ2V0PSJfYmxhbmsiO0kudGl0bGU9bDtZ LmFwcGVuZENoaWxkKEkpO3AoWSx0cnVlKTtWLmFwcGVuZENoaWxkKFkpO0MoKX07 dmFyIHI9ZnVuY3Rpb24oKXtpZigvXD9ub3VuZG8vLnRlc3QobS5sb2NhdGlvbi5o cmVmKSl7ay5uYXRpdmVVbmRvPXRydWV9aWYoIWsubmF0aXZlVW5kbyl7eD1uZXcg ay51bmRvTWFuYWdlcihmdW5jdGlvbigpe3koKTtDKCl9KX10KCk7dmFyIEc9Imtl eWRvd24iO2lmKGIuaXNPcGVyYSl7Rz0ia2V5cHJlc3MifWYuYWRkRXZlbnQodixH LGZ1bmN0aW9uKEkpe2lmKEkuY3RybEtleXx8SS5tZXRhS2V5KXt2YXIgSj1JLmNo YXJDb2RlfHxJLmtleUNvZGU7dmFyIEg9U3RyaW5nLmZyb21DaGFyQ29kZShKKS50 b0xvd2VyQ2FzZSgpO3N3aXRjaChIKXtjYXNlImIiOkUoZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoIndtZC1ib2xkLWJ1dHRvbiIpKTticmVhaztjYXNlImkiOkUoZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndtZC1pdGFsaWMtYnV0dG9uIikpO2JyZWFr O2Nhc2UibCI6RShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid21kLWxpbmstYnV0 dG9uIikpO2JyZWFrO2Nhc2UicSI6RShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi d21kLXF1b3RlLWJ1dHRvbiIpKTticmVhaztjYXNlImsiOkUoZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoIndtZC1jb2RlLWJ1dHRvbiIpKTticmVhaztjYXNlImciOkUo ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndtZC1pbWFnZS1idXR0b24iKSk7YnJl YWs7Y2FzZSJvIjpFKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3bWQtb2xpc3Qt YnV0dG9uIikpO2JyZWFrO2Nhc2UidSI6RShkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgid21kLXVsaXN0LWJ1dHRvbiIpKTticmVhaztjYXNlImgiOkUoZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoIndtZC1oZWFkaW5nLWJ1dHRvbiIpKTticmVhaztjYXNl InIiOkUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndtZC1oci1idXR0b24iKSk7 YnJlYWs7Y2FzZSJ5IjpFKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3bWQtcmVk by1idXR0b24iKSk7YnJlYWs7Y2FzZSJ6IjppZihJLnNoaWZ0S2V5KXtFKGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCJ3bWQtcmVkby1idXR0b24iKSl9ZWxzZXtFKGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3bWQtdW5kby1idXR0b24iKSl9YnJlYWs7 ZGVmYXVsdDpyZXR1cm59aWYoSS5wcmV2ZW50RGVmYXVsdCl7SS5wcmV2ZW50RGVm YXVsdCgpfWlmKHRvcC5ldmVudCl7dG9wLmV2ZW50LnJldHVyblZhbHVlPWZhbHNl fX19KTtmLmFkZEV2ZW50KHYsImtleXVwIixmdW5jdGlvbihIKXtpZihILnNoaWZ0 S2V5JiYhSC5jdHJsS2V5JiYhSC5tZXRhS2V5KXt2YXIgST1ILmNoYXJDb2RlfHxI LmtleUNvZGU7aWYoST09PTEzKXtmYWtlQnV0dG9uPXt9O2Zha2VCdXR0b24udGV4 dE9wPWUuZG9BdXRvaW5kZW50O0UoZmFrZUJ1dHRvbil9fX0pO2lmKGIuaXNJRSl7 Zi5hZGRFdmVudCh2LCJrZXlkb3duIixmdW5jdGlvbihIKXt2YXIgST1ILmtleUNv ZGU7aWYoST09PTI3KXtyZXR1cm4gZmFsc2V9fSl9aWYodi5mb3JtKXt2YXIgRj12 LmZvcm0ub25zdWJtaXQ7di5mb3JtLm9uc3VibWl0PWZ1bmN0aW9uKCl7QSgpO2lm KEYpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fX07dmFyIEE9ZnVu Y3Rpb24oKXtpZihrLnNob3dkb3duKXt2YXIgRj1uZXcgay5zaG93ZG93bi5jb252 ZXJ0ZXIoKX12YXIgRz12LnZhbHVlO3ZhciBIPWZ1bmN0aW9uKCl7di52YWx1ZT1H fTtpZighL21hcmtkb3duLy50ZXN0KGsud21kX2Vudi5vdXRwdXQudG9Mb3dlckNh c2UoKSkpe2lmKEYpe3YudmFsdWU9Ri5tYWtlSHRtbChHKTt0b3Auc2V0VGltZW91 dChILDApfX1yZXR1cm4gdHJ1ZX07dGhpcy51bmRvPWZ1bmN0aW9uKCl7aWYoeCl7 eC51bmRvKCl9fTt0aGlzLnJlZG89ZnVuY3Rpb24oKXtpZih4KXt4LnJlZG8oKX19 O3ZhciBEPWZ1bmN0aW9uKCl7cigpfTt0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtp Zih4KXt4LmRlc3Ryb3koKX1pZihxLnBhcmVudE5vZGUpe3EucGFyZW50Tm9kZS5y ZW1vdmVDaGlsZChxKX1pZih2KXt2LnN0eWxlLm1hcmdpblRvcD0iIn10b3AuY2xl YXJJbnRlcnZhbCh3KX07RCgpfTtrLlRleHRhcmVhU3RhdGU9ZnVuY3Rpb24oKXt2 YXIgcD10aGlzO3ZhciBxPWsucGFuZWxzLmlucHV0O3RoaXMuaW5pdD1mdW5jdGlv bigpe2lmKCFmLmlzVmlzaWJsZShxKSl7cmV0dXJufXRoaXMuc2V0SW5wdXRBcmVh U2VsZWN0aW9uU3RhcnRFbmQoKTt0aGlzLnNjcm9sbFRvcD1xLnNjcm9sbFRvcDtp ZighdGhpcy50ZXh0JiZxLnNlbGVjdGlvblN0YXJ0fHxxLnNlbGVjdGlvblN0YXJ0 PT09MCl7dGhpcy50ZXh0PXEudmFsdWV9fTt0aGlzLnNldElucHV0QXJlYVNlbGVj dGlvbj1mdW5jdGlvbigpe2lmKCFmLmlzVmlzaWJsZShxKSl7cmV0dXJufWlmKHEu c2VsZWN0aW9uU3RhcnQhPT11bmRlZmluZWQmJiFiLmlzT3BlcmEpe3EuZm9jdXMo KTtxLnNlbGVjdGlvblN0YXJ0PXAuc3RhcnQ7cS5zZWxlY3Rpb25FbmQ9cC5lbmQ7 cS5zY3JvbGxUb3A9cC5zY3JvbGxUb3B9ZWxzZXtpZihtLnNlbGVjdGlvbil7aWYo bS5hY3RpdmVFbGVtZW50JiZtLmFjdGl2ZUVsZW1lbnQhPT1xKXtyZXR1cm59cS5m b2N1cygpO3ZhciByPXEuY3JlYXRlVGV4dFJhbmdlKCk7ci5tb3ZlU3RhcnQoImNo YXJhY3RlciIsLXEudmFsdWUubGVuZ3RoKTtyLm1vdmVFbmQoImNoYXJhY3RlciIs LXEudmFsdWUubGVuZ3RoKTtyLm1vdmVFbmQoImNoYXJhY3RlciIscC5lbmQpO3Iu bW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLHAuc3RhcnQpO3Iuc2VsZWN0KCl9fX07dGhp cy5zZXRJbnB1dEFyZWFTZWxlY3Rpb25TdGFydEVuZD1mdW5jdGlvbigpe2lmKHEu c2VsZWN0aW9uU3RhcnR8fHEuc2VsZWN0aW9uU3RhcnQ9PT0wKXtwLnN0YXJ0PXEu c2VsZWN0aW9uU3RhcnQ7cC5lbmQ9cS5zZWxlY3Rpb25FbmR9ZWxzZXtpZihtLnNl bGVjdGlvbil7cC50ZXh0PWYuZml4RW9sQ2hhcnMocS52YWx1ZSk7dmFyIHU7aWYo ay5pZVJldGFyZGVkQ2xpY2smJmsuaWVDYWNoZWRSYW5nZSl7dT1rLmllQ2FjaGVk UmFuZ2U7ay5pZVJldGFyZGVkQ2xpY2s9ZmFsc2V9ZWxzZXt1PW0uc2VsZWN0aW9u LmNyZWF0ZVJhbmdlKCl9dmFyIHY9Zi5maXhFb2xDaGFycyh1LnRleHQpO3ZhciB0 PSJceDA3Ijt2YXIgcz10K3YrdDt1LnRleHQ9czt2YXIgdz1mLmZpeEVvbENoYXJz KHEudmFsdWUpO3UubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLC1zLmxlbmd0aCk7dS50 ZXh0PXY7cC5zdGFydD13LmluZGV4T2YodCk7cC5lbmQ9dy5sYXN0SW5kZXhPZih0 KS10Lmxlbmd0aDt2YXIgcj1wLnRleHQubGVuZ3RoLWYuZml4RW9sQ2hhcnMocS52 YWx1ZSkubGVuZ3RoO2lmKHIpe3UubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLC12Lmxl bmd0aCk7d2hpbGUoci0tKXt2Kz0iXG4iO3AuZW5kKz0xfXUudGV4dD12fXRoaXMu c2V0SW5wdXRBcmVhU2VsZWN0aW9uKCl9fX07dGhpcy5yZXN0b3JlPWZ1bmN0aW9u KCl7aWYocC50ZXh0IT11bmRlZmluZWQmJnAudGV4dCE9cS52YWx1ZSl7cS52YWx1 ZT1wLnRleHR9dGhpcy5zZXRJbnB1dEFyZWFTZWxlY3Rpb24oKTtxLnNjcm9sbFRv cD1wLnNjcm9sbFRvcH07dGhpcy5nZXRDaHVua3M9ZnVuY3Rpb24oKXt2YXIgcj1u ZXcgay5DaHVua3MoKTtyLmJlZm9yZT1mLmZpeEVvbENoYXJzKHAudGV4dC5zdWJz dHJpbmcoMCxwLnN0YXJ0KSk7ci5zdGFydFRhZz0iIjtyLnNlbGVjdGlvbj1mLmZp eEVvbENoYXJzKHAudGV4dC5zdWJzdHJpbmcocC5zdGFydCxwLmVuZCkpO3IuZW5k VGFnPSIiO3IuYWZ0ZXI9Zi5maXhFb2xDaGFycyhwLnRleHQuc3Vic3RyaW5nKHAu ZW5kKSk7ci5zY3JvbGxUb3A9cC5zY3JvbGxUb3A7cmV0dXJuIHJ9O3RoaXMuc2V0 Q2h1bmtzPWZ1bmN0aW9uKHIpe3IuYmVmb3JlPXIuYmVmb3JlK3Iuc3RhcnRUYWc7 ci5hZnRlcj1yLmVuZFRhZytyLmFmdGVyO2lmKGIuaXNPcGVyYSl7ci5iZWZvcmU9 ci5iZWZvcmUucmVwbGFjZSgvXG4vZywiXHJcbiIpO3Iuc2VsZWN0aW9uPXIuc2Vs ZWN0aW9uLnJlcGxhY2UoL1xuL2csIlxyXG4iKTtyLmFmdGVyPXIuYWZ0ZXIucmVw bGFjZSgvXG4vZywiXHJcbiIpfXRoaXMuc3RhcnQ9ci5iZWZvcmUubGVuZ3RoO3Ro aXMuZW5kPXIuYmVmb3JlLmxlbmd0aCtyLnNlbGVjdGlvbi5sZW5ndGg7dGhpcy50 ZXh0PXIuYmVmb3JlK3Iuc2VsZWN0aW9uK3IuYWZ0ZXI7dGhpcy5zY3JvbGxUb3A9 ci5zY3JvbGxUb3B9O3RoaXMuaW5pdCgpfTtrLkNodW5rcz1mdW5jdGlvbigpe307 ay5DaHVua3MucHJvdG90eXBlLmZpbmRUYWdzPWZ1bmN0aW9uKHEscyl7dmFyIHA9 dGhpczt2YXIgcjtpZihxKXtyPWYuZXh0ZW5kUmVnRXhwKHEsIiIsIiQiKTt0aGlz LmJlZm9yZT10aGlzLmJlZm9yZS5yZXBsYWNlKHIsZnVuY3Rpb24odCl7cC5zdGFy dFRhZz1wLnN0YXJ0VGFnK3Q7cmV0dXJuIiJ9KTtyPWYuZXh0ZW5kUmVnRXhwKHEs Il4iLCIiKTt0aGlzLnNlbGVjdGlvbj10aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHIs ZnVuY3Rpb24odCl7cC5zdGFydFRhZz1wLnN0YXJ0VGFnK3Q7cmV0dXJuIiJ9KX1p ZihzKXtyPWYuZXh0ZW5kUmVnRXhwKHMsIiIsIiQiKTt0aGlzLnNlbGVjdGlvbj10 aGlzLnNlbGVjdGlvbi5yZXBsYWNlKHIsZnVuY3Rpb24odCl7cC5lbmRUYWc9dCtw LmVuZFRhZztyZXR1cm4iIn0pO3I9Zi5leHRlbmRSZWdFeHAocywiXiIsIiIpO3Ro aXMuYWZ0ZXI9dGhpcy5hZnRlci5yZXBsYWNlKHIsZnVuY3Rpb24odCl7cC5lbmRU YWc9dCtwLmVuZFRhZztyZXR1cm4iIn0pfX07ay5DaHVua3MucHJvdG90eXBlLnRy aW1XaGl0ZXNwYWNlPWZ1bmN0aW9uKHApe3RoaXMuc2VsZWN0aW9uPXRoaXMuc2Vs ZWN0aW9uLnJlcGxhY2UoL14oXHMqKS8sIiIpO2lmKCFwKXt0aGlzLmJlZm9yZSs9 bi4kMX10aGlzLnNlbGVjdGlvbj10aGlzLnNlbGVjdGlvbi5yZXBsYWNlKC8oXHMq KSQvLCIiKTtpZighcCl7dGhpcy5hZnRlcj1uLiQxK3RoaXMuYWZ0ZXJ9fTtrLkNo dW5rcy5wcm90b3R5cGUuc2tpcExpbmVzPWZ1bmN0aW9uKHIscSxwKXtpZihyPT09 dW5kZWZpbmVkKXtyPTF9aWYocT09PXVuZGVmaW5lZCl7cT0xfXIrKztxKys7dmFy IHM7dmFyIHQ7dGhpcy5zZWxlY3Rpb249dGhpcy5zZWxlY3Rpb24ucmVwbGFjZSgv KF5cbiopLywiIik7dGhpcy5zdGFydFRhZz10aGlzLnN0YXJ0VGFnK24uJDE7dGhp cy5zZWxlY3Rpb249dGhpcy5zZWxlY3Rpb24ucmVwbGFjZSgvKFxuKiQpLywiIik7 dGhpcy5lbmRUYWc9dGhpcy5lbmRUYWcrbi4kMTt0aGlzLnN0YXJ0VGFnPXRoaXMu c3RhcnRUYWcucmVwbGFjZSgvKF5cbiopLywiIik7dGhpcy5iZWZvcmU9dGhpcy5i ZWZvcmUrbi4kMTt0aGlzLmVuZFRhZz10aGlzLmVuZFRhZy5yZXBsYWNlKC8oXG4q JCkvLCIiKTt0aGlzLmFmdGVyPXRoaXMuYWZ0ZXIrbi4kMTtpZih0aGlzLmJlZm9y ZSl7cz10PSIiO3doaWxlKHItLSl7cys9Ilxcbj8iO3QrPSJcbiJ9aWYocCl7cz0i XFxuKiJ9dGhpcy5iZWZvcmU9dGhpcy5iZWZvcmUucmVwbGFjZShuZXcgbihzKyIk IiwiIiksdCl9aWYodGhpcy5hZnRlcil7cz10PSIiO3doaWxlKHEtLSl7cys9Ilxc bj8iO3QrPSJcbiJ9aWYocCl7cz0iXFxuKiJ9dGhpcy5hZnRlcj10aGlzLmFmdGVy LnJlcGxhY2UobmV3IG4ocywiIiksdCl9fTtlLnByZWZpeGVzPSIoPzpcXHN7NCx9 fFxccyo+fFxccyotXFxzK3xcXHMqXFxkK1xcLnw9fFxcK3wtfF98XFwqfCN8XFxz KlxcW1teXG5dXStcXF06KSI7ZS51bndyYXA9ZnVuY3Rpb24ocSl7dmFyIHA9bmV3 IG4oIihbXlxcbl0pXFxuKD8hKFxcbnwiK2UucHJlZml4ZXMrIikpIiwiZyIpO3Eu c2VsZWN0aW9uPXEuc2VsZWN0aW9uLnJlcGxhY2UocCwiJDEgJDIiKX07ZS53cmFw PWZ1bmN0aW9uKHEscCl7ZS51bndyYXAocSk7dmFyIHI9bmV3IG4oIiguezEsIitw KyJ9KSggK3wkXFxuPykiLCJnbSIpO3Euc2VsZWN0aW9uPXEuc2VsZWN0aW9uLnJl cGxhY2UocixmdW5jdGlvbihzLHQpe2lmKG5ldyBuKCJeIitlLnByZWZpeGVzLCIi KS50ZXN0KHMpKXtyZXR1cm4gc31yZXR1cm4gdCsiXG4ifSk7cS5zZWxlY3Rpb249 cS5zZWxlY3Rpb24ucmVwbGFjZSgvXHMrJC8sIiIpfTtlLmRvQm9sZD1mdW5jdGlv bihwLHEpe3JldHVybiBlLmRvQm9ySShwLHEsMiwic3Ryb25nIHRleHQiKX07ZS5k b0l0YWxpYz1mdW5jdGlvbihwLHEpe3JldHVybiBlLmRvQm9ySShwLHEsMSwiZW1w aGFzaXplZCB0ZXh0Iil9O2UuZG9Cb3JJPWZ1bmN0aW9uKHYsdCx1LHApe3YudHJp bVdoaXRlc3BhY2UoKTt2LnNlbGVjdGlvbj12LnNlbGVjdGlvbi5yZXBsYWNlKC9c bnsyLH0vZywiXG4iKTt2LmJlZm9yZS5zZWFyY2goLyhcKiokKS8pO3ZhciBzPW4u JDE7di5hZnRlci5zZWFyY2goLyheXCoqKS8pO3ZhciBxPW4uJDE7dmFyIHc9TWF0 aC5taW4ocy5sZW5ndGgscS5sZW5ndGgpO2lmKCh3Pj11KSYmKHchPTJ8fHUhPTEp KXt2LmJlZm9yZT12LmJlZm9yZS5yZXBsYWNlKG4oIlsqXXsiK3UrIn0kIiwiIiks IiIpO3YuYWZ0ZXI9di5hZnRlci5yZXBsYWNlKG4oIl5bKl17Iit1KyJ9IiwiIiks IiIpfWVsc2V7aWYoIXYuc2VsZWN0aW9uJiZxKXt2LmFmdGVyPXYuYWZ0ZXIucmVw bGFjZSgvXihbKl9dKikvLCIiKTt2LmJlZm9yZT12LmJlZm9yZS5yZXBsYWNlKC8o XHM/KSQvLCIiKTt2YXIgcj1uLiQxO3YuYmVmb3JlPXYuYmVmb3JlK3Ercn1lbHNl e2lmKCF2LnNlbGVjdGlvbiYmIXEpe3Yuc2VsZWN0aW9uPXB9dmFyIHg9dTw9MT8i KiI6IioqIjt2LmJlZm9yZT12LmJlZm9yZSt4O3YuYWZ0ZXI9eCt2LmFmdGVyfX1y ZXR1cm59O2Uuc3RyaXBMaW5rRGVmcz1mdW5jdGlvbihxLHApe3E9cS5yZXBsYWNl KC9eWyBdezAsM31cWyhcZCspXF06WyBcdF0qXG4/WyBcdF0qPD8oXFMrPyk+P1sg XHRdKlxuP1sgXHRdKig/OihcbiopWyIoXSguKz8pWyIpXVsgXHRdKik/KD86XG4r fCQpL2dtLGZ1bmN0aW9uKHUsdixyLHMsdCl7cFt2XT11LnJlcGxhY2UoL1xzKiQv LCIiKTtpZihzKXtwW3ZdPXUucmVwbGFjZSgvWyIoXSguKz8pWyIpXSQvLCIiKTty ZXR1cm4gcyt0fXJldHVybiIifSk7cmV0dXJuIHF9O2UuYWRkTGlua0RlZj1mdW5j dGlvbih3LHMpe3ZhciBwPTA7dmFyIHI9e307dy5iZWZvcmU9ZS5zdHJpcExpbmtE ZWZzKHcuYmVmb3JlLHIpO3cuc2VsZWN0aW9uPWUuc3RyaXBMaW5rRGVmcyh3LnNl bGVjdGlvbixyKTt3LmFmdGVyPWUuc3RyaXBMaW5rRGVmcyh3LmFmdGVyLHIpO3Zh ciBxPSIiO3ZhciB2PS8oXFsoPzpcW1teXF1dKlxdfFteXFtcXV0pKlxdWyBdPyg/ OlxuWyBdKik/XFspKFxkKykoXF0pL2c7dmFyIHU9ZnVuY3Rpb24oeSl7cCsrO3k9 eS5yZXBsYWNlKC9eWyBdezAsM31cWyhcZCspXF06LywiICBbIitwKyJdOiIpO3Er PSJcbiIreX07dmFyIHQ9ZnVuY3Rpb24oeixBLEIseSl7aWYocltCXSl7dShyW0Jd KTtyZXR1cm4gQStwK3l9cmV0dXJuIHp9O3cuYmVmb3JlPXcuYmVmb3JlLnJlcGxh Y2Uodix0KTtpZihzKXt1KHMpfWVsc2V7dy5zZWxlY3Rpb249dy5zZWxlY3Rpb24u cmVwbGFjZSh2LHQpfXZhciB4PXA7dy5hZnRlcj13LmFmdGVyLnJlcGxhY2Uodix0 KTtpZih3LmFmdGVyKXt3LmFmdGVyPXcuYWZ0ZXIucmVwbGFjZSgvXG4qJC8sIiIp fWlmKCF3LmFmdGVyKXt3LnNlbGVjdGlvbj13LnNlbGVjdGlvbi5yZXBsYWNlKC9c biokLywiIil9dy5hZnRlcis9IlxuXG4iK3E7cmV0dXJuIHh9O2UuZG9MaW5rT3JJ bWFnZT1mdW5jdGlvbihwLHEscyl7cC50cmltV2hpdGVzcGFjZSgpO3AuZmluZFRh Z3MoL1xzKiE/XFsvLC9cXVsgXT8oPzpcblsgXSopPyhcWy4qP1xdKT8vKTtpZihw LmVuZFRhZy5sZW5ndGg+MSl7cC5zdGFydFRhZz1wLnN0YXJ0VGFnLnJlcGxhY2Uo LyE/XFsvLCIiKTtwLmVuZFRhZz0iIjtlLmFkZExpbmtEZWYocCxudWxsKX1lbHNl e2lmKC9cblxuLy50ZXN0KHAuc2VsZWN0aW9uKSl7ZS5hZGRMaW5rRGVmKHAsbnVs bCk7cmV0dXJufXZhciByPWZ1bmN0aW9uKHYpe2lmKHYhPT1udWxsKXtwLnN0YXJ0 VGFnPXAuZW5kVGFnPSIiO3ZhciB1PSIgWzk5OV06ICIrdjt2YXIgdD1lLmFkZExp bmtEZWYocCx1KTtwLnN0YXJ0VGFnPXM/IiFbIjoiWyI7cC5lbmRUYWc9Il1bIit0 KyJdIjtpZighcC5zZWxlY3Rpb24pe2lmKHMpe3Auc2VsZWN0aW9uPSJhbHQgdGV4 dCJ9ZWxzZXtwLnNlbGVjdGlvbj0ibGluayB0ZXh0In19fXEoKX07aWYocyl7Zi5w cm9tcHQoaSxkLHIpfWVsc2V7Zi5wcm9tcHQoaixvLHIpfXJldHVybiB0cnVlfX07 Zi5tYWtlQVBJPWZ1bmN0aW9uKCl7ay53bWQ9e307ay53bWQuZWRpdG9yPWsuZWRp dG9yO2sud21kLnByZXZpZXdNYW5hZ2VyPWsucHJldmlld01hbmFnZXJ9O2Yuc3Rh cnRFZGl0b3I9ZnVuY3Rpb24oKXt2YXIgcjt2YXIgcTtrLnBhbmVscz1uZXcgay5Q YW5lbENvbGxlY3Rpb24oKTtxPW5ldyBrLnByZXZpZXdNYW5hZ2VyKCk7dmFyIHA9 cS5yZWZyZXNoO3I9bmV3IGsuZWRpdG9yKHApO3EucmVmcmVzaCh0cnVlKX07ay5w cmV2aWV3TWFuYWdlcj1mdW5jdGlvbigpe3ZhciByPXRoaXM7dmFyIEo7dmFyIHE7 dmFyIHo7dmFyIHk7dmFyIEc7dmFyIEE7dmFyIHM9MzAwMDt2YXIgQj0iZGVsYXll ZCI7dmFyIHc9ZnVuY3Rpb24oTSxOKXtmLmFkZEV2ZW50KE0sImlucHV0IixOKTtN Lm9ucGFzdGU9TjtNLm9uZHJvcD1OO2YuYWRkRXZlbnQoTSwia2V5cHJlc3MiLE4p O2YuYWRkRXZlbnQoTSwia2V5ZG93biIsTil9O3ZhciBGPWZ1bmN0aW9uKCl7dmFy IE09MDtpZih0b3AuaW5uZXJIZWlnaHQpe009dG9wLnBhZ2VZT2Zmc2V0fWVsc2V7 aWYobS5kb2N1bWVudEVsZW1lbnQmJm0uZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRv cCl7TT1tLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B9ZWxzZXtpZihtLmJvZHkp e009bS5ib2R5LnNjcm9sbFRvcH19fXJldHVybiBNfTt2YXIgeD1mdW5jdGlvbigp e2lmKCFrLnBhbmVscy5wcmV2aWV3JiYhay5wYW5lbHMub3V0cHV0KXtyZXR1cm59 dmFyIE89ay5wYW5lbHMuaW5wdXQudmFsdWU7aWYoTyYmTz09Ryl7cmV0dXJufWVs c2V7Rz1PfXZhciBOPW5ldyBEYXRlKCkuZ2V0VGltZSgpO2lmKCFKJiZrLnNob3dk b3duKXtKPW5ldyBrLnNob3dkb3duLmNvbnZlcnRlcigpfWlmKEope089Si5tYWtl SHRtbChPKX12YXIgTT1uZXcgRGF0ZSgpLmdldFRpbWUoKTt5PU0tTjtwKE8pO0E9 T307dmFyIEk9ZnVuY3Rpb24oKXtpZih6KXt0b3AuY2xlYXJUaW1lb3V0KHopO3o9 dW5kZWZpbmVkfWlmKEIhPT0ibWFudWFsIil7dmFyIE09MDtpZihCPT09ImRlbGF5 ZWQiKXtNPXl9aWYoTT5zKXtNPXN9ej10b3Auc2V0VGltZW91dCh4LE0pfX07dmFy IHY9ZnVuY3Rpb24oTSl7aWYoTS5zY3JvbGxIZWlnaHQ8PU0uY2xpZW50SGVpZ2h0 KXtyZXR1cm4gMX1yZXR1cm4gTS5zY3JvbGxUb3AvKE0uc2Nyb2xsSGVpZ2h0LU0u Y2xpZW50SGVpZ2h0KX07dmFyIEw9ZnVuY3Rpb24oKXtpZihrLnBhbmVscy5wcmV2 aWV3KXtrLnBhbmVscy5wcmV2aWV3LnNjcm9sbFRvcD0oay5wYW5lbHMucHJldmll dy5zY3JvbGxIZWlnaHQtay5wYW5lbHMucHJldmlldy5jbGllbnRIZWlnaHQpKnYo ay5wYW5lbHMucHJldmlldyl9aWYoay5wYW5lbHMub3V0cHV0KXtrLnBhbmVscy5v dXRwdXQuc2Nyb2xsVG9wPShrLnBhbmVscy5vdXRwdXQuc2Nyb2xsSGVpZ2h0LWsu cGFuZWxzLm91dHB1dC5jbGllbnRIZWlnaHQpKnYoay5wYW5lbHMub3V0cHV0KX19 O3RoaXMucmVmcmVzaD1mdW5jdGlvbihNKXtpZihNKXtHPSIiO3goKX1lbHNle0ko KX19O3RoaXMucHJvY2Vzc2luZ1RpbWU9ZnVuY3Rpb24oKXtyZXR1cm4geX07dGhp cy5vdXRwdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gQX07dmFyIEM9dHJ1ZTt2YXIgdD1m dW5jdGlvbihNKXtyZXR1cm4gTS5yZXBsYWNlKC88W148Pl0qPj8vZ2ksRCl9O3Zh ciBLPS9eKDxcLz8oYnxibG9ja3F1b3RlfGNvZGV8ZGVsfGRkfGRsfGR0fGVtfGgx fGgyfGgzfGl8a2JkfGxpfG9sfHB8cHJlfHN8c3VwfHN1YnxzdHJvbmd8c3RyaWtl fHVsKT58PChicnxocilccz9cLz8+KSQvaTt2YXIgRT0vXig8YVxzaHJlZj0iKFwj XGQrfChodHRwcz98ZnRwKTpcL1wvWy1BLVphLXowLTkrJkAjXC8lPz1+X3whOiwu O1woXCldKykiKFxzdGl0bGU9IlteIjw+XSsiKT9ccz8+fDxcL2E+KSQvaTt2YXIg dT0vXig8aW1nXHNzcmM9Imh0dHBzPzooXC9cL1stQS1aYS16MC05KyZAI1wvJT89 fl98ITosLjtcKFwpXSspIihcc3dpZHRoPSJcZHsxLDN9Iik/KFxzaGVpZ2h0PSJc ZHsxLDN9Iik/KFxzYWx0PSJbXiI8Pl0qIik/KFxzdGl0bGU9IlteIjw+XSoiKT9c cz9cLz8+KSQvaTtmdW5jdGlvbiBEKE0pe2lmKE0ubWF0Y2goSyl8fE0ubWF0Y2go RSl8fE0ubWF0Y2godSkpe3JldHVybiBNfWVsc2V7cmV0dXJuIiJ9fXZhciBwPWZ1 bmN0aW9uKFApe3ZhciBNPWcuZ2V0VG9wKGsucGFuZWxzLmlucHV0KS1GKCk7aWYo ay5wYW5lbHMub3V0cHV0KXtpZihrLnBhbmVscy5vdXRwdXQudmFsdWUhPT11bmRl ZmluZWQpe2sucGFuZWxzLm91dHB1dC52YWx1ZT1QO2sucGFuZWxzLm91dHB1dC5y ZWFkT25seT10cnVlfWVsc2V7dmFyIE89UC5yZXBsYWNlKC8mL2csIiZhbXA7Iiku cmVwbGFjZSgvPC9nLCImbHQ7Iik7ay5wYW5lbHMub3V0cHV0LmlubmVySFRNTD0i PHByZT48Y29kZT4iK08rIjwvY29kZT48L3ByZT4ifX1pZihrLnBhbmVscy5wcmV2 aWV3KXtrLnBhbmVscy5wcmV2aWV3LmlubmVySFRNTD10KFApfUwoKTtpZihDKXtD PWZhbHNlO3JldHVybn12YXIgTj1nLmdldFRvcChrLnBhbmVscy5pbnB1dCktRigp O2lmKGIuaXNJRSl7dG9wLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0b3Auc2Nyb2xs QnkoMCxOLU0pfSwwKX1lbHNle3RvcC5zY3JvbGxCeSgwLE4tTSl9fTt2YXIgSD1m dW5jdGlvbigpe3coay5wYW5lbHMuaW5wdXQsSSk7eCgpO2lmKGsucGFuZWxzLnBy ZXZpZXcpe2sucGFuZWxzLnByZXZpZXcuc2Nyb2xsVG9wPTB9aWYoay5wYW5lbHMu b3V0cHV0KXtrLnBhbmVscy5vdXRwdXQuc2Nyb2xsVG9wPTB9fTt0aGlzLmRlc3Ry b3k9ZnVuY3Rpb24oKXtpZihxKXtxLmRlc3Ryb3koKX19O0goKX07ZS5kb0F1dG9p bmRlbnQ9ZnVuY3Rpb24ocCxxKXtwLmJlZm9yZT1wLmJlZm9yZS5yZXBsYWNlKC8o XG58XilbIF17MCwzfShbKistXXxcZCtbLl0pWyBcdF0qXG4kLywiXG5cbiIpO3Au YmVmb3JlPXAuYmVmb3JlLnJlcGxhY2UoLyhcbnxeKVsgXXswLDN9PlsgXHRdKlxu JC8sIlxuXG4iKTtwLmJlZm9yZT1wLmJlZm9yZS5yZXBsYWNlKC8oXG58XilbIFx0 XStcbiQvLCJcblxuIik7aWYoLyhcbnxeKVsgXXswLDN9KFsqKy1dfFxkK1suXSlb IFx0XSsuKlxuJC8udGVzdChwLmJlZm9yZSkpe2lmKGUuZG9MaXN0KXtlLmRvTGlz dChwKX19aWYoLyhcbnxeKVsgXXswLDN9PlsgXHRdKy4qXG4kLy50ZXN0KHAuYmVm b3JlKSl7aWYoZS5kb0Jsb2NrcXVvdGUpe2UuZG9CbG9ja3F1b3RlKHApfX1pZigv KFxufF4pKFx0fFsgXXs0LH0pLipcbiQvLnRlc3QocC5iZWZvcmUpKXtpZihlLmRv Q29kZSl7ZS5kb0NvZGUocCl9fX07ZS5kb0Jsb2NrcXVvdGU9ZnVuY3Rpb24ocCxx KXtwLnNlbGVjdGlvbj1wLnNlbGVjdGlvbi5yZXBsYWNlKC9eKFxuKikoW15ccl0r PykoXG4qKSQvLGZ1bmN0aW9uKHYsdSx0LHMpe3AuYmVmb3JlKz11O3AuYWZ0ZXI9 cytwLmFmdGVyO3JldHVybiB0fSk7cC5iZWZvcmU9cC5iZWZvcmUucmVwbGFjZSgv KD5bIFx0XSopJC8sZnVuY3Rpb24odCxzKXtwLnNlbGVjdGlvbj1zK3Auc2VsZWN0 aW9uO3JldHVybiIifSk7cC5zZWxlY3Rpb249cC5zZWxlY3Rpb24ucmVwbGFjZSgv Xihcc3w+KSskLywiIik7cC5zZWxlY3Rpb249cC5zZWxlY3Rpb258fCJCbG9ja3F1 b3RlIjtpZihwLmJlZm9yZSl7cC5iZWZvcmU9cC5iZWZvcmUucmVwbGFjZSgvXG4/ JC8sIlxuIil9aWYocC5hZnRlcil7cC5hZnRlcj1wLmFmdGVyLnJlcGxhY2UoL15c bj8vLCJcbiIpfXAuYmVmb3JlPXAuYmVmb3JlLnJlcGxhY2UoLygoKFxufF4pKFxu WyBcdF0qKSo+KC4rXG4pKi4qKSsoXG5bIFx0XSopKiQpLyxmdW5jdGlvbihzKXtw LnN0YXJ0VGFnPXM7cmV0dXJuIiJ9KTtwLmFmdGVyPXAuYWZ0ZXIucmVwbGFjZSgv XigoKFxufF4pKFxuWyBcdF0qKSo+KC4rXG4pKi4qKSsoXG5bIFx0XSopKikvLGZ1 bmN0aW9uKHMpe3AuZW5kVGFnPXM7cmV0dXJuIiJ9KTt2YXIgcj1mdW5jdGlvbih0 KXt2YXIgcz10PyI+ICI6IiI7aWYocC5zdGFydFRhZyl7cC5zdGFydFRhZz1wLnN0 YXJ0VGFnLnJlcGxhY2UoL1xuKCg+fFxzKSopXG4kLyxmdW5jdGlvbih2LHUpe3Jl dHVybiJcbiIrdS5yZXBsYWNlKC9eWyBdezAsM30+P1sgXHRdKiQvZ20scykrIlxu In0pfWlmKHAuZW5kVGFnKXtwLmVuZFRhZz1wLmVuZFRhZy5yZXBsYWNlKC9eXG4o KD58XHMpKilcbi8sZnVuY3Rpb24odix1KXtyZXR1cm4iXG4iK3UucmVwbGFjZSgv XlsgXXswLDN9Pj9bIFx0XSokL2dtLHMpKyJcbiJ9KX19O2lmKC9eKD8hWyBdezAs M30+KS9tLnRlc3QocC5zZWxlY3Rpb24pKXtlLndyYXAocCxrLndtZF9lbnYubGlu ZUxlbmd0aC0yKTtwLnNlbGVjdGlvbj1wLnNlbGVjdGlvbi5yZXBsYWNlKC9eL2dt LCI+ICIpO3IodHJ1ZSk7cC5za2lwTGluZXMoKX1lbHNle3Auc2VsZWN0aW9uPXAu c2VsZWN0aW9uLnJlcGxhY2UoL15bIF17MCwzfT4gPy9nbSwiIik7ZS51bndyYXAo cCk7cihmYWxzZSk7aWYoIS9eKFxufF4pWyBdezAsM30+Ly50ZXN0KHAuc2VsZWN0 aW9uKSYmcC5zdGFydFRhZyl7cC5zdGFydFRhZz1wLnN0YXJ0VGFnLnJlcGxhY2Uo L1xuezAsMn0kLywiXG5cbiIpfWlmKCEvKFxufF4pWyBdezAsM30+LiokLy50ZXN0 KHAuc2VsZWN0aW9uKSYmcC5lbmRUYWcpe3AuZW5kVGFnPXAuZW5kVGFnLnJlcGxh Y2UoL15cbnswLDJ9LywiXG5cbiIpfX1pZighL1xuLy50ZXN0KHAuc2VsZWN0aW9u KSl7cC5zZWxlY3Rpb249cC5zZWxlY3Rpb24ucmVwbGFjZSgvXig+ICopLyxmdW5j dGlvbihzLHQpe3Auc3RhcnRUYWcrPXQ7cmV0dXJuIiJ9KX19O2UuZG9Db2RlPWZ1 bmN0aW9uKHAscSl7dmFyIHM9L1xTWyBdKiQvLnRlc3QocC5iZWZvcmUpO3ZhciB1 PS9eWyBdKlxTLy50ZXN0KHAuYWZ0ZXIpO2lmKCghdSYmIXMpfHwvXG4vLnRlc3Qo cC5zZWxlY3Rpb24pKXtwLmJlZm9yZT1wLmJlZm9yZS5yZXBsYWNlKC9bIF17NH0k LyxmdW5jdGlvbih2KXtwLnNlbGVjdGlvbj12K3Auc2VsZWN0aW9uO3JldHVybiIi fSk7dmFyIHQ9MTt2YXIgcj0xO2lmKC9cbihcdHxbIF17NCx9KS4qXG4kLy50ZXN0 KHAuYmVmb3JlKSl7dD0wfWlmKC9eXG4oXHR8WyBdezQsfSkvLnRlc3QocC5hZnRl cikpe3I9MH1wLnNraXBMaW5lcyh0LHIpO2lmKCFwLnNlbGVjdGlvbil7cC5zdGFy dFRhZz0iICAgICI7cC5zZWxlY3Rpb249ImVudGVyIGNvZGUgaGVyZSJ9ZWxzZXtp ZigvXlsgXXswLDN9XFMvbS50ZXN0KHAuc2VsZWN0aW9uKSl7cC5zZWxlY3Rpb249 cC5zZWxlY3Rpb24ucmVwbGFjZSgvXi9nbSwiICAgICIpfWVsc2V7cC5zZWxlY3Rp b249cC5zZWxlY3Rpb24ucmVwbGFjZSgvXlsgXXs0fS9nbSwiIil9fX1lbHNle3Au dHJpbVdoaXRlc3BhY2UoKTtwLmZpbmRUYWdzKC9gLywvYC8pO2lmKCFwLnN0YXJ0 VGFnJiYhcC5lbmRUYWcpe3Auc3RhcnRUYWc9cC5lbmRUYWc9ImAiO2lmKCFwLnNl bGVjdGlvbil7cC5zZWxlY3Rpb249ImVudGVyIGNvZGUgaGVyZSJ9fWVsc2V7aWYo cC5lbmRUYWcmJiFwLnN0YXJ0VGFnKXtwLmJlZm9yZSs9cC5lbmRUYWc7cC5lbmRU YWc9IiJ9ZWxzZXtwLnN0YXJ0VGFnPXAuZW5kVGFnPSIifX19fTtlLmRvTGlzdD1m dW5jdGlvbihBLHQscyl7dmFyIEM9LyhcbnxeKSgoWyBdezAsM30oWyorLV18XGQr Wy5dKVsgXHRdKy4qKShcbi4rfFxuezIsfShbKistXS4qfFxkK1suXSlbIFx0XSsu KnxcbnsyLH1bIFx0XStcUy4qKSopXG4qJC87dmFyIEI9L15cbiooKFsgXXswLDN9 KFsqKy1dfFxkK1suXSlbIFx0XSsuKikoXG4uK3xcbnsyLH0oWyorLV0uKnxcZCtb Ll0pWyBcdF0rLip8XG57Mix9WyBcdF0rXFMuKikqKVxuKi87dmFyIHA9Ii0iO3Zh ciB4PTE7dmFyIHY9ZnVuY3Rpb24oKXt2YXIgRDtpZihzKXtEPSIgIit4KyIuICI7 eCsrfWVsc2V7RD0iICIrcCsiICJ9cmV0dXJuIER9O3ZhciB3PWZ1bmN0aW9uKEQp e2lmKHM9PT11bmRlZmluZWQpe3M9L15ccypcZC8udGVzdChEKX1EPUQucmVwbGFj ZSgvXlsgXXswLDN9KFsqKy1dfFxkK1suXSlccy9nbSxmdW5jdGlvbihFKXtyZXR1 cm4gdigpfSk7cmV0dXJuIER9O0EuZmluZFRhZ3MoLyhcbnxeKSpbIF17MCwzfShb KistXXxcZCtbLl0pXHMrLyxudWxsKTtpZihBLmJlZm9yZSYmIS9cbiQvLnRlc3Qo QS5iZWZvcmUpJiYhL15cbi8udGVzdChBLnN0YXJ0VGFnKSl7QS5iZWZvcmUrPUEu c3RhcnRUYWc7QS5zdGFydFRhZz0iIn1pZihBLnN0YXJ0VGFnKXt2YXIgcj0vXGQr Wy5dLy50ZXN0KEEuc3RhcnRUYWcpO0Euc3RhcnRUYWc9IiI7QS5zZWxlY3Rpb249 QS5zZWxlY3Rpb24ucmVwbGFjZSgvXG5bIF17NH0vZywiXG4iKTtlLnVud3JhcChB KTtBLnNraXBMaW5lcygpO2lmKHIpe0EuYWZ0ZXI9QS5hZnRlci5yZXBsYWNlKEIs dyl9aWYocz09cil7cmV0dXJufX12YXIgdT0xO0EuYmVmb3JlPUEuYmVmb3JlLnJl cGxhY2UoQyxmdW5jdGlvbihEKXtpZigvXlxzKihbKistXSkvLnRlc3QoRCkpe3A9 bi4kMX11PS9bXlxuXVxuXG5bXlxuXS8udGVzdChEKT8xOjA7cmV0dXJuIHcoRCl9 KTtpZighQS5zZWxlY3Rpb24pe0Euc2VsZWN0aW9uPSJMaXN0IGl0ZW0ifXZhciB5 PXYoKTt2YXIgcT0xO0EuYWZ0ZXI9QS5hZnRlci5yZXBsYWNlKEIsZnVuY3Rpb24o RCl7cT0vW15cbl1cblxuW15cbl0vLnRlc3QoRCk/MTowO3JldHVybiB3KEQpfSk7 QS50cmltV2hpdGVzcGFjZSh0cnVlKTtBLnNraXBMaW5lcyh1LHEsdHJ1ZSk7QS5z dGFydFRhZz15O3ZhciB6PXkucmVwbGFjZSgvLi9nLCIgIik7ZS53cmFwKEEsay53 bWRfZW52LmxpbmVMZW5ndGgtei5sZW5ndGgpO0Euc2VsZWN0aW9uPUEuc2VsZWN0 aW9uLnJlcGxhY2UoL1xuL2csIlxuIit6KX07ZS5kb0hlYWRpbmc9ZnVuY3Rpb24o cixzKXtyLnNlbGVjdGlvbj1yLnNlbGVjdGlvbi5yZXBsYWNlKC9ccysvZywiICIp O3Iuc2VsZWN0aW9uPXIuc2VsZWN0aW9uLnJlcGxhY2UoLyheXHMrfFxzKyQpL2cs IiIpO2lmKCFyLnNlbGVjdGlvbil7ci5zdGFydFRhZz0iIyMgIjtyLnNlbGVjdGlv bj0iSGVhZGluZyI7ci5lbmRUYWc9IiAjIyI7cmV0dXJufXZhciB0PTA7ci5maW5k VGFncygvIytbIF0qLywvWyBdKiMrLyk7aWYoLyMrLy50ZXN0KHIuc3RhcnRUYWcp KXt0PW4ubGFzdE1hdGNoLmxlbmd0aH1yLnN0YXJ0VGFnPXIuZW5kVGFnPSIiO3Iu ZmluZFRhZ3MobnVsbCwvXHM/KC0rfD0rKS8pO2lmKC89Ky8udGVzdChyLmVuZFRh Zykpe3Q9MX1pZigvLSsvLnRlc3Qoci5lbmRUYWcpKXt0PTJ9ci5zdGFydFRhZz1y LmVuZFRhZz0iIjtyLnNraXBMaW5lcygxLDEpO3ZhciB1PXQ9PTA/Mjp0LTE7aWYo dT4wKXt2YXIgcT11Pj0yPyItIjoiPSI7dmFyIHA9ci5zZWxlY3Rpb24ubGVuZ3Ro O2lmKHA+ay53bWRfZW52LmxpbmVMZW5ndGgpe3A9ay53bWRfZW52LmxpbmVMZW5n dGh9ci5lbmRUYWc9IlxuIjt3aGlsZShwLS0pe3IuZW5kVGFnKz1xfX19O2UuZG9I b3Jpem9udGFsUnVsZT1mdW5jdGlvbihwLHEpe3Auc3RhcnRUYWc9Ii0tLS0tLS0t LS1cbiI7cC5zZWxlY3Rpb249IiI7cC5za2lwTGluZXMoMiwxLHRydWUpfX07 ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=feed-icon-small.png Content-Type: image/png; name=feed-icon-small.png Content-Location: http://sstatic.net/so/Img/feed-icon-small.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABGdBTUEAAK/INwWK 6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJDSURBVHja jJJNSBRhGMd/887MzrQxRSLbFuYhoUhEKsMo8paHUKFLdBDrUIdunvq4RdClOq8H b0FBSAVCUhFR1CGD/MrIJYqs1kLUXd382N356plZFOrUO/MMz/vO83+e93n+f+1z F+kQBoOQNLBJg0CTj7z/rvWjGbEOIwKp9O7WkhtQc/wMWrlIkP8Kc1lMS8eyFHpk po5SgWCCVO7Z5JARhuz1Qg29fh87u6/9VWL1/SPc4Qy6n8c0FehiXin6dcCQaylD MhqGz8ydS2hKkmxNkWxowWnuBLHK6G2C8X6UJkBlxUmNqLYyNbzF74QLDrgFgh9L LE0NsPKxjW1Hz2EdPIubsOFdH2HgbwAlC4S19dT13o+3pS+vcSfvUcq9YnbwA6mu W9hNpym/FWBxfh0CZkKGkPBZeJFhcWQAu6EN52QGZ/8prEKW+cdXq0039UiLXhUY zdjebOJQQI30UXp6mZn+Dtam32Afu0iyrgUvN0r+ZQbr8HncSpUVJfwRhBWC0hyG V8CxXBL5SWYf9sYBidYLIG2V87/ifVjTWAX6AlxeK2C0X8e58hOr/Qa2XJ3iLMWx B1h72tHs7bgryzHAN2o2gJorTrLxRHVazd0o4TXiyV2Yjs90uzauGvvppmqcLjwm bZ3V7BO2HOrBnbgrQRqWUgTZ5+Snx4WeKfzCCrmb3axODKNH+vvUyWjqyK4DiKQ0 eXSpFsgVvLJQWpH+xSpr4otg/HI0TR/t97cxTUS+QxIMRTLi/9ZYJPI/AgwAoc3W 7ZrqR2IAAAAASUVORK5CYII= ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=footer-cc-wiki-peak-internet.png Content-Type: image/png; name=footer-cc-wiki-peak-internet.png Content-Location: http://sstatic.net/so/Img/footer-cc-wiki-peak-internet.png Content-Transfer-Encoding: Base64 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 ------------x4kCeh5XB5nK2Oy68L6x5d Content-Disposition: inline; filename=quant.js Content-Type: application/x-javascript; name=quant.js Content-Location: http://edge.quantserve.com/quant.js Content-Transfer-Encoding: Base64 Ly8KLy8gRm9yIGNvcnJlY3QgbWVhc3VyZW1lbnQsIERPIE5PVCBIT1NUIFRISVMg RlJPTSBBTk9USEVSIFNFUlZFUgovLwpmdW5jdGlvbiBfcWNkc3QoKXtpZihfcWN0 em9mZigwKSE9X3FjdHpvZmYoNikpcmV0dXJuIDE7cmV0dXJuIDA7fQpmdW5jdGlv biBfcWN0em9mZihtKXsKdmFyIGQxPW5ldyBEYXRlKDIwMDAsbSwxLDAsMCwwLDAp Owp2YXIgdD1kMS50b0dNVFN0cmluZygpOwp2YXIgZDM9bmV3IERhdGUodC5zdWJz dHJpbmcoMCx0Lmxhc3RJbmRleE9mKCIgIiktMSkpOwpyZXR1cm4gZDEtZDM7Cn0K ZnVuY3Rpb24gX3FjZXVjKHMpewppZih0eXBlb2YoZW5jb2RlVVJJQ29tcG9uZW50 KT09J2Z1bmN0aW9uJyl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzKTt9CmVs c2V7cmV0dXJuIGVzY2FwZShzKTt9Cn0KZnVuY3Rpb24gX3Fjcm5kKCl7cmV0dXJu IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ3KTt9CmZ1bmN0aW9u IF9xY2djKG4pewogdmFyIHY9Jyc7CiB2YXIgYz1kb2N1bWVudC5jb29raWU7aWYo IWMpcmV0dXJuIHY7CiB2YXIgaT1jLmluZGV4T2YobisiPSIpOwogdmFyIGxlbj1p K24ubGVuZ3RoKzE7CiBpZihpPi0xKXsKICB2YXIgZW5kPWMuaW5kZXhPZigiOyIs IGxlbik7CiAgaWYoZW5kPDApZW5kPWMubGVuZ3RoOwogIHY9Yy5zdWJzdHJpbmco bGVuLGVuZCk7CiB9CiByZXR1cm4gdjsKfQpmdW5jdGlvbiBfcWNkb21haW4oKXsK IHZhciBkPWRvY3VtZW50LmRvbWFpbjsKIGlmKGQuc3Vic3RyaW5nKDAsNCk9PSJ3 d3cuIilkPWQuc3Vic3RyaW5nKDQsZC5sZW5ndGgpOwogdmFyIGE9ZC5zcGxpdCgi LiIpO3ZhciBsZW49YS5sZW5ndGg7CiBpZihsZW48MylyZXR1cm4gZDsKIHZhciBl PWFbbGVuLTFdOwogaWYoZS5sZW5ndGg8MylyZXR1cm4gZDsKIGQ9YVtsZW4tMl0r Ii4iK2FbbGVuLTFdOwogcmV0dXJuIGQ7Cn0KZnVuY3Rpb24gX3Fjc2MobSl7CiB2 YXIgcz0iIjt2YXIgZD1fcWNkb21haW4oKTsKIGlmIChtPT0iYWQifHxkPT0iZG91 YmxlY2xpY2submV0Inx8ZD09ImF0ZG10LmNvbSJ8fGQ9PSJ5aWVsZG1hbmFnZXIu Y29tInx8ZD09ImZpbXNlcnZlLmNvbSJ8fAogIGQ9PSJ0cmliYWxmdXNpb24uY29t Inx8ZD09InRyYWZmaWNtcC5jb20iKXtzKz0iO2ZwYW49dTtmcGE9IjtyZXR1cm4g czt9CiB2YXIgdT1kb2N1bWVudDt2YXIgYT1fcWNnYygiX19xY2EiKTsKIGlmKGEu bGVuZ3RoPjApe3MrPSI7ZnBhbj0wO2ZwYT0iK2E7fQogZWxzZXsKICB2YXIgZGE9 bmV3IERhdGUoKTsKICBhPSdQMC0nK19xY3JuZCgpKyctJytkYS5nZXRUaW1lKCk7 CiAgdS5jb29raWU9Il9fcWNhPSIrYSsiOyBleHBpcmVzPVN1biwgMTggSmFuIDIw MzggMDA6MDA6MDAgR01UOyBwYXRoPS87IGRvbWFpbj0iK2Q7CiAgYT1fcWNnYygi X19xY2EiKTsKICBpZihhLmxlbmd0aD4wKXtzKz0iO2ZwYW49MTtmcGE9IithO30K ICBlbHNle3MrPSI7ZnBhbj11O2ZwYT0iO30KIH0KIHJldHVybiBzOwp9CmZ1bmN0 aW9uIF9xY2RjKG4pewogZG9jdW1lbnQuY29va2llPW4rIj07IGV4cGlyZXM9VGh1 LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQ7IHBhdGg9LzsgZG9tYWluPSIrX3Fj ZG9tYWluKCk7Cn0KZnVuY3Rpb24gX3FweGxvYWQoKXsKIGlmKChfcWltZykmJiB0 eXBlb2YgX3FpbWcud2lkdGggPT0ibnVtYmVyIil7CiAgaWYgKF9xaW1nLndpZHRo PT0zKXtfcWNkYygiX19xY2EiKTt9Cn19CmZ1bmN0aW9uIHF1YW50c2VydmUoKXsK IHZhciByPV9xY3JuZCgpOwogdmFyIHNyPScnLHFvPScnLHFtPScnLHVybD0nJyxy ZWY9JycsamU9J3UnLG5zPScxJyxtZWRpYT0nd2VicGFnZScsZXZlbnQ9J2xvYWQn OwogaWYodHlwZW9mIF9xb3B0aW9ucyAhPSJ1bmRlZmluZWQiICYmIF9xb3B0aW9u cyE9bnVsbCl7CiAgZm9yKHZhciBrIGluIF9xb3B0aW9ucyl7CiAgIGlmKHR5cGVv ZihfcW9wdGlvbnNba10pIT0nc3RyaW5nJyl7Y29udGludWU7fQogICBpZihrPT0n cWFjY3QnKXtfcWFjY3Q9X3FvcHRpb25zW2tdO30KICAgZWxzZXtxbys9JzsnK2sr Jz0nK19xY2V1YyhfcW9wdGlvbnNba10pO30KICAgaWYoaz09J21lZGlhJyl7bWVk aWE9X3FvcHRpb25zW2tdO30KICAgaWYoaz09J2V2ZW50Jyl7ZXZlbnQ9X3FvcHRp b25zW2tdO30KICB9CiAgX3FvcHRpb25zPW51bGw7CiB9CiBpZigodHlwZW9mIF9x YWNjdCA9PSJ1bmRlZmluZWQiKXx8KF9xYWNjdC5sZW5ndGg9PTApKXJldHVybjsK IGlmKG1lZGlhPT0nd2VicGFnZScgJiYgZXZlbnQ9PSdsb2FkJyl7CiAgaWYoKHR5 cGVvZiBfcXBpeGVsc2VudCAhPSJ1bmRlZmluZWQiKSYmKF9xcGl4ZWxzZW50PT1f cWFjY3QpKXJldHVybjsKICBfcXBpeGVsc2VudD1fcWFjY3Q7fQogdmFyIGNlPShu YXZpZ2F0b3IuY29va2llRW5hYmxlZCk/IjEiOiIwIjsKIGlmKHR5cGVvZiBuYXZp Z2F0b3IuamF2YUVuYWJsZWQgIT0ndW5kZWZpbmVkJylqZT0obmF2aWdhdG9yLmph dmFFbmFibGVkKCkpPyIxIjoiMCI7CiBpZih0eXBlb2YgX3FtZXRhICE9InVuZGVm aW5lZCIgJiYgX3FtZXRhIT1udWxsKXtxbT0nO209JytfcWNldWMoX3FtZXRhKTtf cW1ldGE9bnVsbDt9CiBpZihzZWxmLnNjcmVlbil7c3I9c2NyZWVuLndpZHRoKyJ4 IitzY3JlZW4uaGVpZ2h0KyJ4IitzY3JlZW4uY29sb3JEZXB0aDt9CiB2YXIgZD1u ZXcgRGF0ZSgpOwogdmFyIGRzdD1fcWNkc3QoKTsKCgogdmFyIGRnPSJFNzI2MC1X LU9QLTkiOwogdmFyIHFzPSJodHRwOi8vcGl4ZWwucXVhbnRzZXJ2ZS5jb20iOwog dmFyIGZwPV9xY3NjKG1lZGlhKTsKIGlmKHdpbmRvdy5sb2NhdGlvbiAmJiB3aW5k b3cubG9jYXRpb24uaHJlZil1cmw9X3FjZXVjKHdpbmRvdy5sb2NhdGlvbi5ocmVm KTsKIGlmKHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQucmVmZXJy ZXIpcmVmPV9xY2V1Yyh3aW5kb3cuZG9jdW1lbnQucmVmZXJyZXIpOwogaWYoc2Vs Zj09dG9wKW5zPScwJzsKIF9xaW1nPW5ldyBJbWFnZSgpOwogX3FpbWcuYWx0PSIi OwogX3FpbWcuc3JjPXFzKycvcGl4ZWwnKyc7cj0nK3IrZnArJztucz0nK25zKyc7 dXJsPScrdXJsKyc7cmVmPScrcmVmKyc7Y2U9JytjZSsnO2plPScramUrJztzcj0n K3NyKyc7ZGc9JytkZysnO2RzdD0nK2RzdCsnO2V0PScrZC5nZXRUaW1lKCkrJzt0 em89JytkLmdldFRpbWV6b25lT2Zmc2V0KCkrJzthPScrX3FhY2N0K3FvK3FtOwog X3FpbWcub25sb2FkPWZ1bmN0aW9uKCkge19xcHhsb2FkKCk7fQp9CnF1YW50c2Vy dmUoKTsK ------------x4kCeh5XB5nK2Oy68L6x5d--