@if (0)==(0) @echo off cscript.exe "%~f0" //nologo //e:jscript //I %* exit /B %ERRORLEVEL% goto :EOF @end // ここまではjsファイルをbatとして起動する方法で固定↑の記述です // [include functions] // 外部ライブラリ指定。必要なものをinclude("a.js","b.js",...)する // global = new Function("return this")(); // ES5/ES6-shimを使用する場合はglobalを定義する include("comfuncs.js"); // + mail.js zip.js uB64.js uCSV.js uPsh.js // [Log] // setLog(true); // ログ:+.logに追記 // setLog(true,"%BN_%T.log",true); // ログ:_<日付>.logを毎起動ごとに作成 // [TEMP] //var tempDir = getTempFolder(getEnv().exeDir.down(".TEMP"),true);//テンポラリフォルダ作成(exit時に削除される) // [ヒアドキュメント] // var d = uHereDoc.hereKey(function(){/* // key1=C:\Users\00uXXXDesign // */}); // //=> // // d.key1=C:\Users\00uXXXDesign // hearDocもあり // [終了時の経過時間出力]] // var stopWach = createStopWatch().start(); // exit.push(function(){ if (isOk(stopWach)) echo("exit spend time=",stopWach.stop());}); // [get command-arguments] コマンド引数の取得 var pm = uParam() // 任意;オプションキーパラメータ群を指定する(なければ行コメントアウト) // .set("inFile").opt("/I").next("*") .init("") .desc("input file") .set("bSepaDoc") .opt("/S|SepaDoc") .init(false).desc("分割ドキュメントの雛形") .set("bOneDoc") .opt("/O|OneDoc") .init(false).desc("埋め込み型1つのadoc雛形") .set("bICONs") .opt("/I|Icons") .init(false).desc("Custom ICONSs配置") .set("bSCREEN") .opt("/SCREEN") .init(false).desc("SCREEN GAロゴ入り") // .set("bForce") .opt("/Force") .init(false).desc("強制上書き") // 固定:unnamed引数と全体の説明を記述する .set("*") .desc("adocのファイル名称を指定します") .set("usage").desc("adocの雛形を作成します") .read(); // [Main process] 処理を記述 var InstRegURL = "HKCU\\Software\\Dainippon Screen Mfg.Co.,Ltd.\\ToolJsFuncScript\\1.0"; var InstPath = readParam.reg(InstRegURL).get("InstallPath"); if ( isNone(InstPath) ){ echo(-1,"警告::インストール先が見つかりません:",InstRegURL); InstPath = getEnv().exeDir; } ///////////////////////////////////////////////////////////// var adocTPL = uHereDoc.hereDoc(function(){/* :lang: ja include::config.adoc[] // custom css. //:stylesdir: ./ //:stylesheet: edit.css //:toc: left //:imagesdir: Images :hardbreaks: = @FILENAME@ = == 第1章 最初の文書です。 * [x] チェックボックス [*] or [ ] == 第2章 ほげ 以上 */}/*,{"@FILENAME@":"rep1"}*/); var SCREEN_Logos = uHereDoc.hereDoc(function(){/* // SCREEN / CONFIDENTIAL :SCREENGA: pass:q[image:SCREENGA.png[]] :CONF: pass:q[image:Confidential.png[]] :DocNo: Internal :HeadLine: pass:n[{SCREENGA} [.right]##{DocNo} {CONF}##] {HeadLine} --- */}); ///////////////////////////////////////////////////////////// var conf = { tplDir:makePath(InstPath,"AdocTPL"), ymlDefault:"default-theme.yml", ymlKaiGen:"KaiGenGothicJP-theme.yml", ymlMyStyle:"mystyle-thema.yml", cssDefalt:"mystyle-thema.yml", adocTemplate:"template.adoc", adocTemplateOne:"template_One.adoc", config:"config.adoc", adocTemplateSepa:"TemplateSeparateDocRoot.adoc", adocSepaIncDoc:"IncDoc.adoc", logosDir:"Logos" }; var adocPath = "t.adoc".FP(); var configPath= makePath(conf.tplDir,conf.config); conf.adocTemplate = pm.bOneDoc ? conf.adocTemplateOne: conf.adocTemplate; var configPathTemplate = makePath(conf.tplDir,conf.adocTemplate); var configPathTemplateSepa = makePath(conf.tplDir,conf.adocTemplateSepa); var configPathIncDoc = makePath(conf.tplDir,conf.adocSepaIncDoc); if ( pm.length > 0 ){ if ( (/^[\/\-].*$/).test((pm[0]) ) ) { // 先頭/ or - の不要なオプションを除去 exit(-1,"不正なオプション:",pm[0]); } adocPath = pm[0].FP(); if ( isNone(adocPath.EX()) ){ adocPath = adocPath.EX("adoc") } } // 作成先のフォルダ var tgtDir = adocPath.PR(); // configのコピー var tgtconfigPath = makePath(adocPath.PR(),configPath.FN()); if ( pm.bOneDoc ) { // nocopy; }else{ if ((!pm.bForce)&&(!copySure(tgtconfigPath))) exit(-1); copyFile(configPath,tgtconfigPath); } if ((!pm.bForce)&&(!copySure(adocPath))) exit(-1); // Imagesフォルダの作成 doCmd({echo:false},"md",tgtDir.down("Images")); (tgtDir.down("Images").down("Template.dio.png")).writeAll(""); // SCREEN ロゴ if ( pm.bSCREEN ) { var p = conf.tplDir.down(conf.logosDir); var t = tgtDir.down("Images"); copyFile(p.down("SCREENGA.png"), t.down("SCREENGA.png")); copyFile(p.down("Confidential.png"),t.down("Confidential.png")); } if ( pm.bICONs ){ // カスタムアイコンコピー var tgtIconDir = tgtDir.down("icons"); var srcIconDir = conf.tplDir.down("icons.PNG").down("J").down("icons"); doCmd({echo:false},"md", tgtIconDir); doCmd({echo:false},"copy",srcIconDir.down("*.*"),tgtIconDir); } // Create adoc. if ( !pm.bSepaDoc ) { if ( configPathTemplate.isExistFile() ) { adocTPL = configPathTemplate.readAllUTF8(); // echo("rep adocTPL=",adocTPL); } } else { echo("分割ルートドキュメント"); if ( configPathTemplateSepa.isExistFile() ) { adocTPL = configPathTemplateSepa.readAllUTF8(); } // IncDoc.adocのコピー tgtIncDoc = makePath(adocPath.PR(),configPathIncDoc.FN()); copyFile(configPathIncDoc,tgtIncDoc); // 必要ならサブドキュメントディレクトリを作る 後ほど↓ } // 各種 マクロ置換 adocTPL = adocTPL.replaceAll("@FILENAME@",adocPath.BN()); // タイトルのファイル名を置換する adocTPL = adocTPL.replaceAll("@DATE@",getFmtDate("YYYY/MM/DD") ); // 現在の日付 // @ICON_CUSTOM@ var iconCustom= "// Custom Icons(J)\n\ @:icons: image\n\ @:iconsdir: icons\n\ @:icontype: png\n\ //"; var iconSample="CAUTION: CAUTION\n\ \n\ WARNING: WARNING\n\ \n\ TIP: TIPS\n\ \n\ IMPORTANT: IMPORTANT"; if ( pm.bICONs ){ adocTPL = adocTPL.replaceAll("//@ICON_CUSTOM@",iconCustom.replaceAll("@","")); // ICON属性の記述 adocTPL = adocTPL.replaceAll("//@ICON_SAMPLE@",iconSample); } else { adocTPL = adocTPL.replaceAll("//@ICON_CUSTOM@",iconCustom.replaceAll("@","//")); // コメント行で残す adocTPL = adocTPL.replaceAll("//@ICON_SAMPLE@",""); } // @SCREEN_LOGOS@ if ( pm.bSCREEN ){ adocTPL = adocTPL.replaceAll("//@SCREEN_LOGOS@",SCREEN_Logos ); // SCREEN Logosの置き換え } else { adocTPL = adocTPL.replaceAll("//@SCREEN_LOGOS@","" ); } // テンプレート書き出し adocPath.writeAllUTF8(adocTPL); // 分割ドキュメントの場合、サブドキュメントの雛形も作成 if ( pm.bSepaDoc ) { echo("分割サブドキュメント"); each( ["Sub_First","Sub_Second"], function(i,subName) { var subDir = tgtDir.down(subName); doCmd({echo:false},"md",subDir); // 自分自身getADoc.batを呼び出す var cmdVec = [ {echo:false}, getEnv().exePath, "/Force" ]; // オプションはICON,SCREEN する if (pm.bICONs) cmdVec.push("/Icons"); if (pm.bSCREEN) cmdVec.push("/SCREEN"); // サブドキュメント名 cmdVec.push( subDir.down(subName) ); doCmd(cmdVec); // getAdoc.batの呼び出し }); } exit(0); // [End] 終了 ※異常終了の場合は、0以外を返すようにする function copySure(f) { if ( f.isExistFile() ) { echo("file:",f); var k = pause("すでにファイルが存在します:上書きしますか? [Y/N]:"); if ( !(/Y/i).test(k) ){ return false;// N } deleteFile(f); } return true; } // 以下は絶対に削除してはいけない // DO-NOT-EDIT START@69cf47e2-4a1f-459c-9803-c97a999a70c2 function include() { // ID@e242e3fe-9328-4ff8-a24f-688beb2d0084 var $e = function(s) { WScript.Echo(s);}; var decF = function(b){ var e = (WScript.CreateObject('Microsoft.XMLDOM')).createElement("base64-node"); e.dataType="bin.base64";e.text=b; var a = WScript.CreateObject('ADODB.Stream'); a.Type=1; a.Open();a.Write(e.nodeTypedValue); a.Position=0;a.Type=2;a.charset="utf-8"; var s = a.ReadText();a.Close(); return s; } var ev = "var incF="+decF( [ "ZnVuY3Rpb24oKSB7DQoJdmFyIHNyRGlycyA9IFsiZnVuY3NcXCIsIi4uXFwwMHRlbXBsYXRl", "XFxmdW5jc1xcIl07DQoJdmFyIGZzb189V1NjcmlwdC5DcmVhdGVPYmplY3QoIlNjcmlwdGlu", "Zy5GaWxlU3lzdGVtT2JqZWN0Iik7DQoJdmFyIHdzXyA9IFdTY3JpcHQ7DQoJdmFyIHJ0ID0g", "d3NfLlNjcmlwdEZ1bGxOYW1lLnJlcGxhY2Uod3NfLlNjcmlwdE5hbWUsIiIpOw0KCXZhciBj", "b21mdW5jc0Z1bGxQYXRoPSIiOw0KCXZhciBub3RGaWxlRW5kID0gZnVuY3Rpb24oZil7d3Nf", "LmVjaG8oIkZpbGUgbm90IGZvdW5kOiAiK2YpO3dzXy5xdWl0KC0xKTt9Ow0KCXZhciBvayA9", "IGZ1bmN0aW9uKGYpe3JldHVybiBmc29fLkZpbGVFeGlzdHMoZik7fTsNCgl2YXIgcmVhZEYg", "PSBmdW5jdGlvbihmKXtyZXR1cm4gZnNvXy5PcGVuVGV4dEZpbGUoZikuUmVhZEFsbCgpO307", "DQoJZnVuY3Rpb24gZ2V0VG9vbFJlZygpew0KCQl2YXIgcj0iIjsNCgkJdHJ5IHsNCgkJCXZh", "ciByZWdVcmwgPSAiSEtDVVxcU29mdHdhcmVcXERhaW5pcHBvbiBTY3JlZW4gTWZnLkNvLixM", "dGQuXFxUb29sSnNGdW5jU2NyaXB0XFwxLjAiOw0KCQkJdmFyIFdzaFNoZWxsID0gV1Njcmlw", "dC5DcmVhdGVPYmplY3QgKCJXU2NyaXB0LlNoZWxsIik7DQoJCQlyID0gV3NoU2hlbGwuUmVn", "UmVhZChyZWdVcmwrIlxcSW5zdGFsbFBhdGgiKTsgfSBjYXRjaChlKSB7cj0iIjt9Ow0KCQlp", "ZiAoIHIgIT0gIiIgKSAgcis9IlxcZnVuY3NcXCI7DQoJCXJldHVybiByOw0KCX0NCgl2YXIg", "cmVnUGF0aD1nZXRUb29sUmVnKCk7DQoJLy8gd3NfLkVjaG8oInJlZ1BhdD0iK3JlZ1BhdGgp", "Ow0KLy8NCnZhciBlbWJTdHI9IiI7DQppZiAoImVtYmVkZGVkU2NyaXB0IiBpbiB0aGlzKXsN", "CglpbmNsdWRlLmNvbnRleHQgPSAiIjsNCgllbWJTdHIgPSBlbWJlZGRlZFNjcmlwdCgpOw0K", "CWlmIChlbWJTdHIgIT0gIiIpIHsNCgkJLy8gV1NjcmlwdC5FY2hvKCI9PT09PT09PT09PT09", "PT0iKTsNCi8vCQlXU2NyaXB0LkVjaG8oZGVjRihlbWJTdHIpKTsNCgkJLy8gV1NjcmlwdC5F", "Y2hvKGVtYlN0cik7DQoJCS8vIFdTY3JpcHQuRWNobygiPT09PT09PT09PT09PT09Iik7DQoJ", "CWV2YWwoIGRlY0YoZW1iU3RyKSApOw0KCQlyZXR1cm4gIiI7Ly8gZW1iZWTjgZfjgabjgYTj", "gabjgoLjgrfjgrnjg4bjg6DlvJXmlbDjg4Hjgqfjg4Pjgq/jgZnjgosg5pyq5aSJ5pu0DQoJ", "fSANCn0NCi8vDQoJaWYgKCBlbWJTdHI9PSIiICkgew0KCQl2YXIgcz0iIjsNCgkJZm9yKHZh", "ciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KCQkJdmFyIGFnID0gYXJndW1lbnRz", "W2ldOw0KCQkJdmFyIHBhdGggPSBydCthZzsNCgkJCWlmICggL15cLltcXFwvXS8udGVzdChh", "ZykgKSB7DQoJCQkJcyArPSAob2socGF0aCkgPyByZWFkRihwYXRoKSA6IG5vdEZpbGVFbmQo", "YWcpKTsNCgkJCQljb250aW51ZTsNCgkJCX0NCgkJCXZhciBmID0gIiI7DQoJCQlmb3IodmFy", "IGRpciBpbiBzckRpcnMpew0KCQkJCXBhdGggPSBydCtzckRpcnNbZGlyXSthZzsNCgkJCQlp", "ZiAob2socGF0aCkpIHtmPXBhdGg7IGJyZWFrO30NCgkJCX0NCgkJCWlmICggKGYgPT0gIiIp", "ICYmIChyZWdQYXRoICE9ICIiKSApIHsvL2FkZCByZWcgc2VhcmNoLg0KCQkJCXBhdGggPSBy", "ZWdQYXRoK2FnOw0KCQkJCWlmIChvayhwYXRoKSkge2Y9cGF0aH0NCgkJCX0NCgkJCWlmICgg", "YWc9PSJjb21mdW5jcy5qcyIgKSBjb21mdW5jc0Z1bGxQYXRoID0gcGF0aDsNCgkJCXMgKz0g", "KGYhPSIiID8gcmVhZEYoZikgOiBub3RGaWxlRW5kKGFnKSk7DQoJCX0NCgkJaW5jbHVkZS5w", "YXRoPXJ0Ow0KCQlpbmNsdWRlLmNvbWZ1bmNzRnVsbFBhdGg9Y29tZnVuY3NGdWxsUGF0aDsN", "CgkJZXZhbChzKTsNCgkJaW5jbHVkZS5jb250ZXh0ID0gczsNCgl9DQovLw0KCWlmICggKHdz", "LkFyZ3VtZW50cy5sZW5ndGg+MCkgJiYgKHdzLkFyZ3VtZW50cygwKT09Ii9AU1lTVEVNIikg", "KSB7DQoJCS8vIG5lZWQ6InVTeXN0ZW0uanMiLCJ1QjY0LmpzIiwiSnNvbjMuanMiDQoJCS8v", "IHZhciB1U3lzUGF0aD1pbmNsdWRlLmNvbWZ1bmNzRnVsbFBhdGguRk4oInVTeXN0ZW0uanMi", "KTsNCgkJLy8gZXZhbCggdVN5c1BhdGgucmVhZEFsbEVuY29kaW5nKCkpOw0KCQl2YXIgc1Bh", "dGg9IGluY2x1ZGUuY29tZnVuY3NGdWxsUGF0aC5GTigiZHVtbXkuanMiKTsNCgkJZXZhbCgg", "c1BhdGguRk4oInVCNjQuanMiKS5yZWFkQWxsRW5jb2RpbmcoKSApOw0KCQlldmFsKCBzUGF0", "aC5GTigiSnNvbjMuanMiKS5yZWFkQWxsRW5jb2RpbmcoKSApOw0KCQlldmFsKCBzUGF0aC5G", "TigidVN5c3RlbS5qcyIpLnJlYWRBbGxFbmNvZGluZygpICk7DQoJCXVTeXN0ZW0uY2hlY2so", "KTsNCgkJLy8gZWNobygidXBkYXRlIEluY2x1ZGUhIik7DQoJCWV4aXQoMCk7DQoJfQkNCglp", "bmNsdWRlLmNvbnRleHQgPSB1bmRlZmluZWQ7DQoJcmV0dXJuICIiOyANCn0=" ].join("\n")); eval(ev); incF.apply(this,arguments); return ""; }; // EMBED-START@52da872d-b441-4d13-b921-65dbfde131b0 function embeddedScript(){ // EMBON@e242e3fe-9328-4ff8-a24f-688beb2d0085 return ( [ "DQp2YXIgVHlwZUVycm9yPUVycm9yLFN5bnRheEVycm9yPUVycm9yOw0KCQoNCnZhciAkZ2xv", "YmFsX2V4cG9ydHMgPSB7fTsKdmFyICRnbG9iYWxfZXhwb3J0c19tYWtlID0gZnVuY3Rpb24o", "KSB7Cgl2YXIgZXY9IiI7DQoJCglmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0cyApIHsN", "CgkJZXYgKz0gayArICI9JGdsb2JhbF9leHBvcnRzW1wiIitrKyJcIl1cbiI7DQoJfQ0KCUZ1", "bmN0aW9uKCIkZ2xvYmFsX2V4cG9ydHMiLGV2KSgkZ2xvYmFsX2V4cG9ydHMpOw0KCQoNCglk", "ZWxldGUgJGdsb2JhbF9leHBvcnRzOw0KfTsNCg0KKGZ1bmN0aW9uKCl7IAoJdmFyICRlID0g", "ZnVuY3Rpb24oeCkgeyBXU2NyaXB0LmVjaG8oeCk7IH07DQoNCgkKCXZhciAkZ2xvYmFsID0g", "JGdsb2JhbF9leHBvcnRzOw0KDQoJJGdsb2JhbC4kcSA9IGZ1bmN0aW9uICRxKHN0cikgeyAN", "CgkJCgkJcmV0dXJuIHN0ci5yZXBsYWNlKC9cJHsoW157fV0rKX0vZywgZnVuY3Rpb24gKCQw", "LCAkMSkgew0KCQkJcmV0dXJuICRnbG9iYWwuZXZhbCgkMSk7DQoJCX0pOw0KCX0NCg0KCgoN", "Cg0KCg0KJGdsb2JhbC5mc28gPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiU2NyaXB0aW5nLkZp", "bGVTeXN0ZW1PYmplY3QiKTsNCiRnbG9iYWwuc2ggPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgi", "V1NjcmlwdC5TaGVsbCIpOw0KDQokZ2xvYmFsLndzID0gV1NjcmlwdDsNCiRnbG9iYWwuaW9t", "b2RlID0geyJGb3JSZWFkaW5nIjoxLCJGb3JXcml0aW5nIjoyLCJGb3JBcHBlbmRpbmciOjgg", "fTsNCiRnbG9iYWwuaW9lbmNvZGluZyA9IHsiVHJpc3RhdGVVc2VEZWZhdWx0IjotMiwiVHJp", "c3RhdGVUcnVlIjotMSwiVHJpc3RhdGVGYWxzZSI6MCwiRGVmYXVsdCI6LTIsIlVuaWNvZGUi", "Oi0xLCJBc2NpaSI6MH07DQoNCg0KCkVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0", "aW9uKCl7DQoJdmFyIHMgPSAiIjsNCglzID0gKHRoaXMubnVtYmVyICYgMHhGRkZGKSArICI6", "IiArIHRoaXMuZGVzY3JpcHRpb24NCgkJOwoJCgkNCglyZXR1cm4gczsNCn07DQoNCgokZ2xv", "YmFsLnNldExvZ19pbnN0YW5jZSA9IG51bGw7DQokZ2xvYmFsLnNldExvZyA9IGZ1bmN0aW9u", "KGJPbixwYXRoLGJDcmVhdGUpIHsNCg0KCQ0KCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PSAw", "ICl7DQoJCWlmICggJGdsb2JhbC5zZXRMb2dfaW5zdGFuY2UgKSB7DQoJCQlyZXR1cm4gJGds", "b2JhbC5zZXRMb2dfaW5zdGFuY2U7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gdW5kZWZpbmVk", "Ow0KCQl9DQoJfQ0KCXZhciBvYmogPSB7fTsNCgl2YXIgb3B0ID0ge2xvZzpmYWxzZSwgcGF0", "aDoiIiwgYkNyZWF0ZTpmYWxzZX07DQoJb2JqLm9wdCA9IG9wdDsNCglpZiAoICRnbG9iYWwu", "c2V0TG9nX2luc3RhbmNlICkgewoJCW9iaiA9ICRnbG9iYWwuc2V0TG9nX2luc3RhbmNlOw0K", "CQlvcHQgPSBvYmoub3B0Ow0KCX0NCgkKCQoJaWYgKCAoYXJndW1lbnRzLmxlbmd0aCA+IDAp", "ICYmICh0eXBlb2YoYXJndW1lbnRzWzBdKSA9PSAnb2JqZWN0JykgKSB7DQoJCXZhciBvID0g", "YXJndW1lbnRzWzBdOw0KCQlpZiAoImxvZyIgaW4gbyApCSBvcHQubG9nID0gby5sb2c7IA0K", "CQlpZiAoInBhdGgiIGluIG8gKSAJIG9wdC5wYXRoID0gby5wYXRoOyANCgkJaWYgKCJiQ3Jl", "YXRlIiBpbiBvICkgb3B0LmJDcmVhdGUgPSBvLmJDcmVhdGU7DQoJfSBlbHNlIHsNCgkJaWYg", "KCBiT24gIT0gdW5kZWZpbmVkICkgb3B0LmxvZyA9IGJPbjsNCgkJaWYgKCBwYXRoICE9IHVu", "ZGVmaW5lZCApIG9wdC5wYXRoID0gcGF0aDsNCgkJaWYgKCBiQ3JlYXRlICE9IHVuZGVmaW5l", "ZCApIG9wdC5iQ3JlYXRlID0gYkNyZWF0ZTsNCgl9DQoJb2JqLnN0cm0gPSBudWxsOw0KCWlm", "ICggb3B0LmxvZyApIHsNCgkJb3B0LnBhdGggPSBnZXRMb2dOYW1lKG9wdC5wYXRoKTsNCgkJ", "aWYgKCAvW1xcXC9dLy50ZXN0KG9wdC5wYXRoKSApew0KCQkJOw0KCQl9IGVsc2Ugew0KCQkJ", "CgkJCW9wdC5wYXRoID0gbWFrZVBhdGgoZ2V0RW52KCkuZXhlRGlyLG9wdC5wYXRoKTsNCgkJ", "fQ0KCX0NCglmdW5jdGlvbiBnZXRMb2dOYW1lKHBhdGgpew0KCQl2YXIgb3Q9IiI7DQoJCWlm", "ICggaXNOb25lKHBhdGgpICkgewoJCQlvdCA9IHdzLlNjcmlwdEZ1bGxOYW1lOw0KCQkJb3Qg", "PSBvdC5FWCgibG9nIik7DQoJCX0gZWxzZSB7DQoJCQkKCQkJb3QgPSBwYXRoLnJlcGxhY2Uo", "IiVUIixnZXRGbXREYXRlKCdTJykpOw0KCQkJb3QgPSBvdC5yZXBsYWNlKCIlQk4iLGdldEVu", "digpLmV4ZVBhdGguQk4oKSk7DQoJCQlvdCA9IG90LnJlcGxhY2UoIiVGTiIsZ2V0RW52KCku", "ZXhlUGF0aC5GTigpKTsNCgkJfQ0KCQlyZXR1cm4gb3Q7DQoJfQ0KCWlmICggJGdsb2JhbC5z", "ZXRMb2dfaW5zdGFuY2UgKSB7DQoJCXJldHVybiAkZ2xvYmFsLnNldExvZ19pbnN0YW5jZTsN", "Cgl9DQoJaWYgKCBvcHQubG9nICYmIG9wdC5iQ3JlYXRlICkgew0KCQlpZiAoIG9wdC5wYXRo", "LmlzRXhpc3RGaWxlKCkgKXsNCgkJCWRlbGV0ZUZpbGUob3B0LnBhdGgpOw0KCQl9DQoJfQ0K", "CW9iai5vcGVuID0gZnVuY3Rpb24oKXsNCgkJaWYgKCAhb2JqLm9wdC5sb2cgKSB7IG9iai5z", "dHJtID0gbnVsbDsgcmV0dXJuIG51bGx9Ow0KCQl2YXIgY250ID0gMzsKCQl3aGlsZShjbnQt", "LSl7DQoJCQl0cnkgew0KCQkJCW9iai5zdHJtID0gZnNvLk9wZW5UZXh0RmlsZShvYmoub3B0", "LnBhdGgsaW9tb2RlLkZvckFwcGVuZGluZyx0cnVlKTsNCgkJCQlicmVhazsNCgkJCX0gY2F0", "Y2goZSl7DQoJCQkJaWYgKCBjbnQgPT0gMCApIHsNCgkJCQkJd3MuRWNobygiISFsb2cgb3Bl", "biBlcnIgPT4gcmV0cnkhISIrb2JqLm9wdC5wYXRoKTsgDQoJCQkJCQoJCQkJfQ0KCQkJCXdz", "LlNsZWVwKDEwMDApOw0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBvYmou", "c3RybTsNCgl9DQoJb2JqLmNsb3NlICA9IGZ1bmN0aW9uKCkgew0KCQlpZiAoICFvYmouc3Ry", "bSApIHJldHVybjsNCgkJb2JqLnN0cm0uQ2xvc2UoKTsNCgl9DQoJb2JqLldyaXRlID0gZnVu", "Y3Rpb24ocykgew0KCQlpZiAoIG9iai5vcGVuKCk9PW51bGwgKSByZXR1cm47DQoJCW9iai5z", "dHJtLldyaXRlKHMpOw0KCQlvYmouY2xvc2UoKTsNCgl9DQoJb2JqLldyaXRlTGluZSA9IGZ1", "bmN0aW9uKHMpew0KCQlpZiAoIG9iai5vcGVuKCk9PW51bGwgKSByZXR1cm47DQoJCW9iai5z", "dHJtLldyaXRlTGluZShzKTsNCgkJb2JqLmNsb3NlKCk7DQoJfQ0KCSRnbG9iYWwuc2V0TG9n", "X2luc3RhbmNlID0gb2JqOw0KCQ0KCQoJdmFyIGEgPSBXU2NyaXB0LkFyZ3VtZW50cyxzPSIi", "Ow0KCWZvciggdmFyIGk9MDtpPGEubGVuZ3RoO2krKykgcys9KCIgIiArIGEoaSkpOw0KCW9i", "ai5Xcml0ZUxpbmUoIlsiICsgZ2V0Rm10RGF0ZSgnLycpICsgIl06U1RBUlQgTE9HOiIgKyBX", "U2NyaXB0LlNjcmlwdE5hbWUgKyBzKTsNCgkKCXJldHVybiBvYmo7DQp9DQoNCgokZ2xvYmFs", "LmNsb3NlTG9nRmlsZSA9IGZ1bmN0aW9uKCkgew0KDQoJaWYgKCAkZ2xvYmFsLnNldExvZygp", "ICkgew0KCQlyZXR1cm47DQoJfQ0KCWlmICggc2V0TG9nRmlsZS5wcm90b3R5cGUuc3RybSAh", "PSBudWxsICkgew0KCQlzZXRMb2dGaWxlLnByb3RvdHlwZS5zdHJtLkNsb3NlKCk7DQoJCXNl", "dExvZ0ZpbGUucHJvdG90eXBlLnN0cm09bnVsbDsNCgl9DQp9DQoNCgoKJGdsb2JhbC5zZXRM", "b2dGaWxlID0gZnVuY3Rpb24gKHBhdGgsbW9kZSkgew0KDQoKDQoNCglpZiAoIHNldExvZ0Zp", "bGUucHJvdG90eXBlLnN0cm0gIT0gbnVsbCApIHsNCgkJcmV0dXJuIEZhbHNlOwoJfQ0KCWlm", "ICggbW9kZSA9PSB1bmRlZmluZWQgKSB7DQoJCW1vZGUgPSBpb21vZGUuRm9yV3JpdGluZzsN", "Cgl9DQoJCgl2YXIgbG9nZiA9IGZzby5PcGVuVGV4dEZpbGUocGF0aCxtb2RlLHRydWUpOw0K", "CXNldExvZ0ZpbGUucHJvdG90eXBlLnN0cm0gPSBsb2dmOwkNCn0NCiRnbG9iYWwuc2V0TG9n", "RmlsZS5wcm90b3R5cGUuc3RybSA9IG51bGw7Cg0KCg0KDQoKDQokZ2xvYmFsLmlzTm9uZSA9", "IGZ1bmN0aW9uKHYpIHsNCglpZiAoIHYgPT09IHVuZGVmaW5lZCApIAlyZXR1cm4gdHJ1ZTsN", "CglpZiAoIHYgPT09IG51bGwgKSAJCXJldHVybiB0cnVlOw0KCWlmICggdiA9PT0gIiIgKSAJ", "CXJldHVybiB0cnVlOw0KCWlmICggdiA9PT0gZmFsc2UgKSAJCXJldHVybiB0cnVlOw0KCWlm", "ICggKHR5cGVPZih2KSA9PT0gIm51bWJlciIpICYmIGlzTmFOKHYpICkgcmV0dXJuIHRydWU7", "DQoJcmV0dXJuIGZhbHNlOw0KfQ0KJGdsb2JhbC5pc09rID0gZnVuY3Rpb24odikge3JldHVy", "bighaXNOb25lKHYpKTt9DQokZ2xvYmFsLmlzT0sgPSAkZ2xvYmFsLmlzT2s7DQokZ2xvYmFs", "LmlzRW1wdHkgPSBmdW5jdGlvbih2KXsNCglpZiAoICFpc09rKHYpICkgcmV0dXJuIHRydWU7", "DQoJaWYgKCB0eXBlT2YodikgPT0gImFycmF5IiApIHsNCgkJcmV0dXJuICh2Lmxlbmd0aD09", "MCkgPyB0cnVlOmZhbHNlOw0KCX0NCglpZiAoIHR5cGVPZih2KSA9PSAib2JqZWN0IiApIHsN", "CgkJcmV0dXJuICh2PT17fSk/dHJ1ZTpmYWxzZTsNCgl9DQoJcmV0dXJuIGZhbHNlOwp9DQoN", "CgokZ2xvYmFsLnJlY3VyT2JqU3RyID0gZnVuY3Rpb24oIG9iaiApIHsNCgkKCXZhciByZXQg", "PSAiIiwgYkZpcnN0ID0gdHJ1ZTsNCglzd2l0Y2goZ2V0T2JqZWN0VHlwZShvYmopKXsNCgkg", "IGNhc2UgIltvYmplY3QgRnVuY3Rpb25dIjoNCgkJcmV0ID0gIntmdW5jdGlvbn0iOw0KCQli", "cmVhazsNCgkgIGNhc2UgIltvYmplY3QgT2JqZWN0XSI6DQoJCXZhciB2ZWM9W107DQoJCWZv", "cih2YXIgayBpbiBvYmopew0KCQkJaWYgKCAoImhhc093blByb3BlcnR5IiBpbiBvYmopICYm", "ICghb2JqLmhhc093blByb3BlcnR5KGspKSApIHsNCgkJCQkKCQkJCWNvbnRpbnVlOw0KCQkJ", "fQ0KCQkJdmVjLnB1c2goIGsrIjoiK3JlY3VyT2JqU3RyKG9ialtrXSkgKTsNCgkJfQ0KCQly", "ZXQgKz0gInsiOw0KCQlmb3IodmFyIGk9MDtpPHZlYy5sZW5ndGg7aSsrKXsNCgkJCXJldCAr", "PSB2ZWNbaV07DQoJCQlpZiAoaSAhPSAodmVjLmxlbmd0aC0xKSkgcmV0ICs9ICIsIjsNCgkJ", "fQ0KCQlyZXQgKz0gIn0iOw0KCQlicmVhazsNCgkgIGNhc2UgIltvYmplY3QgQXJyYXldIjoN", "CgkJdmFyIHZlYz1bXTsNCgkJZm9yKHZhciBpPTA7aTxvYmoubGVuZ3RoO2krKyl7DQoJCQl2", "ZWMucHVzaChyZWN1ck9ialN0cihvYmpbaV0pKTsNCgkJfQ0KCQlyZXQgKz0gIlsiOw0KCQlm", "b3IodmFyIGk9MDtpPHZlYy5sZW5ndGg7aSsrKXsNCgkJCXJldCArPSB2ZWNbaV07DQoJCQlp", "ZiAoaSAhPSAodmVjLmxlbmd0aC0xKSkgcmV0ICs9ICIsIjsNCgkJfQ0KCQlyZXQgKz0gIl0i", "Ow0KCQlicmVhazsNCgkgIGRlZmF1bHQ6DQoJCXJldCA9IG9iai50b1N0cmluZygpOw0KCQli", "cmVhazsNCgl9DQoJcmV0dXJuIHJldDsNCn0NCg0KCg0KJGdsb2JhbC5nZXRPYmplY3RUeXBl", "IAk9IGZ1bmN0aW9uKHYpIHtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs", "KHYpO30NCiRnbG9iYWwudHlwZU9mIAkJCT0gZnVuY3Rpb24odikgew0KCXJldHVybiB2PT09", "dW5kZWZpbmVkID8gInVuZGVmaW5lZCI6IHY9PT1udWxsID8gIm51bGwiOk9iamVjdC5wcm90", "b3R5cGUudG9TdHJpbmcuY2FsbCh2KS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKTsNCgl9", "DQoNCgoNCiRnbG9iYWwuY2FzdEkgPSBmdW5jdGlvbih2LHJhZCkgeyANCgl2YXIgcmFkaXgg", "PSAocmFkPT11bmRlZmluZWQpID8gMTA6cmFkOyANCglzd2l0Y2godHlwZU9mKHYpKSB7DQoJ", "ICBjYXNlICJudW1iZXIiCTogcmV0dXJuIChNYXRoLnJvdW5kKHYpKTsNCgkgIGNhc2UgImJv", "b2xlYW4iOiByZXR1cm4gKHYgPyAxIDogMCk7DQoJICBkZWZhdWx0CQk6IHJldHVybiAocGFy", "c2VJbnQodixyYWRpeCkpOw0KCX0NCn07DQokZ2xvYmFsLmNhc3RTID0gZnVuY3Rpb24odikg", "eyANCgl2YXIgc3RyID0gdjsNCglpZiAoIHYgPT0gbnVsbCApIHsNCgkJcmV0dXJuICI8bnVs", "bD4iOw0KCX0NCgl0cnl7DQoJCXN0ciA9IHN0ci50b1N0cmluZygpOw0KCX0gY2F0Y2goZSl7", "DQoJCXN0ciA9ICI8ZmFpbGVkIGNhc3QgdG8gc3RyaW5nPiI7DQoJfQ0KCXJldHVybiAoc3Ry", "KTsgDQp9Ow0KJGdsb2JhbC5jYXN0RiA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuICh0eXBlT2Yo", "dik9PSJib29sZWFuIikgPyAodj8xOjApIDogcGFyc2VGbG9hdCh2KTsgfTsNCg0KDQoNCgoN", "CiRnbG9iYWwuZ2V0SlNjcmlwdEluZm8gPSBmdW5jdGlvbigpew0KCXZhciBvYmogPSB7ZnVs", "bE5hbWU6IkpTY3JpcHQgMC4wLjAiLG5hbWU6IkpTY3JpcHQiLCB2ZXI6IjAuMC4wIn07DQoJ", "dmFyIG5hbWUJPVNjcmlwdEVuZ2luZSgpOw0KCXZhciBtYWpvciAJPVNjcmlwdEVuZ2luZU1h", "am9yVmVyc2lvbigpOw0KCXZhciBtaW5vcgk9U2NyaXB0RW5naW5lTWlub3JWZXJzaW9uKCk7", "DQoJdmFyIGJ1aWxkCT1TY3JpcHRFbmdpbmVCdWlsZFZlcnNpb24oKTsNCglvYmoubmFtZSA9", "IG5hbWU7DQoJb2JqLnZlciAgPSBtYWpvcisiLiIrbWlub3IrIi4iK2J1aWxkOw0KCW9iai5m", "dWxsTmFtZSA9IG9iai5uYW1lICsgIiAiICsgb2JqLnZlcjsNCglyZXR1cm4gb2JqOw0KfQ0K", "DQoKDQokZ2xvYmFsLmlzNjRCaXRPUyA9IGZ1bmN0aW9uKCkgew0KCQoJdmFyIHByb2Nlc29y", "ID0gc2guRW52aXJvbm1lbnQoIlByb2Nlc3MiKS5JdGVtKCJQUk9DRVNTT1JfQVJDSElURUNU", "VVJFIik7DQoJdmFyIHByb2Nlc29yVzY0MzIgPSBzaC5FbnZpcm9ubWVudCgiUHJvY2VzcyIp", "Lkl0ZW0oIlBST0NFU1NPUl9BUkNISVRFVzY0MzIiKTsNCgl2YXIgb3M2NCA9IHtBTUQ2NDp0", "cnVlLCBJQTY0OnRydWUsICJ4ODYiOmZhbHNlfTsJCglpZiAoIGlzT0socHJvY2Vzb3JXNjQz", "MikgKSB7DQoJCQoJCXJldHVybiAocHJvY2Vzb3JXNjQzMiBpbiBvczY0KSA/IG9zNjRbcHJv", "Y2Vzb3JXNjQzMl06IHRydWU7DQoJfQ0KCXJldHVybiAocHJvY2Vzb3IgaW4gb3M2NCkgPyBv", "czY0W3Byb2Nlc29yXTogdHJ1ZTsKCQoJCgkKCQoJCn0NCiRnbG9iYWwuaXM2NEJpdFNjcmlw", "dCA9IGZ1bmN0aW9uKCkgew0KCQoJdmFyIHByb2Nlc29yID0gc2guRW52aXJvbm1lbnQoIlBy", "b2Nlc3MiKS5JdGVtKCJQUk9DRVNTT1JfQVJDSElURUNUVVJFIik7DQoJdmFyIG9zNjQgPSB7", "QU1ENjQ6dHJ1ZSwgSUE2NDp0cnVlLCAieDg2IjpmYWxzZX07CQoJcmV0dXJuIChwcm9jZXNv", "ciBpbiBvczY0KSA/IG9zNjRbcHJvY2Vzb3JdOiB0cnVlOwkKfQ0KDQoKDQoNCgoKCg0KJGds", "b2JhbC50cnlXcml0ZVNhZmUgPWZ1bmN0aW9uKG9zdHJtLHN0cil7IA0KCQoJCgkKCWZvcih2", "YXIgbj0wO248cy5sZW5ndGg7bisrKXsNCgkJdmFyIGNoID0gc3RyLmNoYXJBdChuKTsNCgkJ", "dHJ5IHtvc3RybS5Xcml0ZShjaCk7fSBjYXRjaChuZyl7DQoJCQlvc3RybS5Xcml0ZSgiPEA/", "QD4iKTsNCgkJfQ0KCX0JCQkNCn0NCg0KJGdsb2JhbC5lY2hvID0gZnVuY3Rpb24gZWNobyhz", "dHIpew0KCXZhciBsb2dGc3RybSA9IHNldExvZ0ZpbGUucHJvdG90eXBlLnN0cm07DQoNCglp", "ZiAoICRnbG9iYWwuc2V0TG9nKCkgKSB7DQoJCWxvZ0ZzdHJtID0gJGdsb2JhbC5zZXRMb2co", "KTsNCgl9DQogICAgZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KICAg", "ICAgICB2YXIgcyA9IGFyZ3VtZW50c1tpXTsNCgkJaWYgKCBzID09PSBudWxsICkgeyAKCQkJ", "cyA9ICIobnVsbCkiOwoJCX0gZWxzZSBpZiAoIHMgPT09IHVuZGVmaW5lZCApIHsNCgkJCXMg", "PSAiKHVuZGVmaW5lZCkiOw0KCQl9DQoJCWlmICggZ2V0T2JqZWN0VHlwZShzKT09IltvYmpl", "Y3QgT2JqZWN0XSIgKQ0KCQkJcyA9IHJlY3VyT2JqU3RyKHMpOwoJCXRyeSB7IA0KCQkJV1Nj", "cmlwdC5TdGRPdXQuV3JpdGUocyk7DQoJCX0gY2F0Y2goZSl7DQoJCQkKCQkJdHJ5V3JpdGVT", "YWZlKFdTY3JpcHQuU3RkT3V0LHMpOw0KCQl9DQoJCWlmIChsb2dGc3RybSl7DQoJCQl0cnkg", "ew0KCQkJCWxvZ0ZzdHJtLldyaXRlKHMpOw0KCQkJfSBjYXRjaChlKSB7DQoJCQkJCgkJCQl0", "cnlXcml0ZVNhZmUobG9nRnN0cm0scyk7DQoJCQl9DQoJCX0NCiAgICB9DQogICAgV1Njcmlw", "dC5TdGRPdXQuV3JpdGVMaW5lKCIiKTsNCglpZiAobG9nRnN0cm0pIAlsb2dGc3RybS5Xcml0", "ZUxpbmUoIiIpOw0KfTsNCiRnbG9iYWwucHJpbnRsbiA9ICRnbG9iYWwuZWNobzsJCg0KJGds", "b2JhbC5lY2hvU3RyID0gZnVuY3Rpb24oc3RyKXsNCgl2YXIgb3Q9IiI7DQogICAgZm9yKHZh", "ciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KICAgICAgICB2YXIgcyA9IGFyZ3Vt", "ZW50c1tpXTsNCiAgICAgICAgaWYgKCBzID09IG51bGwgKSB7DQoJCQlzID0gIihudWxsKSI7", "CgkJfSBlbHNlIGlmICggcyA9PSB1bmRlZmluZWQgKSB7DQoJCQlzID0gIih1bmRlZmluZWQp", "IjsNCgkJfQ0KCQlpZiAoIGdldE9iamVjdFR5cGUocyk9PSJbb2JqZWN0IE9iamVjdF0iICkN", "CgkJCXMgPSByZWN1ck9ialN0cihzKTsKICAgICAgICBvdCArPSBzOw0KICAgIH0NCiAgICBv", "dCArPSAiXHJcbiI7DQogICAgcmV0dXJuIG90Ow0KfTsNCg0KJGdsb2JhbC5lY2hvUyA9IGZ1", "bmN0aW9uKHN0cil7DQoJdmFyIG90PSIiOw0KICAgIGZvcih2YXIgaT0wO2k8YXJndW1lbnRz", "Lmxlbmd0aDtpKyspIHsNCiAgICAgICAgdmFyIHMgPSBhcmd1bWVudHNbaV07DQogICAgICAg", "IGlmICggcyA9PSBudWxsICkgew0KCQkJcyA9ICIobnVsbCkiOwoJCX0gZWxzZSBpZiAoIHMg", "PT0gdW5kZWZpbmVkICkgew0KCQkJcyA9ICIodW5kZWZpbmVkKSI7DQoJCX0NCgkJaWYgKCBn", "ZXRPYmplY3RUeXBlKHMpPT0iW29iamVjdCBPYmplY3RdIiApDQoJCQlzID0gcmVjdXJPYmpT", "dHIocyk7CiAgICAgICAgb3QgKz0gczsNCiAgICB9DQogICAgCiAgICByZXR1cm4gb3Q7DQp9", "Ow0KDQoNCgoNCiRnbG9iYWwucHJpbnQgPSBmdW5jdGlvbihzdHIpew0KCXZhciBsb2dGc3Ry", "bSA9IHNldExvZ0ZpbGUucHJvdG90eXBlLnN0cm07DQoJaWYgKCAkZ2xvYmFsLnNldExvZy5p", "bnN0YW5jZSApIHsNCgkJbG9nRnN0cm0gPSAkZ2xvYmFsLnNldExvZy5pbnN0YW5jZTsNCgl9", "DQogICAgZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KICAgICAgICBp", "ZiAoIGFyZ3VtZW50c1tpXSA9PSBudWxsICkgew0KCQkJV1NjcmlwdC5TdGRPdXQuV3JpdGUo", "IihudWxsKSIpOwoJCQlpZiAobG9nRnN0cm0pIAlsb2dGc3RybS5Xcml0ZSgiKG51bGwpIik7", "DQoJCX0gZWxzZSB7DQoJCQl2YXIgcyA9IGFyZ3VtZW50c1tpXTsNCgkJCWlmICggZ2V0T2Jq", "ZWN0VHlwZShzKT09IltvYmplY3QgT2JqZWN0XSIgKQ0KCQkJCXMgPSByZWN1ck9ialN0cihz", "KTsKCQkJdHJ5ewkJCQ0KCQkJCVdTY3JpcHQuU3RkT3V0LldyaXRlKHMpOw0KCQkJfWNhdGNo", "KGUpew0KCQkJCQoJCQkJdHJ5V3JpdGVTYWZlKFdTY3JpcHQuU3RkT3Uscyk7DQoJCQl9DQoJ", "CQlpZiAobG9nRnN0cm0pIHsNCgkJCQl0cnl7DQoJCQkJCWxvZ0ZzdHJtLldyaXRlKHMpOw0K", "CQkJCX1jYXRjaChlKXsNCgkJCQkJCgkJCQkJdHJ5V3JpdGVTYWZlKGxvZ0ZzdHJtLHMpOw0K", "CQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn07DQoKDQokZ2xvYmFsLmlzU3RkSW5SZWRpcmVjdCA9", "IGZ1bmN0aW9uKCl7DQoJdmFyIHJldCA9IChzaC5FbnZpcm9ubWVudCgiUHJvY2VzcyIpKSgi", "SlNIX1JFRElSRUNUSU4iKTsgCglpZiAoIHJldCA9PSAiIiApIHsKCQllY2hvKCJ3YXJuaW5n", "OnVuZGVmaW5lZCBlbnZpcm9ubWVudCB2YXJpYWJsZToiLCJKU0hfUkVESVJFQ1RJTiIpOw0K", "CQlyZXR1cm4gZmFsc2U7DQoJfQ0KCXJldHVybiAoIHJldCAhPSAiMCIpOw0KfQ0KJGdsb2Jh", "bC5pc1N0ZE91dFJlZGlyZWN0ID0gZnVuY3Rpb24oKXsNCgl2YXIgcmV0ID0gKHNoLkVudmly", "b25tZW50KCJQcm9jZXNzIikpKCJKU0hfUkVESVJFQ1RPVCIpOyAKCWlmICggcmV0ID09ICIi", "ICkgewoJCWVjaG8oIndhcm5pbmc6dW5kZWZpbmVkIGVudmlyb25tZW50IHZhcmlhYmxlOiIs", "IkpTSF9SRURJUkVDVE9UIik7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJcmV0dXJuICggcmV0", "ICE9ICIwIik7DQp9DQoNCgoNCgokZ2xvYmFsLmV4aXQgPSBmdW5jdGlvbiAoY29kZSxtc2cp", "ew0KCQoJCgkKDQoJdmFyIG1zZ1ZlYz0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn", "dW1lbnRzLDEpOw0KCQoJaWYgKG1zZ1ZlYy5sZW5ndGgpDQoJCWVjaG8uYXBwbHkodGhpcyxt", "c2dWZWMpOw0KCXdoaWxlKCAicHVzaCIgaW4gZXhpdCApIHsNCgkJaWYgKCAhKCJmaW5WZWMi", "IGluIGV4aXQpICkNCgkJCWJyZWFrOw0KCQlmb3IodmFyIGsgaW4gZXhpdC5maW5WZWMpew0K", "CQkJCgkJCShleGl0LmZpblZlY1trXSkoKTsNCgkJfQ0KCQlicmVhazsNCgl9DQoJaWYgKCAi", "YWRtaW5GdW5jIiBpbiBleGl0ICkgewoJCWV4aXQuYWRtaW5GdW5jKGNvZGUsbXNnVmVjLmpv", "aW4oIiIpKTsNCgl9DQoJdHJ5IHsgd3MucXVpdChjb2RlKTsgfSBjYXRjaChlKSB7DQoJCWVj", "aG8oInF1aXQgZXJyb3I6IixlKTsNCgkJdHJ5IHsNCgkJCQoJCQkKCQkJCgkJCXZhciBhY3Rj", "dHggPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiTWljcm9zb2Z0LldpbmRvd3MuQWN0Q3R4Iik7", "DQoJCQlhY3RjdHgubWFuaWZlc3QgPSAiTXlSZWdGcmVlQ09NU3J2Lm1hbmlmZXN0IjsNCgkJ", "CXZhciBvYmo7DQoJCQlvYmogPSBhY3RjdHguQ3JlYXRlT2JqZWN0KCJNeVJlZ0ZyZWVDT01T", "cnYuMSIpOyAKCQkJb2JqLmZvcmNlUXVpdCggY2FzdEkoY29kZSkgKTsgCgkJfSBjYXRjaChl", "ZSl7DQoJCQllY2hvKCJlcnJvcjpDaGFrcmHntYLkuoZETEzjgYzliKnnlKjjgafjgY3jgb7j", "gZvjgpMoTXlSZWdGcmVlQ09NU3J2LmRsbCkiKTsNCgkJfQ0KCX07Cn0NCg0KJGdsb2JhbC5l", "eGl0LnB1c2ggPSBmdW5jdGlvbiggZiApIHsNCglpZiAoICEoImZpblZlYyIgaW4gZXhpdCkg", "KXsNCgkJZXhpdC5maW5WZWMgPSBbXTsNCgl9DQoJZXhpdC5maW5WZWMucHVzaChmKTsNCgly", "ZXR1cm4gdGhpczsNCn0NCiRnbG9iYWwuZXhpdC5zZXRBZG1pbkNhbGwgPSBmdW5jdGlvbigg", "ZiApIHsgZXhpdC5hZG1pbkZ1bmMgPSBmOyByZXR1cm4gdGhpczsgfTsNCg0KCg0KJGdsb2Jh", "bC5pc0FkbWluID0gZnVuY3Rpb24gKCkgew0KCQ0KCXJldHVybiggIShkb0NtZCh7ZWNobzpm", "YWxzZX0sIm9wZW5maWxlcyIpLmV4aXRDb2RlKSk7DQp9DQoNCgoNCiRnbG9iYWwucmVUaHJv", "dyA9IGZ1bmN0aW9uKGZ1bmNOYW1lLG1lc3NhZ2UpIHsKCXZhciBtc2c9IlxuLT5jYWxsIGVy", "cm9yOiIrZnVuY05hbWUrIigpOiI7DQoJZm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3Ro", "O2krKykgew0KCQltc2cgKz0gKChpIT0xKT8iLCI6IiIpICsgYXJndW1lbnRzW2ldIDsNCgl9", "DQoJCgl2YXIgdXBBcmcgPSBhcmd1bWVudHMuY2FsbGVlLmNhbGxlci5hcmd1bWVudHM7DQoJ", "aWYgKGlzT2sodXBBcmcpICYmIHVwQXJnLmxlbmd0aCl7DQoJCW1zZyArPSAiXG5hcmcgc3Rh", "Y2siKyIoIitmdW5jTmFtZSsiKVxuIjsNCgkJZm9yKHZhciBpPTA7aTx1cEFyZy5sZW5ndGg7", "aSsrKSB7DQoJCQl2YXIgdiA9ICIiOw0KCQkJc3dpdGNoKGdldE9iamVjdFR5cGUodXBBcmdb", "aV0pKXsNCgkJCWNhc2UgIltvYmplY3QgU3RyaW5nXSI6DQoJCQljYXNlICJbb2JqZWN0IE51", "bWJlcl0iOg0KCQkJY2FzZSAiW29iamVjdCBCb29sZWFuXSI6DQoJCQkJdiA9IHVwQXJnW2ld", "Ow0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiW29iamVjdCBGdW5jdGlvbl0iOiB2ID0gIihmdW5j", "dGlvbikiO2JyZWFrOw0KCQkJY2FzZSAiW29iamVjdCBSZWdFeHBdIjoJICB2ID0gIihyZWdl", "eHApIjticmVhazsNCgkJCWNhc2UgIltvYmplY3QgT2JqZWN0XSI6CSAgdiA9ICIob2JqZWN0", "KSI7YnJlYWs7DQoJCQljYXNlICJbb2JqZWN0IEFycmF5XSI6CSAgdiA9ICIoYXJyYXkpIjti", "cmVhazsNCgkJCX0NCgkJCW1zZyArPSAiWyIraSsiXToiICsgdiArIlxuIjsNCgkJfQkNCgl9", "DQoJdGhyb3cgRXJyb3IoMHg4MDBBMDFCNixtc2cpOw0KfQ0KDQoKDQokZ2xvYmFsLmVzY2Fw", "ZUhUTUwgPSBmdW5jdGlvbihzKXtyZXR1cm4gcy5yZXBsYWNlKC9bJiI8PiwnXS9nLCANCgkJ", "CWZ1bmN0aW9uIChjKSB7cmV0dXJuIHsnJic6JyZhbXA7JywnIic6JyZxdW90OycsJzwnOicm", "bHQ7JywgJz4nOicmZ3Q7JywgJywnOicmIzA0NDsnLCAnXCcnOicmIzAzOTsnfVtjXTt9KTt9", "DQokZ2xvYmFsLnVuZXNjYXBlSFRNTCA9IGZ1bmN0aW9uKHMpe3JldHVybiBzLnJlcGxhY2Uo", "IC8mYW1wO3wmcXVvdDt8Jmx0O3wmZ3Q7fCYjMDQ0O3wmIzAzOTsvZywNCgkJCWZ1bmN0aW9u", "IChjKSB7cmV0dXJuIHsnJmFtcDsnOicmJywnJnF1b3Q7JzonIicsJyZsdDsnOic8JywnJmd0", "Oyc6Jz4nLCcmIzA0NDsnOicsJywnJiMwMzk7JzonXCcnfVtjXTt9KTt9DQokZ2xvYmFsLmVz", "Y2FwZVVSTCAJCT0gZnVuY3Rpb24ocykJe3JldHVybiBlbmNvZGVVUkwocyk7fQ0KJGdsb2Jh", "bC51bmVzY2FwZVVSTCAJPSBmdW5jdGlvbih1cmwpCXtyZXR1cm4gZGVjb2RlVVJJKHVybCk7", "fQ0KJGdsb2JhbC5lc2NhcGVVUkwgCQk9IGZ1bmN0aW9uKHMpCXtyZXR1cm4gZW5jb2RlVVJJ", "KHMpO30NCiRnbG9iYWwudW5lc2NhcGVVUkwgCT0gZnVuY3Rpb24odXJsKQl7cmV0dXJuIGRl", "Y29kZVVSSSh1cmwpO30NCiRnbG9iYWwuZXNjYXBlVVJMRW0gCT0gZnVuY3Rpb24ocykJe3Jl", "dHVybiBlbmNvZGVVUklDb21wb25lbnQocyk7fQ0KJGdsb2JhbC51bmVzY2FwZVVSTEVtIAk9", "IGZ1bmN0aW9uKHVybEVtKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHVybEVtKTt9DQoK", "U3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MIAk9IGZ1bmN0aW9uKCl7IHJldHVybiBlc2Nh", "cGVIVE1MKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBlLnVuZXNjYXBlSFRNTCAJPSBmdW5j", "dGlvbigpeyByZXR1cm4gdW5lc2NhcGVIVE1MKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBl", "LmVzY2FwZVVSTCAJCT0gZnVuY3Rpb24oKXsgcmV0dXJuIGVzY2FwZVVSTCh0aGlzKTsgfQ0K", "U3RyaW5nLnByb3RvdHlwZS51bmVzY2FwZVVSTCAJPSBmdW5jdGlvbigpeyByZXR1cm4gdW5l", "c2NhcGVVUkwodGhpcyk7IH0NClN0cmluZy5wcm90b3R5cGUuZXNjYXBlVVJMRW0gCT0gZnVu", "Y3Rpb24oKXsgcmV0dXJuIGVzY2FwZVVSTEVtKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBl", "LnVuZXNjYXBlVVJMRW0gCT0gZnVuY3Rpb24oKXsgcmV0dXJuIHVuZXNjYXBlVVJMRW0odGhp", "cyk7IH0NClN0cmluZy5wcm90b3R5cGUuZXNjYXBlIAkJPSBmdW5jdGlvbigpeyByZXR1cm4g", "ZXNjYXBlKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBlLnVuZXNjYXBlIAkJPSBmdW5jdGlv", "bigpeyByZXR1cm4gdW5lc2NhcGUodGhpcyk7IH0NCg0KCg0KU3RyaW5nLnByb3RvdHlwZS5p", "Y21wID0gZnVuY3Rpb24oczIpIHsgcmV0dXJuICh0aGlzLnRvTG93ZXJDYXNlKCkgPT0gczIu", "dG9Mb3dlckNhc2UoKSk7IH07DQoKDQoKDQpTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VBbGwg", "PSBmdW5jdGlvbihfYmVmb3JlLF9hZnRlcil7dmFyIHJlID0gKHR5cGVPZihfYmVmb3JlKT09", "InJlZ2V4cCIpPyBfYmVmb3JlOiByZW1ha2VSRSgvQC9nLCJAIixfYmVmb3JlKTsgcmV0dXJu", "IHRoaXMucmVwbGFjZShyZSxfYWZ0ZXIpO30NCgkKCQoNCiRnbG9iYWwuX3JlcGxhY2VHID0g", "ZnVuY3Rpb24oKSB7DQoJdmFyIHNyY1N0ciA9IGFyZ3VtZW50c1swXTsNCgl2YXIgcmUgPSBh", "cmd1bWVudHNbMV07DQoJdmFyIHJlcFZlYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh", "cmd1bWVudHMsMik7CgkKCXZhciBvdCA9IHNyY1N0ci5yZXBsYWNlKHJlLGZ1bmN0aW9uKCl7", "DQoJCXZhciBhZyA9IGFyZ3VtZW50czsNCgkJdmFyIG1hdGNoU3RyID0gYWdbMF07IAoJCWlm", "ICggYWcubGVuZ3RoIDw9IDMgKSB7CgkJCXJldHVybiAocmVwVmVjWzBdKTsNCgkJfQ0KCQl2", "YXIgcmVwVmVjQ291bnRlcj0wOw0KCQl2YXIgcmVwRGljID0gW107DQoJCWZvcih2YXIgaT0x", "OyBpIDwgYWcubGVuZ3RoIDsgaSsrICl7DQoJCQlpZiAoIHR5cGVPZihhZ1tpXSkgPT09ICdu", "dW1iZXInICkgYnJlYWs7IAoJCQl2YXIgZCA9IHt9Ow0KCQkJaWYgKCBhZ1tpXSA9PSBudWxs", "ICkgeyByZXBWZWNDb3VudGVyKys7IGNvbnRpbnVlOyB9IAoJCQlkW2FnW2ldXSA9ICggcmVw", "VmVjQ291bnRlciA8IHJlcFZlYy5sZW5ndGggKSA/IHJlcFZlY1tyZXBWZWNDb3VudGVyKytd", "IDogYWdbaV07CgkJCXJlcERpYy5wdXNoKCBkICkgOw0KCQl9DQoJCXJldHVybiAoDQoJCQkK", "CQkJKGZ1bmN0aW9uKHNyYyx2ZWMpIHsKCQkJCXZhciBvdD0iIjsNCgkJCQlmb3IoIHZhciBp", "ID0gMDsgaSA8IHZlYy5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgZGljID0gdmVjW2ldOw0K", "CQkJCQlmb3IodmFyIGsgaW4gZGljKSB7DQoJCQkJCQl2YXIgcG9zID0gc3JjLmluZGV4T2Yo", "ayk7DQoJCQkJCQlpZiAoIHBvcyA9PSAtMSApIHJldHVybiAiIjsJCgkJCQkJCWlmICggcG9z", "ICE9ICAwICkgb3QgKz0gc3JjLnNsaWNlKDAsIHBvcyk7IAoJCQkJCQlvdCArPSBkaWNba107", "CQoJCQkJCQlzcmMgPSBzcmMuc2xpY2UocG9zK2subGVuZ3RoKTsKCQkJCQl9DQoJCQkJfQ0K", "CQkJCXJldHVybiAoIG90ICsgc3JjICk7DQoJCQl9KShtYXRjaFN0cixyZXBEaWMpDQoJCSk7", "DQoJfSk7DQoJcmV0dXJuIG90Ow0KfQ0KU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlRyA9IGZ1", "bmN0aW9uKCAgKXsNCgl2YXIgYXIgPSBbdGhpc10uY29uY2F0KEFycmF5LnByb3RvdHlwZS5z", "bGljZS5jYWxsKGFyZ3VtZW50cykpOwoJcmV0dXJuIF9yZXBsYWNlRy5hcHBseShudWxsLGFy", "KTsNCn0NCg0KCg0KClN0cmluZy5wcm90b3R5cGUucmVwZWF0ID0gZnVuY3Rpb24oY250KSB7", "IHJldHVybiBBcnJheShjbnQqMSsxKS5qb2luKHRoaXMpOyB9Ow0KCg0KCg0KdmFyIGdldEhh", "bGZMZW5ndGggPSBmdW5jdGlvbiAocyl7DQoJCgl2YXIgY250ID0gMDsNCglmb3IodmFyIGk9", "MDtpPHMubGVuZ3RoO2krKykgew0KCQl2YXIgYyA9IHMuY2hhckNvZGVBdChpKTsNCgkJY250", "ICs9ICgoYz49MHgwMCYmYzwweDgxKXx8KGM9PT0weGY4ZjApfHwoYz49MHhmZjYxJiZjPDB4", "ZmZhMCl8fChjPj0weGY4ZjEmJmM8MHhmOGY0KSkgPyAxOjI7IAoJfQ0KCXJldHVybiBjbnQ7", "DQp9DQokZ2xvYmFsLnRvUGFkZGluZ1N0ciA9IGZ1bmN0aW9uKHMsIHcsIGRpckxSLCBwYWRD", "aGFyKSB7DQoJdmFyIExSID0gZGlyTFI7CglpZih0eXBlT2YocykgIT0gInN0cmluZyIpCQlz", "ID0gcy50b1N0cmluZygpOw0KCWlmKHBhZENoYXI9PXVuZGVmaW5lZCkJCQlwYWRDaGFyPSIw", "IjsNCglpZih0eXBlT2YocGFkQ2hhcikgIT0gInN0cmluZyIpCXBhZENoYXIgPSBwYWRDaGFy", "LnRvU3RyaW5nKCk7CQ0KCWlmKExSPT11bmRlZmluZWQpCQkJCUxSPSJSIjsNCglMUiA9IExS", "LmNoYXJBdCgwKTsNCgl2YXIgbGVuID0gZ2V0SGFsZkxlbmd0aChzKTsKCWlmKGxlbiA8IHcp", "IHsNCgkJdmFyIGMgPSAoIHBhZENoYXIubGVuZ3RoIDwgMSApID8gIiAiIDogcGFkQ2hhcjsN", "CgkJdmFyIG5QYWRSZXBlYXQgPSBNYXRoLmNlaWwoICh3LWxlbikvYy5sZW5ndGggKTsNCgkJ", "aWYgICAgICAgKChMUj09IkwiKXx8KExSPT0iPCIpfHwoTFI9PSIrIikpIHsJCQoJCQl3aGls", "ZSh3Pj1nZXRIYWxmTGVuZ3RoKHMrYykpDQoJCQkJcyA9IHMgKyBjOw0KCQl9IGVsc2UgaWYo", "KExSPT0iTSIpfHwoTFI9PSJeIikpICB7CQkJCgkJCWZvcih2YXIgaT0wO3c+PWdldEhhbGZM", "ZW5ndGgoYytzKTtpKyspew0KCQkJCXMgPSAoKGklMik9PTApID8gKGMrcyk6KHMrYyk7CQkK", "CQkJfQ0KCQl9IGVsc2UgeyAgCgkJCXdoaWxlKHc+PWdldEhhbGZMZW5ndGgoYytzKSkNCgkJ", "CQlzID0gYyArIHM7DQoJCX0NCgl9DQoJcmV0dXJuIHM7DQp9DQpTdHJpbmcucHJvdG90eXBl", "LnRvUGFkID0gZnVuY3Rpb24odyxkaXJMUixwYWRDaGFyKSB7DQoJcmV0dXJuIHRvUGFkZGlu", "Z1N0cih0aGlzLHcsZGlyTFIscGFkQ2hhcik7DQp9DQoNCgoNCiRnbG9iYWwuZ2V0Rm10RGF0", "ZSA9IGZ1bmN0aW9uKGZtdCxpbkRhdGUpew0KCWlmICggaW5EYXRlIGluc3RhbmNlb2YgRGF0", "ZSApIHsNCgkJCgl9IGVsc2UgaWYgKCB0eXBlb2YoaW5EYXRlKSA9PSAnbnVtYmVyJyApew0K", "CQlpbkRhdGUgPSBuZXcgRGF0ZShpbkRhdGUpOwoJfSBlbHNlIGlmICggdHlwZW9mKGluRGF0", "ZSkgPT0gJ3N0cmluZycpew0KCQlpbkRhdGUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKGluRGF0", "ZSkpOw0KCX0gZWxzZSB7DQoJCWluRGF0ZT0gaXNOb25lKGluRGF0ZSkgPyAobmV3IERhdGUo", "KSkgOiAobmV3IERhdGUoaW5EYXRlKSk7IAoJCQoJfQ0KCXZhciBkID0gaXNOb25lKGluRGF0", "ZSkgPyAobmV3IERhdGUoKSkgOmluRGF0ZTsNCgl2YXIgdmVjID0geyAiWSI6ZC5nZXRGdWxs", "WWVhcigpLCAiTSI6KGQuZ2V0TW9udGgoKSsxKSwgIkQiOmQuZ2V0RGF0ZSgpLA0KCQkiaCI6", "ZC5nZXRIb3VycygpLCAibSI6ZC5nZXRNaW51dGVzKCksICJzIjpkLmdldFNlY29uZHMoKSwg", "InoiOmQuZ2V0TWlsbGlzZWNvbmRzKCl9Ow0KCWlmICggaXNOb25lKGZtdCkgfHwgKGZtdD09", "Ii0iKSApIHsNCgkJZm10ID0gIllZWVktTU0tRERUaGg6bW06c3Muenp6IjsNCgl9IGVsc2Ug", "aWYgKCBmbXQgPT0gIlMiICkgew0KCQlmbXQgPSAiWVlZWU1NRERoaG1tc3N6enoiOw0KCX0g", "ZWxzZSBpZiAoIGZtdCA9PSAiLyIgKSB7IA0KCQlmbXQgPSAiWVlZWS9NTS9ERCBoaDptbTpz", "cy56enoiOyAKCX0gDQoJdmFyIG90ID0gZm10LnJlcGxhY2UoDQoJCS8oW15ZTURobXN6XSop", "KCg/OltZXSt8W01dK3xbRF0rfFtoXSt8W21dK3xbc10rfFt6XSspKS9nLA0KCQlmdW5jdGlv", "bihhbGwsZSxtKSB7DQoJCQl2YXIgYyA9IG0uY2hhckF0KDApOw0KCQkJaWYgKCAhKGMgaW4g", "dmVjKSApIHJldHVybihlK20pOw0KCQkJdmFyIHYgPSBjYXN0Uyh2ZWNbY10pOwoJCQlpZiAo", "IGMgPT0gJ1knICYmIChtLmxlbmd0aCA8IDQpKSB7IAoJCQkJdiA9IHYuc3Vic3RyKG0ubGVu", "Z3RoKTsNCgkJCX0NCgkJCXJldHVybiAoIGUgKyB2LnRvU3RyaW5nKCkudG9QYWQobS5sZW5n", "dGgsIj4iKSApOw0KCQl9DQoJKTsNCglyZXR1cm4gb3Q7DQp9Cg0KCg0KJGdsb2JhbC5nZXRJ", "c284NjAxRGF0ZSA9IGZ1bmN0aW9uKGlzbykgew0KCXZhciBwYXJzZSA9IGlzby5tYXRjaCgv", "XihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0pXCtcZHsy", "fTpcZHsyfS8pOwoJdmFyIG1zZWM9MDsNCglpZiAoICFwYXJzZSApIHsNCgkJcGFyc2UgPSAg", "IGlzby5tYXRjaCgvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KToo", "XGR7Mn0pKC5cZCspWi8pOwkJCQoJCW1zZWMgPSAgTWF0aC5mbG9vcihwYXJzZVs3XSoxMDAw", "KTsNCgl9DQoJcmV0dXJuIG5ldyBEYXRlKCBOdW1iZXIocGFyc2VbMV0pLCBOdW1iZXIocGFy", "c2VbMl0pLTEsIE51bWJlcihwYXJzZVszXSksIE51bWJlcihwYXJzZVs0XSksIE51bWJlcihw", "YXJzZVs1XSksIChwYXJzZVs2XSksbXNlYyApOw0KfTsNCg0KCg0KJGdsb2JhbC5UaW1lR2V0", "VGltZVN0cmluZyA9IGZ1bmN0aW9uKG1zZWMpew0KCQ0KCXZhciBtaWxsaV9zZWMgPSBtc2Vj", "ICUgMTAwMDsNCgltc2VjID0gKG1zZWMgLSBtaWxsaV9zZWMpIC8gMTAwMDsNCgl2YXIgc2Vj", "ID0gbXNlYyAlIDYwOw0KCW1zZWMgPSAobXNlYyAtIHNlYykgLyA2MDsNCgl2YXIgbWluID0g", "bXNlYyAlIDYwOw0KCXZhciBob3UgPSAobXNlYyAtIG1pbikgLyA2MDsNCgkKCXJldHVybiBo", "b3UgICsgIjoiICsNCgkJKChtaW4gPCAxMCkgPyAiMCIgOiAiIikgKyBtaW4gKyAiOiIgKw0K", "CQkoKHNlYyA8IDEwKSA/ICIwIiA6ICIiKSArIHNlYyArICIuIiArDQoJCSgobWlsbGlfc2Vj", "IDwgMTAwKSA/ICIwIiA6ICIiKSArICgobWlsbGlfc2VjIDwgMTApID8gIjAiIDogIiIpICsg", "bWlsbGlfc2VjOw0KfQ0KDQokZ2xvYmFsLm1TZWNUb1RpbWUgPSBmdW5jdGlvbihtc2VjKXsN", "Cgl2YXIgbiA9IG5ldyBEYXRlKG1zZWMpOw0KCXJldHVybiBuOw0KfQ0KDQoKCQ0KJGdsb2Jh", "bC5jcmVhdGVTdG9wV2F0Y2ggPSBmdW5jdGlvbigpIHsgCgl2YXIgbyA9IHt9Ow0KCXZhciBp", "bnNTdFRpbWUgPSBuZXcgRGF0ZSgpOw0KCXZhciBpbnNFblRpbWUgPSBpbnNTdFRpbWU7DQoJ", "by5zdFRpbWUgPSBuZXcgRGF0ZSgpOw0KCW8uZW5UaW1lID0gby5zdFRpbWU7DQoJby5zdGFy", "dCA9IGZ1bmN0aW9uKCkgeyBvLnN0VGltZSA9IG5ldyBEYXRlKCk7IHJldHVybiB0aGlzOyB9", "DQoJby5zdG9wICA9IGZ1bmN0aW9uKCkgeyBvLmVuVGltZSA9IG5ldyBEYXRlKCk7IHJldHVy", "biB0aGlzLmRpZmYoKTsgfQ0KCW8uZGlmZlRpbWUgID0gZnVuY3Rpb24oKSB7IHJldHVybihv", "LmVuVGltZSAtIG8uc3RUaW1lKTt9DQoJby5kaWZmICA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g", "KFRpbWVHZXRUaW1lU3RyaW5nKG8uZGlmZlRpbWUoKSkpOyB9DQoJcmV0dXJuIG87DQp9DQoN", "CgoNCiRnbG9iYWwuZ2V0Q3VycmVudERhdGUgPSBmdW5jdGlvbihjKQ0KeyAgIAoJaWYgKCBj", "ID09ICdTJyApIHsNCgkJcmV0dXJuIGdldEZtdERhdGUoJ1MnKTsNCgl9IA0KCXJldHVybiBn", "ZXRGbXREYXRlKCctJyk7DQoKCgoKCgoKCgoKCgoKCn0NCg0KCiRnbG9iYWwuc3RyRGF0ZSA9", "IGZ1bmN0aW9uKGRhdGUpIHsJDQoNCglyZXR1cm4gZ2V0Rm10RGF0ZSgnLycsZGF0ZSk7DQoJ", "CgkKCQoJCgkKCQoJCgkKCQp9Ow0KDQoKDQpTdHJpbmcucHJvdG90eXBlLmdldEZpbGVOYW1l", "IAk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXRGaWxlTmFtZSh0aGlzKTt9DQpTdHJpbmcu", "cHJvdG90eXBlLmdldEZ1bGxQYXRoIAk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXRBYnNv", "bHV0ZVBhdGhOYW1lKHRoaXMpO30NClN0cmluZy5wcm90b3R5cGUuZ2V0QmFzZU5hbWUgCT0g", "ZnVuY3Rpb24oKXtyZXR1cm4gZnNvLkdldEJhc2VOYW1lKHRoaXMpO30NClN0cmluZy5wcm90", "b3R5cGUuZ2V0UGFyZW50UGF0aAk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXRQYXJlbnRG", "b2xkZXJOYW1lKGZzby5HZXRBYnNvbHV0ZVBhdGhOYW1lKHRoaXMpKTt9DQpTdHJpbmcucHJv", "dG90eXBlLmdldERyaXZlCQk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXREcml2ZU5hbWUo", "ZnNvLkdldEFic29sdXRlUGF0aE5hbWUodGhpcykpO30NClN0cmluZy5wcm90b3R5cGUuZ2V0", "RXh0CQkJPSBmdW5jdGlvbigpe3JldHVybiBmc28uR2V0RXh0ZW5zaW9uTmFtZShmc28uR2V0", "QWJzb2x1dGVQYXRoTmFtZSh0aGlzKSk7fQ0KDQoKDQpTdHJpbmcucHJvdG90eXBlLkZOID0g", "ZnVuY3Rpb24oc2V0Tikgew0KCWlmICggc2V0TiA9PSB1bmRlZmluZWQgKSANCgkJcmV0dXJu", "IGZzby5HZXRGaWxlTmFtZSh0aGlzKTsNCglyZXR1cm4gbWFrZVBhdGgodGhpcy5nZXRQYXJl", "bnRQYXRoKCksIHNldE4gKTsNCn0NClN0cmluZy5wcm90b3R5cGUuRlAgPSBmdW5jdGlvbihz", "ZXROKSB7DQoJaWYgKCBzZXROID09IHVuZGVmaW5lZCApDQoJCXJldHVybiB0aGlzLmdldEZ1", "bGxQYXRoKCk7DQoJcmV0dXJuIHNldE4gOwp9DQpTdHJpbmcucHJvdG90eXBlLkJOID0gZnVu", "Y3Rpb24oc2V0Tikgew0KCWlmICggc2V0TiA9PSB1bmRlZmluZWQgKQ0KCQlyZXR1cm4gdGhp", "cy5nZXRCYXNlTmFtZSgpOw0KCXJldHVybiBtYWtlUGF0aCh0aGlzLmdldFBhcmVudFBhdGgo", "KSwgc2V0TiArICIuIiArIHRoaXMuZ2V0RXh0KCkgKTsNCn0NClN0cmluZy5wcm90b3R5cGUu", "UEEgPSBTdHJpbmcucHJvdG90eXBlLlBSID0gZnVuY3Rpb24oc2V0Tikgew0KCWlmICggc2V0", "TiA9PSB1bmRlZmluZWQgKQ0KCQlyZXR1cm4gdGhpcy5nZXRQYXJlbnRQYXRoKCk7DQoJcmV0", "dXJuIG1ha2VQYXRoKHNldE4sIHRoaXMuZ2V0RmlsZU5hbWUoKSk7DQp9DQpTdHJpbmcucHJv", "dG90eXBlLkRSID0gZnVuY3Rpb24oc2V0Tikgew0KCWlmICggc2V0TiA9PSB1bmRlZmluZWQg", "KQ0KCQlyZXR1cm4gdGhpcy5nZXREcml2ZSgpOw0KCXJldHVybiBtYWtlUGF0aCggKHRoaXMu", "Z2V0UGFyZW50UGF0aCgpKS5yZXBsYWNlKHRoaXMuZ2V0RHJpdmUoKSxzZXROKSwgIHRoaXMu", "Z2V0RmlsZU5hbWUoKSApOw0KfQ0KU3RyaW5nLnByb3RvdHlwZS5FWCA9IGZ1bmN0aW9uKHNl", "dE4pIHsNCglpZiAoIHNldE4gPT0gdW5kZWZpbmVkICkgDQoJCXJldHVybiB0aGlzLmdldEV4", "dCgpOw0KCXJldHVybiBtYWtlUGF0aCh0aGlzLmdldFBhcmVudFBhdGgoKSwgIHRoaXMuZ2V0", "QmFzZU5hbWUoKSArICIuIiArIHNldE4pOw0KfQ0KClN0cmluZy5wcm90b3R5cGUudXAgPSBm", "dW5jdGlvbihzZXROKSB7DQoJaWYgKCBzZXROID09IHVuZGVmaW5lZCApIHsgDQoJCWlmICgg", "dGhpcyA9PSAiIiApIA0KCQkJcmV0dXJuIHRoaXM7CgkJcmV0dXJuIHRoaXMuUFIoKTsNCgl9", "DQoJcmV0dXJuIHRoaXMuRk4oc2V0Tik7Cn0NClN0cmluZy5wcm90b3R5cGUuZG93biA9IGZ1", "bmN0aW9uKHNldE4pIHsNCglpZiAoIHNldE4gPT0gdW5kZWZpbmVkICkNCgkJcmV0dXJuIHRo", "aXM7DQoJdmFyIHY9W107DQoJZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykJ", "CgkJdi5wdXNoKGFyZ3VtZW50c1tpXSk7DQoJcmV0dXJuICggdGhpcyArICJcXCIgKyB2Lmpv", "aW4oIlxcIikgKTsNCgkKfQ0KDQoKDQpTdHJpbmcucHJvdG90eXBlLmlzRXhpc3RGaWxlID0g", "ZnVuY3Rpb24oKXtyZXR1cm4gZnNvLkZpbGVFeGlzdHMoZnNvLkdldEFic29sdXRlUGF0aE5h", "bWUodGhpcykpO30NClN0cmluZy5wcm90b3R5cGUuaXNFeGlzdEZvbGRlciA9IGZ1bmN0aW9u", "KCl7cmV0dXJuIGZzby5Gb2xkZXJFeGlzdHMoZnNvLkdldEFic29sdXRlUGF0aE5hbWUodGhp", "cykpO30NClN0cmluZy5wcm90b3R5cGUuaXNFeGlzdCA9IGZ1bmN0aW9uKCl7CglpZiAoIHRo", "aXMuaXNFeGlzdEZvbGRlcigpIHx8IHRoaXMuaXNFeGlzdEZpbGUoKSApCXJldHVybiB0cnVl", "Ow0KCXJldHVybiBmYWxzZTsNCn0NCg0KCg0KJGdsb2JhbC5nZXRDdXJyZW50UGF0aCA9IGZ1", "bmN0aW9uKGFkZHBhdGgpIHsNCiAgICByZXR1cm4od3MuU2NyaXB0RnVsbE5hbWUucmVwbGFj", "ZSh3cy5TY3JpcHROYW1lLCFhZGRwYXRoPyIiOmFkZHBhdGgpKTsNCn0NCg0KaWYgKCAwICkg", "ew0KCgpBcnJheS5wcm90b3R5cGUudW5pcSA9IGZ1bmN0aW9uKCl7DQogICAgdmFyIHRhID0g", "dGhpcy5zb3J0KCk7DQogICAgdmFyIHJhID0gbmV3IEFycmF5KCk7DQogICAgdmFyIHRsID0g", "bnVsbDsNCiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGEubGVuZ3RoIDsgaSsrKXsNCiAgICAg", "ICAgaWYodGwgIT0gdGFbaV0pew0KICAgICAgICAgICAgdGwgPSB0YVtpXTtyYS5wdXNoKHRs", "KTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gcmE7DQp9Ow0KCkFycmF5LnByb3Rv", "dHlwZS5tZXJnZSA9IGZ1bmN0aW9uKHYpew0KICAgIGZvcih2YXIgaSA9IDA7IGkgPCB2Lmxl", "bmd0aCA7IGkrKyl7DQogICAgICAgIHRoaXMucHVzaCh2W2ldKTsNCiAgICB9DQogICAgcmV0", "dXJuIHRoaXM7DQp9Ow0KDQoKQXJyYXkucHJvdG90eXBlLmVjaG8gPSBmdW5jdGlvbigpew0K", "ICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCA7IGkrKyl7DQogICAgICAgIHBy", "aW50bG4odGhpc1tpXSk7DQogICAgfQ0KICAgIHJldHVybiBmYWxzZTsNCn07DQoKQXJyYXku", "cHJvdG90eXBlLnB1dHMgPSBmdW5jdGlvbigpew0KICAgIHRoaXMuZWNobygpDQp9Ow0KDQp9", "Cg0KCg0KJGdsb2JhbC5yZXBsYWNlRXh0ID0gZnVuY3Rpb24oZmlsZU5hbWUsZXh0KQ0Kew0K", "CXZhciByZT0vXC4oW15cLl0qKSQvOw0KCXJldHVybigNCgkJZmlsZU5hbWUucmVwbGFjZShy", "ZSwiIikgKyBleHQgDQoJKTsNCn0NCgoNCiRnbG9iYWwuZ2V0RXh0ID0gZnVuY3Rpb24oZmls", "ZU5hbWUpIHsNCiAgaWYgKCFmaWxlTmFtZSkgew0KICAgIHJldHVybiAiIjsNCiAgfQ0KICB2", "YXIgZmlsZVR5cGVzID0gZmlsZU5hbWUuc3BsaXQoIi4iKTsNCiAgdmFyIGxlbiA9IGZpbGVU", "eXBlcy5sZW5ndGg7DQogIGlmIChsZW4gPT09IDApIHsNCiAgICByZXR1cm4gIiI7DQogIH0N", "CiAgcmV0dXJuIGZpbGVUeXBlc1tsZW4tMV07DQp9DQoKDQoKDQokZ2xvYmFsLm1ha2VBcmcg", "PSBmdW5jdGlvbihhcmd1bWVudHNPYmplY3QpIHsNCgkKCWlmICggYXJndW1lbnRzT2JqZWN0", "ID09IHVuZGVmaW5lZCApIHsNCgkJYXJndW1lbnRzT2JqZWN0ID0gV1NjcmlwdC5Bcmd1bWVu", "dHM7DQoJfQ0KCXZhciBhcmdzID0gYXJndW1lbnRzT2JqZWN0Ow0KCXZhciBvYmogPSB7fTsN", "CglvYmouZmxnID0gImkiOwkJCglvYmouYXJnVmFsdWUgPSBbXTsJCgkKCQoJdmFyIGlzV1NG", "bGcgPSBmYWxzZTsNCg0KCXRyeSB7DQoJCWlmICggV1NjcmlwdC5Bcmd1bWVudHMgPT0gYXJn", "cykgeyAKCQkJaXNXU0ZsZyA9IHRydWU7DQoJCX0gZWxzZSBpZiAoIGFyZ3MgaW5zdGFuY2Vv", "ZiBBcnJheSApewoJCQk7DQoJCX0gZWxzZSB7IAoJCQk7DQoJCX0NCgl9IGNhdGNoKGUpew0K", "CQk7Cgl9DQoJZm9yKHZhciBpID0gMDtpIDwgYXJncy5sZW5ndGg7IGkrKyApIHsNCgkJb2Jq", "LmFyZ1ZhbHVlW2ldID0gKGlzV1NGbGcpID8gYXJncyhpKSA6IGFyZ3NbaV07DQoJfQ0KCQ0K", "CXZhciBkZWxLZXkgPSAiL19ERUxFVEVfS0VZXyI7DQoJb2JqLmdldExlbiA9IGZ1bmN0aW9u", "KCkgeyANCgkJCgkJdmFyIGNudCA9IDA7DQoJCWZvcih2YXIgaT0wO2k8b2JqLmFyZ1ZhbHVl", "Lmxlbmd0aDtpKyspew0KCQkJaWYgKCBvYmouYXJnVmFsdWVbaV0gPT0gZGVsS2V5ICkgew0K", "CQkJCWNvbnRpbnVlOwoJCQl9DQoJCQljbnQrKw0KCQl9DQoJCXJldHVybiBjbnQ7DQoJCQoJ", "fTsNCglvYmouZ2V0ViA9IGZ1bmN0aW9uKCBuICkgew0KCQkKCQl2YXIgY250PTA7DQoJCWZv", "cih2YXIgaT0wO2k8b2JqLmFyZ1ZhbHVlLmxlbmd0aDtpKyspew0KCQkJaWYgKCBvYmouYXJn", "VmFsdWVbaV0gPT0gZGVsS2V5ICkgew0KCQkJCWNvbnRpbnVlOwoJCQl9DQoJCQlpZiAoIG4g", "PT0gY250ICkgew0KCQkJCXJldHVybiBvYmouYXJnVmFsdWVbaV07DQoJCQl9DQoJCQljbnQr", "Kw0KCQl9DQoJCXJldHVybiBudWxsOw0KDQoJCQoJCQoJCQoJCQoJfTsNCglvYmouaXNFeGlz", "dCA9IGZ1bmN0aW9uKCBrZXlQYXR0ZXJuICkgew0KCQkKCQl2YXIgdXNlVmFsID0gZmFsc2UN", "CgkJcGF0UiAgPSAiXltcXC8tXSsoIiArIGtleVBhdHRlcm4gKyAiKSQiOwkKCQl2YXIgcmUg", "PSBuZXcgUmVnRXhwKHBhdFIsb2JqLmZsZyk7DQoJCXZhciBhciA9IG51bGw7DQoJCWZvcih2", "YXIgaSBpbiBvYmouYXJnVmFsdWUgKXsNCgkJCWFyID0gcmUuZXhlYyhvYmouYXJnVmFsdWVb", "aV0pDQoJCQlpZiAoIGFyICE9IG51bGwgKSANCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQly", "ZXR1cm4gZmFsc2U7DQoJfQ0KCW9iai5zZXRDYXNlID0gZnVuY3Rpb24oYikgew0KCQlpZiAo", "IGIgPT0gdHJ1ZSApIHsNCgkJCW9iai5mbGcgPSAiIjsgCgkJfSBlbHNlIHsNCgkJCW9iai5m", "bGcgPSAiaSI7DQoJCX0NCgl9DQoJb2JqLmdldCA9IGZ1bmN0aW9uKCBrZXlQYXR0ZXJuLCB2", "YWxQYXR0ZXJuICkgew0KCQkKCQl2YXIgcGF0Ow0KCQl2YXIgdXNlVmFsID0gdHJ1ZTsNCgkJ", "dmFyIGJGaW5kS2V5ID0gZmFsc2U7DQoJCWlmICggYXJndW1lbnRzLmxlbmd0aCA8IDIgKSB7", "CgkJCXVzZVZhbCA9IGZhbHNlOw0KCQkJdmFsUGF0dGVybiA9ICIiOw0KCQl9DQoJCXZhciBi", "VmFsQXJyYXkgPSAodHlwZU9mKHZhbFBhdHRlcm4pID09ICJhcnJheSIpOw0KCQl2YXIgYlZh", "bE1hcCA9ICh0eXBlT2YodmFsUGF0dGVybikgPT0gIm9iamVjdCIpOw0KDQoJCWtleVBhdHRl", "cm4gPSBrZXlQYXR0ZXJuLnJlcGxhY2UoL15bXC8tXS8sIiIpOwoJCXBhdCA9ICJeW1xcLy1d", "KCIgKyBrZXlQYXR0ZXJuICsgIikkIjsJCgkJdmFyIHJlID0gbmV3IFJlZ0V4cChwYXQsb2Jq", "LmZsZyk7DQoNCgkJCgkJdmFyIHJlViA9IFtdOwoJCWlmIChiVmFsQXJyYXl8YlZhbE1hcCkg", "ew0KCQkJZWFjaCh2YWxQYXR0ZXJuLGZ1bmN0aW9uKGksdil7CgkJCQlpZiAoIHYgPT0gIioi", "ICkgdiA9ICIuKiI7DQoJCQkJdmFyIHJlOw0KCQkJCXRyeSB7DQoJCQkJCXJlID0gUmVnRXhw", "KHYsb2JqLmZsZyk7DQoJCQkJfSBjYXRjaChlKSB7DQoJCQkJCWVjaG8oIndhcm5pbmcgTkcg", "cmVndWxlclBhdHRlcm4iLHYpOw0KCQkJCQlyZSA9IFJlZ0V4cCgiLioiLG9iai5mbGcpOw0K", "CQkJCX0NCgkJCQlyZVYucHVzaChyZSApOw0KCQkJfSk7DQoJCX0gZWxzZSB7DQoJCQlyZVYu", "cHVzaChuZXcgUmVnRXhwKHZhbFBhdHRlcm4sb2JqLmZsZykgKTsNCgkJfQ0KCQl2YXIgYXIg", "PSBudWxsOw0KCQl2YXIgY250ID0gMDsNCgkJdmFyIHZlYyA9IG9iai5hcmdWYWx1ZTsNCgkJ", "dmFyIGRlbEtleSA9ICIvX0RFTEVURV9LRVlfIjsNCgkJdmFyIGdldE51bUV4aXN0TmV4dFBh", "cmFtID0gZnVuY3Rpb24obHN0LG9mZil7CgkJCXZhciBjb3VudD0wOw0KCQkJZm9yKHZhciBp", "ID0gb2ZmOyBpIDwgbHN0Lmxlbmd0aDtpKyspew0KCQkJCWlmICggZGVsS2V5ID09IGxzdFtp", "XSApDQoJCQkJCWJyZWFrOw0KCQkJCWNvdW50Kys7DQoJCQl9DQoJCQlyZXR1cm4gY291bnQ7", "DQoJCX0NCgkJZm9yKGNudCA9MDsgY250IDwgdmVjLmxlbmd0aDtjbnQrKyl7DQoJCQlpZiAo", "IChhcj1yZS5leGVjKHZlY1tjbnRdKSk9PW51bGwpew0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0K", "CQkJYkZpbmRLZXkgPSB0cnVlOw0KCQkJYnJlYWs7DQoJCX0NCgkJaWYgKCFiRmluZEtleSl7", "CQkKCQkJcmV0dXJuIHVuZGVmaW5lZDsNCgkJfQ0KCQl2ZWNbY250XSA9IGRlbEtleTsJCgkJ", "CgkJCg0KCQlpZiAoIXVzZVZhbCl7CQkKCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJDQoJCWlm", "IChnZXROdW1FeGlzdE5leHRQYXJhbSh2ZWMsY250KzEpID09IDAgKSB7CgkJCXJldHVybiB1", "bmRlZmluZWQ7DQoJCX0NCgkJY250Kz0xOwoNCgkJaWYgKCBiVmFsQXJyYXkgKSB7DQoJCQkK", "CQkJdmFyIHBhcmFtVmVjPVtdOw0KCQkJd2hpbGUodmVjLmxlbmd0aCA+IGNudCApIHsNCgkJ", "CQlpZiAoIC9eW1wtXC9dJC8udGVzdCh2ZWNbY250XSkgKSB7DQoJCQkJCQoJCQkJCXZhciB2", "ID0gdmVjLnNwbGljZShjbnQsMSk7DQoJCQkJCW9iai5sZW5ndGggPSBvYmouZ2V0TGVuKCk7", "DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCQlpZiAoIC9eW1wtXC9dW14wLTlcLlwsXS8udGVz", "dCh2ZWNbY250XSkgKQoJCQkJCWJyZWFrOwoJCQkJdmFyIHYgPSB2ZWMuc3BsaWNlKGNudCwx", "KTsgIAoJCQkJb2JqLmxlbmd0aCA9IG9iai5nZXRMZW4oKTsNCgkJCQlwYXJhbVZlYy5wdXNo", "KHYpOw0KCQkJfQ0KCQkJcmV0dXJuIHBhcmFtVmVjOwkKCQl9IGVsc2UgaWYgKCBiVmFsTWFw", "ICkgew0KCQkJCgkJCXZhciBwYXJhbU1hcD17fTsNCgkJCQoJCQllYWNoKHZhbFBhdHRlcm4s", "ZnVuY3Rpb24oayx2KSB7DQoJCQkJaWYgKCAhKHZlYy5sZW5ndGggPiBjbnQgKSApDQoJCQkJ", "CXJldHVybiBmYWxzZTsKCQkJCWlmICggL15bXC1cL11bXjAtOVwuXCxdLy50ZXN0KHZlY1tj", "bnRdKSApIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9DQoJCQkJcGFyYW1NYXBba10gPSB2", "ZWMuc3BsaWNlKGNudCwxKTsKCQkJCW9iai5sZW5ndGggPSBvYmouZ2V0TGVuKCk7DQoJCQl9", "KTsNCgkJCXJldHVybiBwYXJhbU1hcDsgCgkJfSBlbHNlIHsNCgkJCQoJCQkKCQkJCgkJCQoJ", "CQkKCQkJdmFyIGFyID0gW3ZlY1tjbnRdXTsNCgkJCQoJCQl2ZWMuc3BsaWNlKGNudCwxKTsg", "IAoJCQlvYmoubGVuZ3RoID0gb2JqLmdldExlbigpOw0KCQkJcmV0dXJuICggYXJbMF0gKTsJ", "CgkJfQ0KCX0NCglvYmoubGVuZ3RoID0gb2JqLmdldExlbigpOw0KCXJldHVybiBvYmo7DQp9", "DQoNCgoNCiRnbG9iYWwudVBhcmFtPWZ1bmN0aW9uKHBhcmFtRGVmKXsNCgl2YXIgdXBtT2Jq", "ID0ge30NCgl2YXIgd2sgPSAocGFyYW1EZWY9PXVuZGVmaW5lZCkgPyB7fSA6IHBhcmFtRGVm", "OwoJdXBtT2JqLnBhcmFtRGVmID0gd2s7DQoJdXBtT2JqLnRndE4gPSAiIjsKCXVwbU9iai5j", "YXNlRmxnID0gZmFsc2U7Cgl1cG1PYmouc2V0Q2FzZSA9IGZ1bmN0aW9uKGIpIAl7dXBtT2Jq", "LmNhc2VGbGc9YjtyZXR1cm4gdXBtT2JqO307DQoNCgl1cG1PYmouc2V0ID0gZnVuY3Rpb24o", "a2V5TmFtZSkgCXt1cG1PYmoudGd0Tj1rZXlOYW1lO3drW2tleU5hbWVdPXt9O3JldHVybiB1", "cG1PYmo7fTsNCgl1cG1PYmoub3B0ID0gZnVuY3Rpb24ob3B0TmFtZSkgCXt3a1t1cG1PYmou", "dGd0Tl0ub3B0ICA9IG9wdE5hbWU7IHJldHVybiB1cG1PYmo7fTsNCgl1cG1PYmoubmV4dCA9", "IGZ1bmN0aW9uKG5leHROYW1lKXt3a1t1cG1PYmoudGd0Tl0ubmV4dCA9IG5leHROYW1lOyBy", "ZXR1cm4gdXBtT2JqO307DQoJdXBtT2JqLmluaXQgPSBmdW5jdGlvbihpbml0TmFtZSl7d2tb", "dXBtT2JqLnRndE5dLmluaXQgPSBpbml0TmFtZTsgcmV0dXJuIHVwbU9iajt9Ow0KCXVwbU9i", "ai5kZXNjID0gZnVuY3Rpb24oZGVzY05hbWUpe3drW3VwbU9iai50Z3ROXS5kZXNjID0gZGVz", "Y05hbWU7IHJldHVybiB1cG1PYmo7fTsNCgl1cG1PYmoucmVhZCA9IGZ1bmN0aW9uKCl7DQoJ", "CXZhciBvdFBtID0gW107DQoJCQoJCXZhciBwRGVmID0gdXBtT2JqLnBhcmFtRGVmOw0KCQkK", "CQlmdW5jdGlvbiBtYWtlVXNhZ2UoZGljKXsNCgkJCQoJCQl2YXIgc3RyVXNhZ2UgPSBnZXRF", "bnYoKS5leGVQYXRoLkJOKCk7DQoJCQl2YXIgdmVjU3ViID0gW107DQoJCQl2YXIgc3RyVXNh", "Z2VEZXNjID0gIiI7DQoJCQlmb3IoIHZhciBrIGluIGRpYyApIHsNCgkJCQlpZiAoIGsgPT0g", "InVzYWdlIiApIHsNCgkJCQkJc3RyVXNhZ2VEZXNjID0gZGljW2tdWyJkZXNjIl07DQoJCQkJ", "CWNvbnRpbnVlOw0KCQkJCX0NCgkJCQlpZiAoIGsgPT0gIl9kdW1wIiApIGNvbnRpbnVlOw0K", "CQkJCXZhciBwZCA9IGRpY1trXTsNCgkJCQlpZiAoIGlzT2socGQub3B0KSApew0KCQkJCQlz", "dHJVc2FnZSArPSAiICIgKyBwZC5vcHQ7DQoJCQkJfQ0KCQkJCWlmICggayA9PSAiKiIgKSB7", "CgkJCQkJc3RyVXNhZ2UgKz0gIiAiICsgIioiOw0KCQkJCX0NCgkJCQlpZiAoIGlzT2socGQu", "bmV4dCkgKXsNCgkJCQkJc3RyVXNhZ2UgKz0gIiA8IiArIGsgKyAiPiI7DQoJCQkJfQ0KCQkJ", "CWlmICggaXNPayhwZC5kZXNjKSApew0KCQkJCQl2YXIgb3B0ID0gaXNPayhwZC5vcHQpPyBw", "ZC5vcHQ6IioiOw0KCQkJCQl2YXIgc3NzID0gc3ByaW50ZigiIC0gJS0xMHMgJS0xNXMgOiUt", "cyIsDQoJCQkJCQlvcHQsDQoJCQkJCQkoaXNPayhwZC5uZXh0KSA/ICgiIDwiK2srIj4gIik6", "IiAiKSwNCgkJCQkJCXBkLmRlc2MNCgkJCQkJKTsNCgkJCQkJdmVjU3ViLnB1c2goc3NzKTsN", "CgkJCQl9DQoJCQl9DQoJCQkKCQkJZWNobyhzdHJVc2FnZSk7DQoJCQlpZiAoIGlzT2soc3Ry", "VXNhZ2VEZXNjKSApew0KCQkJCWVjaG8oIiogIixzdHJVc2FnZURlc2MpOw0KCQkJfQ0KCQkJ", "Zm9yKHZhciBpPTA7aTx2ZWNTdWIubGVuZ3RoO2krKyl7DQoJCQkJZWNobyh2ZWNTdWJbaV0p", "Ow0KCQkJfQ0KCQl9CgkJdmFyIGFnID0gbWFrZUFyZygpOw0KCQkNCgkJaWYgKCBhZy5pc0V4", "aXN0KCJcXD8iKSApewoJCQltYWtlVXNhZ2UocERlZik7DQoJCQlleGl0KDApOw0KCQl9DQoJ", "CQ0KCQlhZy5zZXRDYXNlKHVwbU9iai5jYXNlRmxnKTsNCg0KCQkKCQl1UGFyYW0uYkFkbWlu", "ID0gaXNPayhhZy5nZXQoIi9fYWRtaW5SZWJvb3QiKSApOwoJCQoNCgkJZm9yKCB2YXIgayBp", "biBwRGVmICkgew0KCQkJdmFyIHB2ID0gcERlZltrXTsNCgkJCWlmICggayA9PSAidXNhZ2Ui", "ICkgew0KCQkJCQoJCQkJY29udGludWU7DQoJCQl9DQoJCQlpZiAoIGsgPT0gIioiICkgew0K", "CQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQkJdmFyIG9wdF89cHZbIm9wdCJdLG5leHRfPXB2WyJu", "ZXh0Il0saW5pdF89cHZbImluaXQiXSxkZXNjXz1wdlsiZGVzYyJdOw0KCQkJdmFyIGJGbGdN", "b2RlPSAhKCJuZXh0IiBpbiBwdik7DQoJDQoJCQkKCQkJCg0KCQkJdmFyIHYgPSB1bmRlZmlu", "ZWQ7CQkNCgkJCWlmICggYkZsZ01vZGUpIHsKCQkJCXYgPSBhZy5nZXQob3B0Xyk7CgkJCQlp", "ZiAoICh2ID09IG51bGwpICYmIChpbml0XyAhPSB1bmRlZmluZWQpICl7CgkJCQkJdiA9IGlz", "T2soaW5pdF8pOw0KCQkJCX0NCgkJCQlvdFBtW2tdPWlzT2sodik7CgkJCX0gZWxzZSB7IAoJ", "CQkJaWYgKCBuZXh0XyA9PT0gIioiKSBuZXh0XyA9ICIuKiI7CgkJCQl2ID0gYWcuZ2V0KG9w", "dF8sbmV4dF8pOw0KCQkNCgkJCQkKCQkJCQoNCgkJCQkKCQkJCQoJCQkJCgkJCQkKCQkJCQ0K", "DQoJCQkJZnVuY3Rpb24gY2FzdERhdGEodiwgbmV4dFYsIGluaXRWKSB7DQoJCQkJCXZhciB2", "VHlwZSA9IHR5cGVPZih2KTsNCgkJCQkJdmFyIG5leHRUeXBlID0gdHlwZU9mKG5leHRWKTsN", "CgkJCQkJdmFyIGluaXRUeXBlID0gdHlwZU9mKGluaXRWKTsNCgkJCQkJCgkJCQkJdmFyIGp1", "ZGdlVHlwZSA9IGluaXRUeXBlICE9ICJ1bmRlZmluZWQiID8gaW5pdFR5cGUgOiBuZXh0VHlw", "ZTsNCgkJCQkJdmFyIGp1ZGdlViAJID0gaW5pdFR5cGUgIT0gInVuZGVmaW5lZCIgPyBpbml0", "ViA6IG5leHRWOw0KCQkJCQkKCQkJCQlpZiAoIHZUeXBlID09PSAidW5kZWZpbmVkIiApIHsN", "CgkJCQkJCXJldHVybiAoIGp1ZGdlViApOw0KCQkJCQl9DQoJCQkJCQoJCQkJCWlmICggdlR5", "cGUgPT09ICJhcnJheSIgKSB7DQoJCQkJCQlpZiAoIGp1ZGdlVHlwZSAhPSAiYXJyYXkiICkg", "ew0KCQkJCQkJCQoJCQkJCQkJcmV0dXJuIHY7DQoJCQkJCQl9DQoJCQkJCQlmb3IodmFyIGk9", "MDsgaSA8IHYubGVuZ3RoOyBpKyspew0KCQkJCQkJCQoJCQkJCQkJdltpXSA9IGNhc3REYXRh", "KHZbaV0sanVkZ2VWLHVuZGVmaW5lZCk7DQoJCQkJCQl9DQoJCQkJCQlyZXR1cm4gdjsNCgkJ", "CQkJfSANCgkJCQkJCgkJCQkJaWYgKCB2VHlwZSA9PT0gIm9iamVjdCIgKSB7DQoJCQkJCQlp", "ZiAoIGp1ZGdlVHlwZSAhPSAib2JqZWN0IiApIHsNCgkJCQkJCQkKCQkJCQkJCXJldHVybiB2", "Ow0KCQkJCQkJfQ0KCQkJCQkJZm9yKHZhciBrIGluIHYgKSB7DQoJCQkJCQkJCgkJCQkJCQl2", "W2tdID0gY2FzdERhdGEodltrXSxqdWRnZVYsdW5kZWZpbmVkKTsNCgkJCQkJCX0NCgkJCQkJ", "CXJldHVybiB2Ow0KCQkJCQl9DQoJCQkJCQoJCQkJCWlmICggaW5pdFR5cGUgIT0gInVuZGVm", "aW5lZCIpIHsNCgkJCQkJCXYgPSBnZXRDYXN0RnVuYyhpbml0VHlwZSkodik7CgkJCQkJfSBl", "bHNlIHsNCgkJCQkJCXYgPSBnZXRDYXN0RnVuYyhuZXh0VHlwZSkodik7CgkJCQkJfQ0KCQkJ", "CQlyZXR1cm4gdjsNCgkJCQkJZnVuY3Rpb24gZ2V0Q2FzdEZ1bmMoc1R5cGUpew0KCQkJCQkJ", "ZnVuY3Rpb24gdGhydUZ1bmModikge3JldHVybiB2O307DQoJCQkJCQlmdW5jdGlvbiBudW1i", "ZXJGdW5jKHYpIHsgdmFyIHI7IHJldHVybiAoaXNOYU4ocj1OdW1iZXIodikpPyB2IDogcik7", "fTsKCQkJCQkJZnVuY3Rpb24gYm9vbEZ1bmModikgeyByZXR1cm4gKCAoL14oMHxGfEZhbHNl", "fE9mZikvaSkudGVzdCh2KSA/IGZhbHNlIDogdHJ1ZSk7fTsNCgkJCQkJCXN3aXRjaChzVHlw", "ZSkgew0KCQkJCQkJIGNhc2UgIm51bWJlciI6CXJldHVybiBudW1iZXJGdW5jOw0KCQkJCQkJ", "IGNhc2UgImJvb2xlYW4iOiByZXR1cm4gYm9vbEZ1bmM7DQoJCQkJCQkgY2FzZSAiYXJyYXki", "OiAJcmV0dXJuIHRocnVGdW5jOwoJCQkJCQkgY2FzZSAib2JqZWN0IjoJcmV0dXJuIHRocnVG", "dW5jOwoJCQkJCQkgZGVmYXVsdDogCQlyZXR1cm4gU3RyaW5nOw0KCQkJCQkJfQ0KCQkJCQkJ", "cmV0dXJuIFN0cmluZzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkKCQkJCQoJCQkJdiA9IGNhc3RE", "YXRhKHYsIG5leHRfLCBpbml0Xyk7DQoJCQkJCgkJCQlzd2l0Y2godHlwZU9mKHYpKXsNCgkJ", "CQkgIGNhc2UgImFycmF5IjoNCgkJCQkJICBmb3IodmFyIGk9MDsgaTx2Lmxlbmd0aDsgaSsr", "ICkgew0KCQkJCQkJICBpZiAoIHR5cGVPZih2W2ldKSA9PSAiYXJyYXkiICkgIA0KCQkJCQkJ", "IAkgdltpXT12W2ldWzBdOwoJCQkJCSAgfQ0KCQkJCSAgY2FzZSAib2JqZWN0IjoNCgkJCQkJ", "Zm9yKHZhciBrZXkgaW4gdiApIHsNCgkJCQkJCWlmICggdHlwZU9mKHZba2V5XSkgPT0gImFy", "cmF5IiApICANCgkJCQkJCQl2W2tleV09dltrZXldWzBdOwoJCQkJCX0NCgkJCQkJYnJlYWs7", "DQoJCQkJfQ0KCQkJCW90UG1ba109djsNCgkJCQkKCQkJfQ0KCQl9DQoJCQoJCXZhciBkZWxL", "ZXkgPSAiL19ERUxFVEVfS0VZXyI7DQoJCXZhciBvdENvdW50PTA7DQoJCWZvcih2YXIgaT0w", "O2k8YWcuZ2V0TGVuKCk7aSsrKXsNCgkJCXZhciByZWFsViA9IGFnLmdldFYoaSk7DQoJCQlp", "ZiAoIHJlYWxWID09IGRlbEtleSApDQoJCQkJY29udGludWU7DQoJCQlvdFBtW290Q291bnQr", "K109IHJlYWxWOw0KCQkJCgkJfQ0KCQkKCQlvdFBtLl9kdW1wID0gZnVuY3Rpb24oKSB7DQoJ", "CQllY2hvKCI8PDwgZHVtcCBhcmd1bWVudHMgPj4+PiIpOw0KCQkJZm9yKHZhciBrIGluIG90", "UG0pew0KCQkJCWlmICggayA9PSAiX2R1bXAiIHx8IGsgPT0gInVzYWdlIiApIGNvbnRpbnVl", "Ow0KCQkJCXZhciBrdiA9ICgvXGQrLy50ZXN0KGspKT8gKCJbIitrKyJdIikgOiAoIi4iK2sp", "Ow0KCQkJCXZhciB0ID0gdHlwZU9mKG90UG1ba10pOw0KCQkJCXZhciB2PSIiOw0KCQkJCXN3", "aXRjaCh0KXsNCgkJCQkgY2FzZSAiZnVuY3Rpb24iOnY9KCJmdW5jdGlvbiAiK2t2KyIoKSIp", "O2JyZWFrOw0KCQkJCSBjYXNlICJvYmplY3QiOg0KCQkJCQl2PVtdOw0KCQkJCQllYWNoKG90", "UG1ba10sZnVuY3Rpb24oaWksdnYpeyB2LnB1c2goaWkrIjoiK3Z2KTt9KTsNCgkJCQkJdiA9", "ICJ7IiArIHYuam9pbigiLCIpICsgIn0iOw0KCQkJCQl0ID0gIm1hcCI7DQoJCQkJCWJyZWFr", "Ow0KCQkJCSBkZWZhdWx0Og0KCQkJCQl2ID0gb3RQbVtrXTsNCgkJCQl9DQoJCQkJZWNobygg", "IHNwcmludGYoIiUtMTJzICUtMTBzICUtMTBzIDolLXMiLCBrdiwgIlsiK2dldE9wdE5hbWUo", "aykrIl0gIiwgIigiK3QrIikiLHYpICk7DQoJCQkJCgkJCX0NCgkJCXJldHVybjsNCgkJCWZ1", "bmN0aW9uIGdldE9wdE5hbWUoa2V5KSB7DQoJCQkJdmFyIG07DQoJCQkJaWYgKCAhKGtleSBp", "biB1cG1PYmoucGFyYW1EZWYpICkgDQoJCQkJCXJldHVybiAiIjsNCgkJCQltID0gdXBtT2Jq", "LnBhcmFtRGVmW2tleV07DQoJCQkJaWYgKCAhKCJvcHQiIGluIG0pICkgDQoJCQkJCXJldHVy", "biAiIjsNCgkJCQlyZXR1cm4gbVsib3B0Il07DQoJCQl9DQoJCX0gCgkJb3RQbS51c2FnZSA9", "IGZ1bmN0aW9uKCl7IG1ha2VVc2FnZShwRGVmKTt9DQoJCXJldHVybiBvdFBtOw0KCQkKCX0g", "CglyZXR1cm4gdXBtT2JqOw0KfQ0KCg0KJGdsb2JhbC5pc0VudW0gPSBmdW5jdGlvbiAob2Jq", "LGVudW1UeXBlICkgew0KCQoJaWYgKCBlbnVtVHlwZSA9PSB1bmRlZmluZWQgKSB7DQoJCWVu", "dW1UeXBlID0gImFsbCI7DQoJfQ0KCQoJc3dpdGNoKCB0eXBlb2Yob2JqKSApIHsNCgkgIGNh", "c2UgIm51bWJlciI6Y2FzZSAic3RyaW5nIjpjYXNlICJib29sZWFuIjoNCgkgIGNhc2UgImZ1", "bmN0aW9uIjpjYXNlICJ1bmRlZmluZWQiOg0KCSAgCXJldHVybiBmYWxzZTsNCgl9DQoJCgkK", "CQoJc3dpdGNoKCBlbnVtVHlwZSApIHsNCgkgIGNhc2UgImFsbCI6CQlyZXR1cm4gdHJ1ZTsN", "CgkgIGNhc2UgImFycmF5IjoJCXJldHVybiAob2JqIGluc3RhbmNlb2YgQXJyYXkpOw0KCSAg", "Y2FzZSAiYXJndW1lbnRzIjoJcmV0dXJuICgoImNhbGxlZSIgaW4gb2JqKSYmKCJsZW5ndGgi", "IGluIG9iaikpOw0KCSAgY2FzZSAiY29sbGVjdGlvbiI6cmV0dXJuICgoIkl0ZW0iIGluIG9i", "aikgJiYgKCJDb3VudCIgaW4gb2JqKSk7DQoJICBjYXNlICJlbnVtcmF0b3IiOiByZXR1cm4g", "KG9iaiBpbnN0YW5jZW9mIEVudW1lcmF0b3IpOw0KCeOAgGNhc2UgIm9iamVjdERpYyI6DQoJ", "CQoJCWlmIChpc0VudW0ob2JqLCJhcnJheSIpKSByZXR1cm4gZmFsc2U7DQoJCWlmIChpc0Vu", "dW0ob2JqLCJhcmd1bWVudHMiKSkgcmV0dXJuIGZhbHNlOw0KCQlpZiAoaXNFbnVtKG9iaiwi", "Y29sbGVjdGlvbiIpKSByZXR1cm4gZmFsc2U7DQoJCWlmIChpc0VudW0ob2JqLCJlbnVtcmF0", "b3IiKSkgcmV0dXJuIGZhbHNlOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJZWNobygiV2Fybmlu", "ZzogaXNFbnVtIGVudW1UeXBlIG5vdCBtYXRjaDoiLGVudW1UeXBlKTsNCglyZXR1cm4gZmFs", "c2U7DQp9DQoNCgoNCg0KCgoNCiRnbG9iYWwuZWFjaCA9IGZ1bmN0aW9uKG9iaiwgY2FsbGJh", "Y2spIHsNCgl2YXIgdGd0ID0gb2JqOw0KCXZhciBzdCA9IHRydWU7DQoJCglpZiAoICEoaXNF", "bnVtKG9iail8fCh0eXBlT2Yob2JqKT09InN0cmluZyIpKSApIHsNCgkJcmV0dXJuIGZhbHNl", "OwoJfSANCglpZiAoIGlzRW51bShvYmosImFycmF5IikgfHwgaXNFbnVtKG9iaiwiYXJndW1l", "bnRzIikgKXsNCgkJCgkJZm9yICh2YXIgaT0wO2k8b2JqLmxlbmd0aDtpKyspIHsNCgkJCXN0", "ID0gY2FsbGJhY2suY2FsbChvYmpbaV0sIGksIG9ialtpXSwgb2JqKTsgDQoJCQlpZiAoIHN0", "ID09PSBmYWxzZSkNCgkJCQlicmVhazsNCgkJfQ0KCQlyZXR1cm4gc3Q7DQoJfSBlbHNlIGlm", "ICggaXNFbnVtKG9iaiwiY29sbGVjdGlvbiIpIHx8IGlzRW51bShvYmosImVudW1yYXRvciIp", "ICkgew0KCQkKCQl2YXIgZW4gPSAob2JqIGluc3RhbmNlb2YgRW51bWVyYXRvcikgPyBvYmog", "OiAobmV3IEVudW1lcmF0b3Iob2JqKSk7DQoJCXZhciBpID0gMDsNCgkJZm9yIChlbi5tb3Zl", "Rmlyc3QoKTsgIWVuLmF0RW5kKCk7IGVuLm1vdmVOZXh0KCksaSsrKSB7DQoJCQlzdCA9IGNh", "bGxiYWNrLmNhbGwoZW4uaXRlbSgpLCBpLCBlbi5pdGVtKCkpOyANCgkJCWlmICggc3QgPT09", "IGZhbHNlKQ0KCQkJCWJyZWFrOw0KCQl9DQoJCXJldHVybiBzdDsNCgl9IGVsc2UgaWYgKCB0", "eXBlT2Yob2JqKSA9PSAic3RyaW5nIikgew0KCQkJCgkJCWZvciAodmFyIGk9MDtpPG9iai5s", "ZW5ndGg7aSsrKSB7DQoJCQkJdmFyIGMgPSBvYmouY2hhckF0KGkpOw0KCQkJCXN0ID0gY2Fs", "bGJhY2suY2FsbChjLCBpLCBjLCBvYmopOyANCgkJCQlpZiAoIHN0ID09PSBmYWxzZSkNCgkJ", "CQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gc3Q7DQoJfSBlbHNlIHsNCgkJCgkJZm9yICh2", "YXIgayBpbiBvYmopIHsNCgkJCWlmICggKCJoYXNPd25Qcm9wZXJ0eSIgaW4gb2JqKSAmJiAo", "IW9iai5oYXNPd25Qcm9wZXJ0eShrKSkgKSB7DQoJCQkJY29udGludWU7DQoJCQl9DQoJCQlp", "ZiAoIHR5cGVPZihvYmpba10pID09ICJmdW5jdGlvbiIgKSAKCQkJCWNvbnRpbnVlOw0KCQkJ", "c3QgPSBjYWxsYmFjay5jYWxsKG9ialtrXSwgaywgb2JqW2tdLCBvYmopOw0KCQkJaWYgKCBz", "dCA9PT0gZmFsc2UgKQ0KCQkJCWJyZWFrOw0KCQl9DQoJCXJldHVybiBzdDsNCgl9DQp9DQoN", "CgokZ2xvYmFsLmdldE5vZGUgPSBmdW5jdGlvbihvYmoscGF0KSB7DQoNCgl2YXIgbyA9IG9i", "ajsNCgl2YXIgdmVjID0gcGF0LnNwbGl0KCIvIik7DQoJZW51bU9LID0gZnVuY3Rpb24oa2V5", "LG9iaikgeyB0cnl7cmV0dXJuKChrZXkgaW4gb2JqKSA/IG9ialtrZXldIDogbnVsbCk7fSBj", "YXRjaChlKXtyZXR1cm4gbnVsbDt9fTsNCglpZiAoIHZlY1swXSA9PSAiKiIgKSB7DQoJCQoJ", "CWVjaG8oImR1bXAiKTsNCgkJdmFyIG5vZGVTdHI9W10sIGR1bXBEYXRhPVtdOw0KCQlmdW5j", "dGlvbiByRnVuYyhpbmRleCx2YWx1ZSkgew0KCQkJbm9kZVN0ci5wdXNoKGluZGV4KTsNCgkJ", "CWVjaG8oIm5vZGU6Iixub2RlU3RyLmpvaW4oIiAiKSk7DQoJCQlpZiAoICFpc0VudW0odmFs", "dWUpICkgew0KCQkJCWR1bXBEYXRhLnB1c2gobm9kZVN0ci5qb2luKCIvIikpOwoJCQl9IGVs", "c2Ugew0KCQkJCWVhY2godmFsdWUsckZ1bmMpOw0KCQkJfQ0KCQkJbm9kZVN0ci5wb3AoKTsN", "CgkJfQ0KCQllYWNoKG9iaixyRnVuYyk7DQoJCXJldHVybiBkdW1wRGF0YTsNCgl9DQoJZm9y", "KHZhciBpPTA7aTx2ZWMubGVuZ3RoOyBpKyspew0KCQl2YXIgdiA9IHZlY1tpXTsNCgkJaWYg", "KCB2ID09ICIiICkgY29udGludWU7DQoJCQoJCW8gPSBlbnVtT0sodixvKTsNCgkJaWYgKCBp", "c05vbmUobykgKXsNCgkJCXJldHVybiBudWxsOwoJCX0NCgl9DQoJcmV0dXJuIG87DQp9DQoN", "CgokZ2xvYmFsLmRvQ21kID0gZnVuY3Rpb24gKHNDbWRMaW5lcykgew0KDQoJaWYgKCB0eXBl", "T2Yoc0NtZExpbmVzKSA9PSAiYXJyYXkiICkgew0KCQkKCQlyZXR1cm4gKGFyZ3VtZW50cy5j", "YWxsZWUuYXBwbHkobnVsbCxzQ21kTGluZXMpKTsNCgl9DQoJdmFyIG9iaiA9IG5ldyBPYmpl", "Y3QoKTsNCgl2YXIgc0FkZENtZHM9IiI7DQoJdmFyIGJFY2hvID0gdHJ1ZSwgc3RkaW5EYXRh", "ID0gdW5kZWZpbmVkOyBiUmVkaXJlY3RFcnIgPSB1bmRlZmluZWQ7DQoJdmFyIGJDT01TUEVD", "ID0gdHJ1ZTsgDQoJdmFyIGJTUVVPVEEgPSBmYWxzZTsgDQoJdmFyIG5BcmdDb3VudD0wOw0K", "CWlmICgxKSB7DQoJCQoJCQoJCWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKysp", "IHsNCgkJCWlmICggdHlwZW9mKGFyZ3VtZW50c1tpXSkgPT0gIm9iamVjdCIgKSBjb250aW51", "ZTsNCgkJCW5BcmdDb3VudCsrOw0KCQl9DQoJfQ0KCXZhciBiRmlyc3RDbWQgPSB0cnVlOw0K", "CWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspIHsNCgkJaWYgKCBpc0VudW0o", "YXJndW1lbnRzW2ldKSAmJiAodHlwZW9mKGFyZ3VtZW50c1tpXSkgPT0gIm9iamVjdCIpICkg", "ewoJCQlvcHRzID0gYXJndW1lbnRzW2ldOw0KCQkJYkVjaG8JCT0gKCJlY2hvIiAgaW4gb3B0", "cykgPyBvcHRzWyJlY2hvIl0gIDogYkVjaG87DQoJCQlzdGRpbkRhdGEgCT0gKCJzdGRpbiIg", "aW4gb3B0cykgPyBvcHRzWyJzdGRpbiJdIDogc3RkaW5EYXRhOw0KCQkJYlJlZGlyZWN0RXJy", "ID0gKCJyZWRpcmVjdEVyciIgaW4gb3B0cykgPyBvcHRzWyJyZWRpcmVjdEVyciJdIDogYlJl", "ZGlyZWN0RXJyOw0KCQkJYkNPTVNQRUMJID0gKCJjb21zcGVjIiBpbiBvcHRzKSA/IG9wdHNb", "ImNvbXNwZWMiXSA6IGJDT01TUEVDOw0KCQkJYlNRVU9UQQkgCT0gICgic3F1YXRhIiBpbiBv", "cHRzKSA/IG9wdHNbInNxdWF0YSJdIDogYlNRVU9UQTsNCgkJCWNvbnRpbnVlOw0KCQl9DQoJ", "CWlmICggc0FkZENtZHMgIT0gIiIgKSBzQWRkQ21kcyArPSAiICI7IAoJCWlmICggYkZpcnN0", "Q21kICkgew0KCQkJc0FkZENtZHMgKz0gKCBuQXJnQ291bnQgPT0gMSApPyhhcmd1bWVudHNb", "aV0pOm11c3RRdW90YShhcmd1bWVudHNbaV0pOw0KCQkJYkZpcnN0Q21kID0gZmFsc2U7DQoJ", "CX0gZWxzZSB7DQoJCQlpZiAoIGJTUVVPVEEgKSB7DQoJCQkJc0FkZENtZHMgKz0gKCBuQXJn", "Q291bnQgPT0gMSApPyhhcmd1bWVudHNbaV0pOm11c3RRdW90YShhcmd1bWVudHNbaV0sIlwn", "Iik7DQoJCQl9IGVsc2Ugew0KCQkJCXNBZGRDbWRzICs9ICggbkFyZ0NvdW50ID09IDEgKT8o", "YXJndW1lbnRzW2ldKTptdXN0UXVvdGEoYXJndW1lbnRzW2ldKTsNCgkJCX0NCgkJfQ0KCX0N", "Cgl2YXIgc0NtZHMgPSBiQ09NU1BFQyA/ICIlQ09NU1BFQyUgL0MgIiA6IiI7DQoJc0NtZHMg", "Kz0gc0FkZENtZHM7DQoJaWYgKCBiUmVkaXJlY3RFcnIgKSB7DQoJCXNDbWRzICs9IiAyPiYx", "IjsNCgl9DQoJdmFyIG9FeGVjID0gc2guRXhlYyhzQ21kcyk7DQoNCgkKCWlmICggc3RkaW5E", "YXRhIT11bmRlZmluZWQpIHsNCgkJb0V4ZWMuU3RkSW4uV3JpdGUoc3RkaW5EYXRhKTsNCgkJ", "b0V4ZWMuU3RkSW4uQ2xvc2UoKTsKCX0NCgkKCW9iai5Nc2cgCQk9IFtdOwkKCW9iai5FeGl0", "Q29kZQk9IDA7CQoJCgkKCQoJCglmdW5jdGlvbiBpc0F0RW5kT2ZTKCBzdHJtICkgew0KCQkK", "CQkKCQkKCQlyZXR1cm4gc3RybS5BdEVuZE9mU3RyZWFtOw0KCX0NCgl3aGlsZSgxKSB7DQoJ", "CQoJCQoJCQoNCgkJaWYgKCBpc0F0RW5kT2ZTKG9FeGVjLlN0ZE91dCkgJiYgaXNBdEVuZE9m", "UyhvRXhlYy5TdGRFcnIpICkgew0KCQoJCQlicmVhazsKCQl9DQoNCgkJd2hpbGUoIWlzQXRF", "bmRPZlMob0V4ZWMuU3RkT3V0KSl7DQoJCQkKCQkJCgkJCQoJCQkKCQkJdmFyIGxpbmUgPSBv", "RXhlYy5TdGRPdXQuUmVhZExpbmUoKTsNCgkJCW9iai5Nc2cucHVzaCggbGluZSApOw0KCQkJ", "aWYgKCBiRWNobyApIHByaW50bG4obGluZSk7DQoJCX0NCgkJCgkJd2hpbGUoIWlzQXRFbmRP", "ZlMob0V4ZWMuU3RkRXJyKSl7DQoJCQkKCQkJdmFyIGxpbmUgPSBvRXhlYy5TdGRFcnIuUmVh", "ZExpbmUoKTsNCgkJCW9iai5Nc2cucHVzaCggbGluZSApOw0KCQkJaWYgKCBiRWNobyApIHBy", "aW50bG4obGluZSk7DQoJCX0NCgkJaWYgKCBvRXhlYy5TdGF0dXMgIT0gMCApIA0KCQkJYnJl", "YWs7DQoJfQ0KCXdoaWxlKG9FeGVjLlN0YXR1cyA9PSAwICkgewoJCVdTY3JpcHQuU2xlZXAo", "MTAwKTsNCgl9DQoJb2JqLkV4aXRDb2RlPW9FeGVjLkV4aXRDb2RlOw0KCQoJb2JqLmV4aXRD", "b2RlID0gb2JqLkV4aXRDb2RlOw0KCW9iai5tc2cgPSBvYmouTXNnOw0KCXJldHVybiBvYmo7", "DQp9DQoNCgoKCg0KJGdsb2JhbC5kb0V4ZWNXYWl0ID0gZnVuY3Rpb24gKHNDbWRMaW5lcykg", "ew0KDQoJdmFyIGJFY2hvID0gZG9FeGVjV2FpdC5wcm90b3R5cGUuYkVjaG87DQoNCgl2YXIg", "b2JqID0gbmV3IE9iamVjdCgpOw0KCXZhciBzQ21kcyA9ICJDTUQuRVhFIC9DICI7DQoJCgkK", "CXZhciBxRnVuYyA9IChhcmd1bWVudHMubGVuZ3RoPT0xKT9mdW5jdGlvbihhKXtyZXR1cm4g", "YTt9Om11c3RRdW90YTsNCglmb3IodmFyIGk9MDtpPGFyZ3VtZW50cy5sZW5ndGgtMTtpKysp", "IHsNCgkJc0NtZHMgKz0gcUZ1bmMoYXJndW1lbnRzW2ldKSArICIgIjsNCgkJCgl9DQoJc0Nt", "ZHMgKz0gcUZ1bmMoYXJndW1lbnRzW2ldKTsKCXNDbWRzICs9IiAyPiYxIg0KCQ0KCXZhciBv", "RXhlYyA9IHNoLkV4ZWMoc0NtZHMpOw0KCW9iai5TdHJPdXQgPSBuZXcgQXJyYXk7DQoJCglv", "RXhlYy5TdGRJbi5Xcml0ZUxpbmUoZG9FeGVjV2FpdC5wcm90b3R5cGUuc3RyUGF1c2UpOw0K", "DQoJdmFyIGkgPSAwOw0KCXZhciBsZW4gPSAwOw0KCXdoaWxlKCFvRXhlYy5TdGRPdXQuQXRF", "bmRPZlN0cmVhbSl7DQoJCWxlbiA9IG9iai5TdHJPdXQucHVzaCggb0V4ZWMuU3RkT3V0LlJl", "YWRMaW5lKCkgKTsNCgkJaWYoYkVjaG8pIHsNCgkJCWVjaG8ob2JqLlN0ck91dFtsZW4tMV0p", "Ow0KCQl9DQoJfQ0KCXdoaWxlKCFvRXhlYy5TdGRFcnIuQXRFbmRPZlN0cmVhbSl7DQoJCW9i", "ai5TdHJPdXQucHVzaCggb0V4ZWMuU3RkRXJyLlJlYWRMaW5lKCkgKTsNCgkJaWYoYkVjaG8p", "IHsNCgkJCWVjaG8ob2JqLlN0ck91dFtsZW4tMV0pOw0KCQl9DQoJfQ0KCXdoaWxlKG9FeGVj", "LlN0YXR1cyA9PSAwICkgew0KCQkKCQlXU2NyaXB0LlNsZWVwKDEwMCk7DQoJfQ0KCW9iai5F", "eGl0Q29kZSA9IG9FeGVjLkV4aXRDb2RlOw0KCQoJb2JqLmV4aXRDb2RlID0gb2JqLkV4aXRD", "b2RlOw0KCW9iai5tc2cgPSBvYmouU3RyT3V0Ow0KDQoJcmV0dXJuIG9iajsNCn0NCg0KJGds", "b2JhbC5kb0V4ZWNXYWl0LnByb3RvdHlwZS5iRWNobyA9IGZhbHNlOw0KJGdsb2JhbC5kb0V4", "ZWNXYWl0LnByb3RvdHlwZS5zdHJQYXVzZSA9ICJ5eXlcbiI7IAoNCg0KCg0KCg0KDQoKZnVu", "Y3Rpb24gX2luaXRFbmNUYWJsZXMoKSB7DQoJaWYgKCB0eXBlb2YoX21hcERlZkVuY29kaW5n", "KSAhPSAidW5kZWZpbmVkIiApDQoJIAlyZXR1cm47CgkKCXZhciBlbmNUYmwgPSANCgl7CQoJ", "CSJVVEY4IgkJOlsidXRmLThuIiwJCSJ1dGYtOCIsCQkidXRmLThuIl0sCgkJIlVURjhCT00i", "CTpbInV0Zi04Qk9NIiAJCQkJCQkJXSwKCQkiVVRGMTZMRSIJOlsidW5pY29kZSIsIAkidW5p", "Y29kZUZGRkUiLCAgInV0Zi0xNkxFIl0sCgkJIlVURjE2QkUiCTpbInVuaWNvZGVGRUZGIiwi", "dXRmLTE2QkUiCQkJCV0sCgkJIlNKSVMiCQk6WyJzaGlmdC1qaXMiCSwiU2hpZnRKSVMiCQkJ", "CV0sCgkJIlVOS05PV04iCTpbXQ0KCX07DQoJdmFyIGVuY1RibFJldiA9IHt9Ow0KCWVhY2go", "ZW5jVGJsLGZ1bmN0aW9uKGssYXIpew0KCQllbmNUYmxSZXZba109azsKCQllYWNoKGFyLGZ1", "bmN0aW9uKGksdil7DQoJCQllbmNUYmxSZXZbdl09azsNCgkJfSk7DQoJfSk7DQoJX21hcERl", "ZkVuY29kaW5nPWVuY1RibDsNCglfbWFwRGVmRW5jb2RpbmdSZXY9ZW5jVGJsUmV2Ow0KfQ0K", "ZnVuY3Rpb24gZ2V0RnVsbEVuY01hcCgpew0KCV9pbml0RW5jVGFibGVzKCk7DQoJdmFyIG1h", "cD17fTsNCgllYWNoKF9tYXBEZWZFbmNvZGluZ1JldixmdW5jdGlvbihrLHYpew0KCQlpZiAo", "IGsgPT0gIlVOS05PV04iICkgcmV0dXJuOw0KCQltYXBba109djsNCgl9KTsNCglyZXR1cm4g", "bWFwOw0KfQ0KZnVuY3Rpb24gdG9FbmMoIGFsbEVuYyApIHsNCgoJX2luaXRFbmNUYWJsZXMo", "KTsNCgl2YXIgcmV2VGJsID0gX21hcERlZkVuY29kaW5nUmV2Ow0KCWlmICggYWxsRW5jIGlu", "IHJldlRibCApIHsNCgkJcmV0dXJuIChyZXZUYmxbYWxsRW5jXSk7DQoJfQ0KCQoJdmFyIGlB", "bGxFbmMgPSBhbGxFbmMudG9Mb3dlckNhc2UoKTsNCgl2YXIgYk1hdGNoPWZhbHNlLCByZXRF", "bmM7DQoJZWFjaChyZXZUYmwsZnVuY3Rpb24oayx2KXsNCgkJdmFyIGlrID0gay50b0xvd2Vy", "Q2FzZShrKTsNCgkJaWYgKCBpayA9PSBpQWxsRW5jICl7DQoJCQliTWF0Y2g9dHJ1ZTtyZXRF", "bmMgPSB2Ow0KCQkJcmV0dXJuIGZhbHNlOwoJCX0NCgl9KTsNCglpZiAoYk1hdGNoKXsNCgkJ", "cmV0dXJuIHJldEVuYzsNCgl9DQoJcmV0dXJuICJVTktOT1dOIjsNCn0NCmZ1bmN0aW9uIHRv", "RW5jQURPKCBhbGxFbmMgKSB7DQoJCglfaW5pdEVuY1RhYmxlcygpOw0KCQoJdmFyIGRlZkVu", "YyA9IHRvRW5jKGFsbEVuYyk7DQoJdmFyIGFyID0gX21hcERlZkVuY29kaW5nW2RlZkVuY107", "DQoJaWYgKCBhci5sZW5ndGggPiAwICkgew0KCQlyZXR1cm4gYXJbMF07DQoJfSBlbHNlIHsN", "CgkJcmV0dXJuICJVTktOT1dOIg0KCX0NCn0NCiRnbG9iYWwuZ2V0RnVsbEVuY01hcCAJPSBn", "ZXRGdWxsRW5jTWFwOw0KJGdsb2JhbC50b0VuYyAJCQk9IHRvRW5jOw0KJGdsb2JhbC50b0Vu", "Y0FETyAJCT0gdG9FbmNBRE8NCg0KCg0KCg0KDQoNCiANCiRnbG9iYWwuZ2V0U0pJU29yVVRG", "OCA9IGZ1bmN0aW9uKGxlbiwgYiAsZGVmYXVsdFYpIHsNCgl2YXIgY29uU0pJUz0iU0pJUyIs", "Y29uVVRGOD0iVVRGOCI7Cgl2YXIgcmV0ID0gICh0eXBlb2YgZGVmYXVsdFYgPT0gJ3VuZGVm", "aW5lZCcpID8gY29uU0pJUyA6ZGVmYXVsdFYgOwoJCglpZihsZW4gPCAyKQ0KCQlyZXR1cm4g", "cmV0OyANCglpZiggKGIoMCk9PSAweEVGKSAmJiAoYigxKSA9PSAweEJCKSAmJiAoYigyKSA9", "PSAweEJGKSApDQoJCXJldHVybiBjb25VVEY4OwoJdmFyIHNqaXMgPSAwOw0KCWZvcih2YXIg", "aSA9IDA7IGkgPCBsZW4tMjsgaSsrKSB7DQoJICB2YXIgYjEgPSBiKGkpLCBiMiA9IGIoaSsx", "KTsNCgkgIGlmKCAoICgweDgxIDw9IGIxICYmIGIxIDw9IDB4OUYpIHx8ICgweEUwIDw9IGIx", "ICYmIGIxIDw9IDB4RkMpICkgJiYNCgkJICAoICgweDQwIDw9IGIyICYmIGIyIDw9IDB4N0Up", "IHx8ICgweDgwIDw9IGIyICYmIGIyIDw9IDB4RkMpICkgKSB7DQoJCXNqaXMgKz0gMjtpKys7", "DQoJICB9DQoJfQ0KCXZhciB1dGY4ID0gMDsNCglmb3IodmFyIGkgPSAwOyBpIDwgbGVuLTI7", "IGkrKykgew0KCSAgdmFyIGIxID0gYihpKSwgYjIgPSBiKGkrMSk7DQoJICBpZiggKDB4QzAg", "PD0gYjEgJiYgYjEgPD0gMHhERikgJiYNCgkJICAoMHg4MCA8PSBiMiAmJiBiMiA8PSAweEJG", "KSApIHsNCgkJdXRmOCArPSAyOyBpKys7DQoJICB9IGVsc2UgaWYoaSA8IGxlbi0yKSB7DQoJ", "CXZhciBiMyA9IGIoaSsyKTsNCgkJaWYoICgweEUwIDw9IGIxICYmIGIxIDw9IDB4RUYpICYm", "DQoJCQkoMHg4MCA8PSBiMiAmJiBiMiA8PSAweEJGKSAmJg0KCQkJKDB4ODAgPD0gYjMgJiYg", "YjMgPD0gMHhCRikgKSB7DQoJCSAgdXRmOCArPSAzOyBpICs9IDI7DQoJCX0NCgkgIH0NCgl9", "DQoJaWYoc2ppcyA+IHV0ZjgpIA0KCSAgcmV0dXJuIGNvblNKSVM7DQoJaWYodXRmOCA+IHNq", "aXMpIA0KCSAgcmV0dXJuIGNvblVURjg7DQoJcmV0dXJuIHJldDsKfQ0KDQoNClN0cmluZy5w", "cm90b3R5cGUuZ2V0RW5jb2RlPWZ1bmN0aW9uKGJEZXRhaWwpDQp7DQoJaWYoISh0aGlzLmlz", "RXhpc3RGaWxlKCkpKSByZVRocm93KCJnZXRFbmNvZGUiLCJub3QgZXhpdCIsdGhpcyk7DQoN", "Cgl2YXIgaGV4ID0gdGhpcy5yZWFkQmluKDIpOw0KCWlmICggaGV4WzBdPT0weEVGICYmIGhl", "eFsxXT09MHhCQiApIHsgCgkJcmV0dXJuKCJVVEY4Qk9NIik7DQoJCWVUeXBlPSAidXRmLThC", "T00iOwkJCgkJCgkJCgkJcmV0dXJuKGVUeXBlKTsNCgl9IGVsc2UgaWYgKGhleFswXT09MHhG", "RSAmJiBoZXhbMV09PTB4RkYgKSB7IAoJCXJldHVybigiVVRGMTZCRSIpOw0KCQllVHlwZSA9", "ICJ1bmljb2RlRkVGRiI7CgkJcmV0dXJuKGVUeXBlKTsNCgl9IGVsc2UgaWYgKGhleFswXT09", "MHhGRiAmJiBoZXhbMV09PTB4RkUpICB7IAoJCXJldHVybigiVVRGMTZMRSIpOw0KCQllVHlw", "ZSA9ICJ1bmljb2RlIjsKCQlyZXR1cm4oZVR5cGUpOw0KCX1lbHNlIHsNCgkJZVR5cGUgPSAi", "U0pJUyI7Cgl9DQoJaWYgKCBiRGV0YWlsICE9IHRydWUgKSB7DQoJCXJldHVybiBlVHlwZTsJ", "Cgl9DQoJCgl2YXIgYmluU3RyID0gdGhpcy5yZWFkQmluU3RyKDEwMjQpOwoJdmFyIGNrID0g", "Z2V0U0pJU29yVVRGOChiaW5TdHIubGVuZ3RoLGZ1bmN0aW9uKGkpIHtyZXR1cm4gYmluU3Ry", "LmNoYXJDb2RlQXQoaSk7fSwiU0pJUyIpOw0KCWJpblN0ciA9IHVuZGVmaW5lZDsNCglyZXR1", "cm4gY2s7IAoNCn0NCg0KU3RyaW5nLnByb3RvdHlwZS5yZWFkQWxsPWZ1bmN0aW9uKCkNCnsN", "CglpZighKHRoaXMuaXNFeGlzdEZpbGUoKSkpIHJlVGhyb3coInJlYWRBbGwiLCJub3QgZXhp", "dCIsdGhpcyk7DQoNCgl2YXIgZiA9IGZzby5PcGVuVGV4dEZpbGUodGhpcyxpb21vZGUuRm9y", "UmVhZGluZyk7DQoJdmFyIHJlYWRTdHIgPSAiIjsNCgl0cnkgeyAKCQlyZWFkU3RyPWYuUmVh", "ZEFsbCgpOw0KCX0gY2F0Y2goZSkgew0KCQllY2hvKCJXYXJuaW5nOiIsZSk7DQoJCXJlYWRT", "dHI9Jyc7DQoJfQ0KCWYuQ2xvc2UoKTsNCglyZXR1cm4ocmVhZFN0cik7DQp9DQoNClN0cmlu", "Zy5wcm90b3R5cGUud3JpdGVBbGw9ZnVuY3Rpb24oc3RyKQ0Kew0KCXRyeSB7DQoJCXZhciBi", "T3ZlcndyaXRlPXRydWU7DQoJCXZhciBiVW5pY29kZT1mYWxzZTsNCgkJdmFyIGYgPSBmc28u", "Q3JlYXRlVGV4dEZpbGUodGhpcyxiT3ZlcndyaXRlLGJVbmljb2RlKTsNCg0KCQl2YXIgb3RT", "dHIgPSBzdHIucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxuIik7CgkJCgkJZi5Xcml0ZShvdFN0", "cik7DQoJCW90U3RyPW51bGw7DQoJCQ0KCQlmLkNsb3NlKCk7DQoJfSBjYXRjaChlKSB7DQoJ", "CXJlVGhyb3coIndyaXRlQWxsIix0aGlzLGUpOw0KCX0NCglyZXR1cm4gdHJ1ZTsNCn0NClN0", "cmluZy5wcm90b3R5cGUud3JpdGVBbGxBZGQ9ZnVuY3Rpb24oc3RyKQ0Kew0KCXRyeSB7DQoJ", "CXZhciBiVW5pY29kZT1mYWxzZTsNCgkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKHRoaXMs", "OCx0cnVlKTsNCg0KCQl2YXIgb3RTdHIgPSBzdHIucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxu", "Iik7CgkJZi5Xcml0ZShvdFN0cik7DQoJCW90U3RyPW51bGw7DQoJCWYuQ2xvc2UoKTsNCgl9", "IGNhdGNoKGUpIHsNCgkJcmVUaHJvdygid3JpdGVBbGxBZGQiLHRoaXMsZSk7DQoJfQ0KCXJl", "dHVybiB0cnVlOw0KfQ0KDQoNClN0cmluZy5wcm90b3R5cGUucmVhZEFsbFVURjg9ZnVuY3Rp", "b24oKSB7DQoJaWYoISh0aGlzLmlzRXhpc3RGaWxlKCkpKSByZVRocm93KCJyZWFkQWxsVVRG", "OCIsIm5vdCBleGl0Iix0aGlzKTsNCg0KCXZhciBhZG9kYiA9IFdTY3JpcHQuQ3JlYXRlT2Jq", "ZWN0KCJBRE9EQi5TdHJlYW0iKTsNCglhZG9kYi5UeXBlID0gMjsgCglhZG9kYi5jaGFyc2V0", "ID0gIlVURi04IjsNCglhZG9kYi5vcGVuKCk7DQoJYWRvZGIubG9hZEZyb21GaWxlKHRoaXMp", "Ow0KCXZhciBzdHJUZXh0ID0gYWRvZGIuUmVhZFRleHQoLTEpOwoJYWRvZGIuY2xvc2UoKTsN", "CglhZG9kYj1udWxsOw0KCXJldHVybiBzdHJUZXh0Ow0KfQ0KU3RyaW5nLnByb3RvdHlwZS53", "cml0ZUFsbFVURjg9ZnVuY3Rpb24oc1RleHQpIHsNCgl2YXIgYWRvZGIgPSBXU2NyaXB0LkNy", "ZWF0ZU9iamVjdCgiQURPREIuU3RyZWFtIik7DQoJYWRvZGIuVHlwZSA9IDI7IAoJYWRvZGIu", "Y2hhcnNldCA9ICJVVEYtOCI7DQoJYWRvZGIub3BlbigpOw0KDQoJdmFyIG90U3RyID0gc1Rl", "eHQucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxuIik7Cg0KCWFkb2RiLldyaXRlVGV4dChvdFN0", "ciwwKTsgCQkKCWFkb2RiLlNhdmVUb0ZpbGUodGhpcywgMik7CQoJYWRvZGIuY2xvc2UoKTsN", "CglhZG9kYj1udWxsOw0KCXJldHVybiB0cnVlOw0KfQ0KU3RyaW5nLnByb3RvdHlwZS53cml0", "ZUFsbFVURjhBZGQ9ZnVuY3Rpb24oc1RleHQpIHsNCgl2YXIgc1ByZVRleHQgPSB0aGlzLnJl", "YWRBbGxVVEY4KCk7DQoJdmFyIGFkb2RiID0gV1NjcmlwdC5DcmVhdGVPYmplY3QoIkFET0RC", "LlN0cmVhbSIpOw0KCWFkb2RiLlR5cGUgPSAyOyAKCWFkb2RiLmNoYXJzZXQgPSAiVVRGLTgi", "Ow0KCWFkb2RiLm9wZW4oKTsNCglpZiAoIHNQcmVUZXh0ICE9IG51bGwgKSB7DQoJCWFkb2Ri", "LldyaXRlVGV4dChzUHJlVGV4dCwwKTsgCQkKCX0NCg0KCXZhciBvdFN0ciA9IHNUZXh0LnJl", "cGxhY2UoL1xyXG58XG4vZywiXHJcbiIpOwoNCglhZG9kYi5Xcml0ZVRleHQob3RTdHIsMCk7", "IAkJCglhZG9kYi5TYXZlVG9GaWxlKHRoaXMsIDIpOwkKCWFkb2RiLmNsb3NlKCk7DQoJYWRv", "ZGI9bnVsbDsNCglyZXR1cm4gdHJ1ZTsNCn0NCg0KU3RyaW5nLnByb3RvdHlwZS5yZWFkQWxs", "RW5jb2Rpbmc9ZnVuY3Rpb24oc0VuYykgew0KCXZhciBfRk49InJlYWRBbGxFbmNvZGluZyI7", "DQoNCglpZighKHRoaXMuaXNFeGlzdEZpbGUoKSkpew0KCQlyZVRocm93KCJyZWFkYWxsRW5j", "b2RpbmciLCJub3QgZXhpc3Q6Iix0aGlzKTsNCgkJCgl9DQoJaWYgKGlzTm9uZShzRW5jKSkg", "ew0KCQkKCQlzRW5jPXRoaXMuZ2V0RW5jb2RlKHRydWUpOw0KCX0NCgl2YXIgYWRvZGIgPSBX", "U2NyaXB0LkNyZWF0ZU9iamVjdCgiQURPREIuU3RyZWFtIik7DQoJYWRvZGIuVHlwZSA9IDI7", "IAoNCglzRW5jID0gdG9FbmNBRE8oc0VuYyk7CglpZiAoIHNFbmM9PSJVTktOT1dOIiApIHsN", "CgkJc0VuYz0ic2hpZnQtamlzIjsNCgl9IGVsc2UgaWYgKCBzRW5jID09ICJ1dGYtOG4iICkg", "ew0KCQlzRW5jID0gIlVURi04IjsNCgl9IGVsc2UgaWYgKCBzRW5jID09ICJ1dGYtOEJPTSIg", "KSB7DQoJCXNFbmMgPSAiVVRGLTgiOw0KCX0NCgkNCglpZiAoIHNFbmMgPT0gInNoaWZ0LWpp", "cyIgKXsNCgkJcmV0dXJuKHRoaXMucmVhZEFsbCgpKTsKCX0gZWxzZSBpZiggc0VuYyA9PSAi", "dW5pY29kZSIgfHwgc0VuYyA9PSAidW5pY29kZUZGRkUiIHx8IHNFbmMgPT0gInVuaWNvZGVG", "RUZGIiApIHsgCgkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKHRoaXMsaW9tb2RlLkZvclJl", "YWRpbmcsZmFsc2UsLTEgICk7DQoJCXZhciByZWFkU3RyID0gIiI7DQoJCXRyeSB7IHJlYWRT", "dHI9Zi5SZWFkQWxsKCk7fSBjYXRjaChlKSB7ZWNobygiV2FybmluZzoiLGUpOwlyZWFkU3Ry", "PScnO30NCgkJZi5DbG9zZSgpOw0KCQlyZXR1cm4ocmVhZFN0cik7DQoJfQ0KCWFkb2RiLmNo", "YXJzZXQgPSBzRW5jOwoJYWRvZGIub3BlbigpOw0KCWFkb2RiLmxvYWRGcm9tRmlsZSh0aGlz", "KTsNCgl2YXIgc3RyVGV4dCA9IGFkb2RiLlJlYWRUZXh0KC0xKTsKCWFkb2RiLmNsb3NlKCk7", "DQoJYWRvZGI9bnVsbDsNCglyZXR1cm4gc3RyVGV4dDsNCn0NClN0cmluZy5wcm90b3R5cGUu", "d3JpdGVBbGxFbmNvZGluZz1mdW5jdGlvbihzRW5jLHNUZXh0KSB7DQoJaWYgKCBzVGV4dCA9", "PSB1bmRlZmluZWQgKSB7DQoJCXJlVGhyb3coIndyaXRlQWxsRW5jb2Rpbmc6IiwidGV4dCBp", "cyBudWxsIik7DQoJfQ0KCXZhciBhZG9kYiA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCJBRE9E", "Qi5TdHJlYW0iKTsNCglhZG9kYi5UeXBlID0gMjsgCgkKCXZhciBiQm9tRGVsID0gZmFsc2U7", "Cg0KCXNFbmMgPSB0b0VuY0FETyhzRW5jKTsKCWlmICggc0VuYz09IlVOS05PV04iICkgew0K", "CQlzRW5jPSJzaGlmdC1qaXMiOw0KCX0gZWxzZSBpZiAoIHNFbmMgPT0gInV0Zi04biIgKSB7", "DQoJCXNFbmMgPSAiVVRGLTgiOw0KCQliQm9tRGVsID0gdHJ1ZTsNCgl9IGVsc2UgaWYgKCBz", "RW5jID09ICJ1dGYtOEJPTSIgKSB7DQoJCXNFbmMgPSAiVVRGLTgiOw0KCQliQm9tRGVsID0g", "ZmFsc2U7DQoJfQ0KCWFkb2RiLmNoYXJzZXQgPSBzRW5jOwoJCglhZG9kYi5vcGVuKCk7DQoJ", "dmFyIG90U3RyID0gc1RleHQucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxuIik7CglhZG9kYi5X", "cml0ZVRleHQob3RTdHIsMCk7IAkJCglpZiAoIGJCb21EZWwgKXsNCgkJCgkJdmFyIGFkb0Jp", "biA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCJBRE9EQi5TdHJlYW0iKTsNCgkJYWRvZGIuUG9z", "aXRpb24gPSAwOw0KCQlhZG9kYi5UeXBlID0gMTsKCQkKCQlhZG9CaW4ub3BlbigpOw0KCQlh", "ZG9CaW4uVHlwZSA9IDE7CgkJCgkJYWRvZGIuUmVhZCgzKTsKCQlhZG9kYi5Db3B5VG8oYWRv", "QmluKTsNCgkJYWRvQmluLlNhdmVUb0ZpbGUodGhpcywgMik7CQoJCWFkb0Jpbi5jbG9zZSgp", "OwkNCgkJYWRvQmluPW51bGw7DQoJCWFkb2RiLmNsb3NlKCk7DQoJCWFkb2RiPW51bGw7DQoJ", "CXJldHVybiB0cnVlOw0KCX0gDQoJYWRvZGIuU2F2ZVRvRmlsZSh0aGlzLCAyKTsJCglhZG9k", "Yi5jbG9zZSgpOw0KCWFkb2RiPW51bGw7DQoJcmV0dXJuIHRydWU7DQp9DQoNCiRnbG9iYWwu", "cmVhZEJpbiA9IGZ1bmN0aW9uKHNQYXRoLG5CeXRlKSB7DQoJdmFyIGFyQmluPVtdOw0KCXZh", "ciBiaW5TdHIgPSByZWFkQmluU3RyKHNQYXRoLG5CeXRlKTsNCglmb3IodmFyIGk9MDtpPGJp", "blN0ci5sZW5ndGg7aSsrKSB7DQoJCWFyQmluW2ldPWJpblN0ci5jaGFyQ29kZUF0KGkpOw0K", "CX0NCgliaW5TdHIgPSB1bmRlZmluZWQ7DQoJcmV0dXJuIGFyQmluOw0KfQ0KJGdsb2JhbC5y", "ZWFkQmluU3RyID0gZnVuY3Rpb24oc1BhdGgsbkJ5dGUpIHsNCgkKCQ0KCXZhciBhZFR5cGVC", "aW5hcnkJPTE7DQoJdmFyIGFkVHlwZVRleHQJCT0yOw0KCQoJdmFyIGJTdHJlYW09V1Njcmlw", "dC5DcmVhdGVPYmplY3QoIkFET0RCLlN0cmVhbSIpOw0KCQoJYlN0cmVhbS5PcGVuKCk7DQoJ", "YlN0cmVhbS5UeXBlPWFkVHlwZUJpbmFyeTsNCgliU3RyZWFtLkxvYWRGcm9tRmlsZShzUGF0", "aCk7DQoJCgl2YXIgdFN0cmVhbT1XU2NyaXB0LkNyZWF0ZU9iamVjdCgiQURPREIuU3RyZWFt", "Iik7DQoJdFN0cmVhbS5PcGVuKCk7DQoJdFN0cmVhbS5UeXBlPWFkVHlwZVRleHQ7DQoJdFN0", "cmVhbS5Xcml0ZVRleHQoU3RyaW5nLmZyb21DaGFyQ29kZSgwKSk7DQoJdFN0cmVhbS5Qb3Np", "dGlvbj0wOw0KCXRTdHJlYW0uVHlwZT1hZFR5cGVCaW5hcnk7DQoJdFN0cmVhbS5Qb3NpdGlv", "bj0yOw0KCXZhciB6PXRTdHJlYW0uUmVhZCgxKTsJCgl0U3RyZWFtLlBvc2l0aW9uPTI7DQoJ", "aWYgKCAobkJ5dGU9PXVuZGVmaW5lZCkgfHwgKGJTdHJlYW0uU2l6ZTwgbkJ5dGUpICkgew0K", "CQluQnl0ZSA9IGJTdHJlYW0uU2l6ZTsgCgl9DQoJZm9yKHZhciBQb3M9MDtQb3M8bkJ5dGU7", "UG9zKyspew0KCQkKCQliU3RyZWFtLkNvcHlUbyh0U3RyZWFtLDEpOw0KCQl0U3RyZWFtLldy", "aXRlKHopOw0KCX0NCgl0U3RyZWFtLlBvc2l0aW9uCT0gMDsNCgl0U3RyZWFtLlR5cGUJCT0g", "YWRUeXBlVGV4dDsNCgl2YXIgYmluU3RyID0gdFN0cmVhbS5SZWFkVGV4dCgpOw0KCWJTdHJl", "YW09dW5kZWZpbmVkO3RTdHJlYW09dW5kZWZpbmVkOw0KCXJldHVybiBiaW5TdHI7DQp9DQoN", "Cg0KCg0KU3RyaW5nLnByb3RvdHlwZS5yZWFkQmluID0gZnVuY3Rpb24ocmVhZFNpemVNYXgp", "e3JldHVybiggcmVhZEJpbih0aGlzLHJlYWRTaXplTWF4KSApO30NClN0cmluZy5wcm90b3R5", "cGUucmVhZEJpblN0ciA9IGZ1bmN0aW9uKHJlYWRTaXplTWF4KXtyZXR1cm4oIHJlYWRCaW5T", "dHIodGhpcyxyZWFkU2l6ZU1heCkgKTt9DQoNCgoNClN0cmluZy5wcm90b3R5cGUuc2F2ZUpT", "T04gPSBmdW5jdGlvbihkYXRhLGZ1bmMpew0KCXZhciBqc29uT2JqOw0KCWlmICh0eXBlb2Yg", "SlNPTiA9PT0gJ3VuZGVmaW5lZCcgKSB7DQoJCWpzb25PYmogPSB1SnNvbjsNCgl9IGVsc2Ug", "ew0KCQlqc29uT2JqID0gSlNPTjsNCgl9DQoJdmFyIHBhdGggPSB0aGlzOw0KCXZhciBzSlMg", "PSBqc29uT2JqLnN0cmluZ2lmeShkYXRhLGZ1bmMsIlx0Iik7DQoJcmV0dXJuICggcGF0aC53", "cml0ZUFsbChzSlMpICk7DQp9DQpTdHJpbmcucHJvdG90eXBlLnNhdmVKU09OVVRGOCA9IGZ1", "bmN0aW9uKGRhdGEsZnVuYyl7DQoJdmFyIGpzb25PYmo7DQoJaWYgKHR5cGVvZiBKU09OID09", "PSAndW5kZWZpbmVkJyApIHsNCgkJanNvbk9iaiA9IHVKc29uOw0KCX0gZWxzZSB7DQoJCWpz", "b25PYmogPSBKU09OOw0KCX0NCgl2YXIgcGF0aCA9IHRoaXM7DQoJdmFyIHNKUyA9IGpzb25P", "Ymouc3RyaW5naWZ5KGRhdGEsZnVuYywiXHQiKTsNCgkKCXJldHVybiAoIHBhdGgud3JpdGVB", "bGxFbmNvZGluZygiVVRGOCIsc0pTKSApOw0KfQ0KU3RyaW5nLnByb3RvdHlwZS5sb2FkSlNP", "TiA9IGZ1bmN0aW9uKGZ1bmMpew0KCQoJaWYoISh0aGlzLmlzRXhpc3RGaWxlKCkpKSByZVRo", "cm93KCJsb2FkSlNPTiIsIm5vdCBleGlzdDoiLHRoaXMpOw0KCQ0KCXZhciBwYXRoID0gdGhp", "czsNCglpZighcGF0aC5pc0V4aXN0RmlsZSgpKQ0KCQlyZXR1cm4gbnVsbDsNCgl2YXIgaGV4", "ID0gcGF0aC5yZWFkQmluKDIpOwoJdmFyIHNSZWFkOw0KCWlmICggaGV4WzBdID09IDB4RUYg", "KSB7DQoJCXNSZWFkID0gcGF0aC5yZWFkQWxsVVRGOCgpOwkNCgl9IGVsc2Ugew0KCQlzUmVh", "ZCA9IHBhdGgucmVhZEFsbFVURjgoKTsKCX0NCgkKCQoJdmFyIGRhdGE9bnVsbDsNCglldmFs", "KCJkYXRhPSIrc1JlYWQpOw0KCQoNCglyZXR1cm4gKCBkYXRhICk7DQp9DQoNCgoNClN0cmlu", "Zy5wcm90b3R5cGUucGFyc2VYTUwgPSBmdW5jdGlvbihmdW5jKXsNCgkNCgkKCQ0KCXZhciB4", "bWxEb2MgPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpOw0KCXht", "bERvYy5hc3luYyA9IGZhbHNlOw0KCXhtbERvYy5sb2FkWE1MKHRoaXMpOw0KCXZhciBsb29w", "UGFyc2UgPSBmdW5jdGlvbihvYmopew0KCQl2YXIgcmVzID0ge307IA0KCQl2YXIgb2IgPSB7", "fSwgYXR0ID0gb2JqLmF0dHJpYnV0ZXM7DQoJCWlmIChhdHQgIT0gbnVsbCAmJiBhdHQubGVu", "Z3RoICE9IDApIHsNCgkJCWZvciAodmFyIGEgPSAwLCBsZW5BID0gYXR0Lmxlbmd0aDsgYSA8", "IGxlbkE7IGErKykgew0KCQkJICBvYlthdHRbYV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0g", "PSBhdHRbYV0ubm9kZVZhbHVlOw0KCQkJfQ0KCQkJcmVzLmF0dHIgPSBvYjsNCgkJfQ0KCQlp", "ZiAob2JqLmNoaWxkTm9kZXMubGVuZ3RoID09IDApIHsNCgkJCXJldHVybiByZXM7CgkJfQ0K", "CQl2YXIgY2FjaGVUYWcgPSB7fTsgICAgDQoJCWZvciAodmFyIGkgPSAwLCBsZW4gPSBvYmou", "Y2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsZW47IGkrKyl7DQoJCQl2YXIgY2ggPSBvYmouY2hp", "bGROb2Rlc1tpXTsNCgkJCWlmIChjaC5ub2RlVHlwZSA9PSAzKXsgICAgICAKICAgICAgICBp", "ZiAoY2gubm9kZVZhbHVlLnJlcGxhY2UoL1tcc3xcdHxcbl0vZywgIiIpID09ICIiIHx8DQog", "ICAgICAgICAgY2gubm9kZVZhbHVlID09IG51bGwpIGNvbnRpbnVlOw0KICAgICAgICBlbHNl", "IHJldHVybiBjaC5ub2RlVmFsdWU7DQoJCQl9IGVsc2UgaWYgKGNoLm5vZGVUeXBlID09IDEp", "IHsKICAgICAgICBpZiAoIShjaC50YWdOYW1lIGluIGNhY2hlVGFnKSkgew0KICAgICAgICAg", "IGNhY2hlVGFnW2NoLnRhZ05hbWVdID0gW2FyZ3VtZW50cy5jYWxsZWUoY2gpXTsNCiAgICAg", "ICAgfSBlbHNlIHsNCiAgICAgICAgICBjYWNoZVRhZ1tjaC50YWdOYW1lXS5wdXNoKGFyZ3Vt", "ZW50cy5jYWxsZWUoY2gpKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KCQl9DQoJCXJlcy5kYXRh", "PXt9Ow0KCQlmb3IgKHZhciBwIGluIGNhY2hlVGFnKSB7DQoJCQlpZiAoY2FjaGVUYWdbcF0u", "Y29uc3RydWN0b3IgPT0gQXJyYXkgJiYgY2FjaGVUYWdbcF0ubGVuZ3RoID09IDEpIHsNCgkJ", "CQlyZXMuZGF0YVtwXSA9IGNhY2hlVGFnW3BdWzBdOwoJCQl9IGVsc2Ugew0KCQkJCXJlcy5k", "YXRhW3BdID0gY2FjaGVUYWdbcF07ICAKCQkJfQ0KCQl9DQoJCXJldHVybiByZXM7DQoJfQ0K", "CXJldHVybiBsb29wUGFyc2UoeG1sRG9jKTsNCn0NCg0KU3RyaW5nLnByb3RvdHlwZS5wYXJz", "ZVhNTCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gWE1MVG9KU09OKHRoaXMpfTsNCg0KZnVuY3Rp", "b24gWE1MVG9KU09OKHN0clhNTCkNCnsNCiAgdmFyIHhtbERvYyA9IG5ldyBBY3RpdmVYT2Jq", "ZWN0KCJNaWNyb3NvZnQuWE1MRE9NIik7DQogIHhtbERvYy5hc3luYyA9IGZhbHNlOw0KICB4", "bWxEb2MubG9hZFhNTChzdHJYTUwpOw0KICB2YXIgbG9vcFBhcnNlID0gZnVuY3Rpb24ob2Jq", "KQ0KICB7DQogICAgdmFyIHJlcyA9IHt9LCBjYWNoZVRhZyA9IHt9Ow0KICAgIHZhciBvYiA9", "IHt9LCBhdHQgPSBvYmouYXR0cmlidXRlczsNCiAgICBpZiAoYXR0ICE9IG51bGwgJiYgYXR0", "Lmxlbmd0aCAhPSAwKQ0KICAgIHsNCiAgICAgIGZvciAodmFyIGEgPSAwLCBsZW5BID0gYXR0", "Lmxlbmd0aDsgYSA8IGxlbkE7IGErKykNCiAgICAgIHsNCiAgICAgICAgb2JbYXR0W2FdLm5v", "ZGVOYW1lLnRvTG93ZXJDYXNlKCldID0gYXR0W2FdLm5vZGVWYWx1ZTsNCiAgICAgIH0NCiAg", "ICAgIHJlcy5fYXR0ciA9IG9iOw0KICAgIH0NCiAgICANCiAgICBpZiAob2JqLmNoaWxkTm9k", "ZXMubGVuZ3RoID4gMCkNCiAgICB7DQogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gb2Jq", "LmNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspDQogICAgICB7DQogICAgICAgIHZh", "ciBjaCA9IG9iai5jaGlsZE5vZGVzW2ldOw0KICAgICAgICBpZiAoY2gubm9kZVR5cGUgPT0g", "MykNCiAgICAgICAgew0KICAgICAgICAgIGlmIChjaC5ub2RlVmFsdWUucmVwbGFjZSgvW1xz", "fFx0fFxuXS9nLCAiIikgPT0gIiIgfHwNCiAgICAgICAgICAgICAgY2gubm9kZVZhbHVlID09", "IG51bGwpIGNvbnRpbnVlOw0KICAgICAgICAgIGVsc2UgcmV0dXJuIGNoLm5vZGVWYWx1ZTsN", "CiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChjaC5ub2RlVHlwZSA9PSAxKQ0KICAgICAg", "ICB7DQogICAgICAgICAgKGNoLnRhZ05hbWUgaW4gY2FjaGVUYWcpID8NCiAgICAgICAgICAg", "IGNhY2hlVGFnW2NoLnRhZ05hbWVdLnB1c2goYXJndW1lbnRzLmNhbGxlZShjaCkpIDoNCiAg", "ICAgICAgICAgIGNhY2hlVGFnW2NoLnRhZ05hbWVdID0gW2FyZ3VtZW50cy5jYWxsZWUoY2gp", "XTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAg", "cmV0dXJuICIiOw0KICAgIH0NCiAgICBmb3IgKHZhciBwIGluIGNhY2hlVGFnKQ0KICAgIHsN", "CiAgICAgIChjYWNoZVRhZ1twXS5jb25zdHJ1Y3RvciA9PSBBcnJheSAmJiBjYWNoZVRhZ1tw", "XS5sZW5ndGggPT0gMSkgPw0KICAgICAgICByZXNbcF0gPSBjYWNoZVRhZ1twXVswXSA6IHJl", "c1twXSA9IGNhY2hlVGFnW3BdOw0KICAgIH0NCiAgICByZXR1cm4gcmVzOw0KICB9DQogIHJl", "dHVybiBsb29wUGFyc2UoeG1sRG9jKTsNCn0NCg0KCg0KCiRnbG9iYWwuZG9FeGVjTm9XYWl0", "U2V0dXAgPSBmdW5jdGlvbihiRWNobywgc3RyUGF1c2UpIHsNCg0KCWRvRXhlY05vV2FpdC5w", "cm90b3R5cGUuYkVjaG8gPSAoYkVjaG8gPT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7DQoJaWYg", "KCBzdHJQYXVzZSAhPSB1bmRlZmluZWQgKSB7DQoJCWRvRXhlY05vV2FpdC5wcm90b3R5cGUu", "c3RyUGF1c2UgPSBzdHJQYXVzZTsNCgl9DQoJcmV0dXJuIDsNCn0NCg0KCiRnbG9iYWwuZG9F", "eGVjTm9XYWl0ID0gZnVuY3Rpb24gZG9FeGVjTm9XYWl0KHNDbWRMaW5lcykgew0KDQoJdmFy", "IGJFY2hvID0gZG9FeGVjTm9XYWl0LnByb3RvdHlwZS5iRWNobzsNCgl2YXIgc3RkaW5EYXRh", "ID0gdW5kZWZpbmVkOw0KDQoJdmFyIG9iaiA9IG5ldyBPYmplY3QoKTsNCgl2YXIgc0NtZHMg", "PSAiIjsKDQoJb2JqLmJDb24gPSB0cnVlOyAKDQoJCiAgDQogIAl2YXIgcUZ1bmMgPSAoYXJn", "dW1lbnRzLmxlbmd0aD09MSk/ZnVuY3Rpb24oYSl7cmV0dXJuIGE7fTptdXN0UXVvdGE7DQoJ", "Cg0KCXZhciBvcHRzID0gbnVsbDsKCWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aC0x", "O2krKykgew0KCQlpZiAoIHR5cGVPZihhcmd1bWVudHNbaV0pICE9ICJzdHJpbmciICkgIHsN", "CgkJCQlvcHRzID0gYXJndW1lbnRzW2ldOwoJCQkJY29udGludWU7CgkJfQ0KCQlzQ21kcyAr", "PSBxRnVuYyhhcmd1bWVudHNbaV0pICsgIiAiOw0KCX0NCglzQ21kcyArPSBxRnVuYyhhcmd1", "bWVudHNbaV0pOwoNCgkKCWlmICggaXNPayhvcHRzKSApIHsNCgkJIGJFY2hvID0gKCAiZWNo", "byIgaW4gb3B0cyApID8gb3B0cy5lY2hvIDogZmFsc2U7DQoJCSBzdGRpbkRhdGEgCT0gKCJz", "dGRpbiIgaW4gb3B0cykgPyBvcHRzWyJzdGRpbiJdIDogc3RkaW5EYXRhOw0KCQkgb2JqLmJD", "b24gPSAoICJjb25zb2xlIiBpbiBvcHRzICkgPyBvcHRzLmNvbnNvbGUgOiB0cnVlOwoJfQ0K", "CXZhciBwYXRoVGVtcEZpbGUgPSBnZXRUZW1wRmlsZShnZXRDdXJyZW50UGF0aCgiLmRvRXhl", "Y05vV2FpdCIpLCIubG9nIik7DQoNCglpZiAoIG9iai5iQ29uICApIHsgCgkJCgkJc0NtZHMg", "PSAiQ01ELkVYRSAvQyAiKyBzQ21kcyArICIgPiIgKyAiXCIiICsgcGF0aFRlbXBGaWxlICsg", "IlwiIisgIiAyPiYxIjsNCgkJcGF0aFRlbXBGaWxlLndyaXRlQWxsKCJTdGFydCIpOw0KCQkN", "Cgl9DQoJCgl2YXIgb0V4ZWMgPSBzaC5FeGVjKHNDbWRzKTsNCgl2YXIgaSA9IDA7DQoJdmFy", "IGxlbiA9IDA7DQoJb2JqLnBhdGhUZW1wRmlsZSA9IHBhdGhUZW1wRmlsZTsNCglvYmouU3Ry", "T3V0ID0gbmV3IEFycmF5Ow0KCW9iai5tc2cgPSBvYmouU3RyT3V0OwoJb2JqLm9FeGVjID0g", "b0V4ZWM7CQkKCW9iai5iU3RvcCA9IGZhbHNlOw0KDQoJCglpZiAoIG9iai5iQ29uICApIHsN", "CgkJaWYgKCBpc09rKHN0ZGluRGF0YSkgKSB7DQoJCQlvRXhlYy5TdGRJbi5Xcml0ZShzdGRp", "bkRhdGEpOw0KCQkJb0V4ZWMuU3RkSW4uQ2xvc2UoKTsKCQl9IGVsc2Ugew0KCQkJb0V4ZWMu", "U3RkSW4uV3JpdGVMaW5lKGRvRXhlY05vV2FpdC5wcm90b3R5cGUuc3RyUGF1c2UpOw0KCQl9", "DQoJfQ0KCQoJb2JqLmV4aXRDb2RlID0gb2JqLkV4aXRDb2RlID0gb0V4ZWMuRXhpdENvZGU7", "IAoJb2JqLmlzUnVubmluZyA9IGZ1bmN0aW9uKCkgew0KCQl2YXIgYkVjaG8gPSBkb0V4ZWNO", "b1dhaXQucHJvdG90eXBlLmJFY2hvOw0KCgkJaWYgKCB0aGlzLm9FeGVjID09IG51bGwgKSB7", "DQoJCQkKCQkJcmV0dXJuIGZhbHNlOwkNCgkJfQ0KCQlpZiAoIHRoaXMub0V4ZWMuU3RhdHVz", "ID09IDAgKSB7DQoJCQkKCQkJcmV0dXJuIHRydWU7DQoJCX0JCQ0KCQkKCQkNCgkJCgkJdGhp", "cy5leGl0Q29kZSA9IHRoaXMuRXhpdENvZGUgPSB0aGlzLm9FeGVjLkV4aXRDb2RlOw0KCQkK", "CQlpZiAoIHRoaXMuYkNvbiApIHsNCgkJCXZhciBmID0gZnNvLk9wZW5UZXh0RmlsZSh0aGlz", "LnBhdGhUZW1wRmlsZSxpb21vZGUuRm9yUmVhZGluZyk7DQoJCQl3aGlsZSghZi5BdEVuZE9m", "U3RyZWFtKSB7DQoJCQkJdmFyIGxlbiA9IG9iai5TdHJPdXQucHVzaCggZi5SZWFkTGluZSgp", "ICk7DQoJCQkJaWYoYkVjaG8pIHsNCgkJCQkJZWNobyhvYmouU3RyT3V0W2xlbi0xXSk7DQoJ", "CQkJfQ0KCQkJfQ0KCQkJZi5DbG9zZSgpOw0KCQkJZiA9IG51bGw7DQoJCX0NCgkJdGhpcy5v", "RXhlYyA9IG51bGw7CQoJCWlmICggdGhpcy5wYXRoVGVtcEZpbGUuaXNFeGlzdEZpbGUoKSAp", "IHsNCgkJCXZhciBjbnRUcnkgPSAxMDsNCgkJCWRvIHsNCgkJCQl0cnkgew0KCQkJCQlmc28u", "RGVsZXRlRmlsZSh0aGlzLnBhdGhUZW1wRmlsZSk7CgkJCQl9IGNhdGNoKGUpIHsNCgkJCQkJ", "d3MuU2xlZXAoMTAwMCk7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJ", "CX0gd2hpbGUoY250VHJ5LS0pOw0KCQl9DQoJCXJldHVybiBmYWxzZTsJDQoJfQ0KCW9iai5T", "dG9wID0gZnVuY3Rpb24oc3RvcEZ1bmMpIHsNCgkJdmFyIGJFY2hvID0gZG9FeGVjTm9XYWl0", "LnByb3RvdHlwZS5iRWNobzsNCgkJaWYgKCB0aGlzLm9FeGVjID09IG51bGwgKSB7DQoJCQkK", "CQkJcmV0dXJuOwkNCgkJfQ0KCQlpZiAoIGlzT2soc3RvcEZ1bmMpICkgew0KCQkJZWNobygi", "aW5FeGVjTm9XYWl0OlN0b3AiKTsNCgkJCXN0b3BGdW5jKHRoaXMub0V4ZWMpOw0KCQkJcmV0", "dXJuIG9iajsNCgkJfQ0KCQlpZiAoIHRoaXMub0V4ZWMuU3RhdHVzID09IDAgKSB7DQoJCQkK", "CQkJdGhpcy5vRXhlYy5UZXJtaW5hdGUoKTsKCQkJdGhpcy5iU3RvcCA9IHRydWU7DQoJCQkK", "CQkJdmFyIGNudCA9IDEwOw0KCQkJd2hpbGUoIHRoaXMuaXNSdW5uaW5nKCkgKSB7DQoJCQkJ", "d3MuU2xlZXAoMTAwMCk7DQoJCQkJaWYgKCBjbnQtLSA8IDAgKSB7DQoJCQkJCWJyZWFrOwoJ", "CQkJfSAJDQoJCQl9DQoJCQl0aGlzLm9FeGVjID0gbnVsbDsJCgkJCXRoaXMuZXhpdENvZGUg", "PSB0aGlzLkV4aXRDb2RlID0gLTE7DQoJCQlyZXR1cm47DQoJCX0NCgl9DQoJcmV0dXJuIG9i", "ajsNCn0NCgokZ2xvYmFsLmRvRXhlY05vV2FpdC5wcm90b3R5cGUuYkVjaG8gPSBmYWxzZTsN", "CiRnbG9iYWwuZG9FeGVjTm9XYWl0LnByb3RvdHlwZS5zdHJQYXVzZSA9ICJ5eXlcbiI7IAoN", "CgokZ2xvYmFsLmRvRXhlY1F1ZXVlID0gZnVuY3Rpb24obk1heFRocmVhZHMpIHsNCg0KCXZh", "ciBvYmogPSBuZXcgT2JqZWN0KCk7DQoJb2JqLm5NYXhUaHJlYWRzID0gICggbk1heFRocmVh", "ZHMgPT0gdW5kZWZpbmVkICkgPyA1IDogIG5NYXhUaHJlYWRzOw0KCW9iai5jRXhlQ21kcyA9", "IFtdOwoJb2JqLmNRdWVDbWRzID0gW107CglvYmoublJ1bm5pbmcgPSAwOyAKCW9iai5sZW5n", "dGggPSAwOw0KCQoJCglvYmoudXBkYXRlID0gZnVuY3Rpb24oKSB7DQoJCQoJCXZhciBiVXBk", "YXRlID0gZmFsc2U7DQoJCXRoaXMublJ1bm5pbmcgPSAwOw0KCQlmb3IodmFyIGkgPSAwOyBp", "IDwgdGhpcy5jRXhlQ21kcy5sZW5ndGg7IGkrKyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21k", "c1tpXS5pc1J1bm5pbmcoKSApIHsNCgkJCQl0aGlzLm5SdW5uaW5nKys7DQoJCQl9DQoJCX0N", "CgkJCgkJCgkJaWYgKCB0aGlzLmNRdWVDbWRzLmxlbmd0aCA+IDAgKSB7DQoJCQkKCQkJCgkJ", "CWlmICggdGhpcy5uUnVubmluZyA8IHRoaXMubk1heFRocmVhZHMgKSB7DQoJCQkJCgkJCQkK", "CQkJCXZhciBxT2JqID0gdGhpcy5jUXVlQ21kcy5zaGlmdCgpOw0KCQkJCQoJCQkJdmFyIGV4", "T2JqID0gZG9FeGVjTm9XYWl0KHFPYmouc0NtZHMpOw0KCQkJCQoJCQkJZXhPYmouc0pvYk5h", "bWUgPSBxT2JqLnNKb2JOYW1lOw0KCQkJCXRoaXMuY0V4ZUNtZHMucHVzaChleE9iaik7IAoJ", "CQkJdGhpcy5uUnVubmluZysrOwoJCQkJCgkJCQliVXBkYXRlPXRydWU7DQoJCQkJCgkJCX0g", "ZWxzZSB7DQoJCQkJCgkJCX0NCgkJfQ0KCQlyZXR1cm4gYlVwZGF0ZTsNCgl9DQoJCglvYmou", "cHVzaENtZCA9IGZ1bmN0aW9uKCBzSm9iTmFtZSwgc0NtZGxpbmUgKSB7DQoJCXRoaXMubGVu", "Z3RoKys7DQoJCXRoaXMublJ1bm5pbmcgPSAwOw0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhp", "cy5jRXhlQ21kcy5sZW5ndGg7IGkrKyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21kc1tpXS5p", "c1J1bm5pbmcoKSApIHsNCgkJCQl0aGlzLm5SdW5uaW5nKys7DQoJCQl9DQoJCX0NCgkJaWYg", "KCB0aGlzLm5SdW5uaW5nIDwgdGhpcy5uTWF4VGhyZWFkcyApIHsNCgkJCQoJCQl2YXIgc0Nt", "ZHMgPSAiIjsNCgkJCWZvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aC0xO2krKykgew0K", "CQkJCXNDbWRzICs9IGFyZ3VtZW50c1tpXSArICIgIjsNCgkJCX0NCgkJCXNDbWRzICs9IGFy", "Z3VtZW50c1tpXTsKCQkJdmFyIGV4T2JqID0gZG9FeGVjTm9XYWl0KHNDbWRzKTsNCgkJCWV4", "T2JqLnNKb2JOYW1lID0gc0pvYk5hbWU7DQoJCQlleE9iai5pc1J1bm5pbmcoKTsKCQkJdGhp", "cy5jRXhlQ21kcy5wdXNoKGV4T2JqKTsgCgkJCXRoaXMublJ1bm5pbmcrKzsKCQl9IGVsc2Ug", "ew0KCQkJCgkJCXZhciBxT2JqID0gbmV3IE9iamVjdCgpOw0KCQkJcU9iai5zSm9iTmFtZSA9", "IHNKb2JOYW1lOw0KCQkJcU9iai5zQ21kcyA9ICIiOw0KCQkJZm9yKHZhciBpPTE7aTxhcmd1", "bWVudHMubGVuZ3RoLTE7aSsrKSB7DQoJCQkJcU9iai5zQ21kcyArPSBhcmd1bWVudHNbaV0g", "KyAiICI7DQoJCQl9DQoJCQlxT2JqLnNDbWRzICs9IGFyZ3VtZW50c1tpXTsKCQkJdGhpcy5j", "UXVlQ21kcy5wdXNoKHFPYmopOw0KCQl9DQoJCXJldHVybiB0aGlzOw0KCX0NCgkKCW9iai5z", "U3RhdGUgPSBmdW5jdGlvbigpIHsNCgkJdmFyIG5BbGwgPSB0aGlzLmdldE51bU9mQWxsQ21k", "cygpOw0KCQl2YXIgbkVuZCA9IHRoaXMuZ2V0TnVtT2ZFbmRDbWRzKCkgDQoJCXJldHVybiAo", "IkFsbCgiKyBuQWxsICsgIiksRW5kKCIgKyBuRW5kICsgIiksUmVtYWluKCIgKyhuQWxsLW5F", "bmQpICsiKSIpOw0KCQkKCQkKCQkKCQkKCQkKCQkKCQkKDQoJfQ0KCQoJb2JqLmlzQWxsRW5k", "ID0gZnVuY3Rpb24oKSB7DQoJCQoJCXdoaWxlKCB0aGlzLnVwZGF0ZSgpID09IHRydWUgKSB7", "DQoJCQk7CgkJfQ0KCQl2YXIgbiA9IHRoaXMuZ2V0TnVtT2ZSZW1haW5DbWRzKCk7DQoJCQoJ", "CWlmICggbiA+IDAgKSB7DQoJCQlyZXR1cm4gZmFsc2U7CQoJCX0NCgkJcmV0dXJuIHRydWU7", "IAkKCX0NCgkNCgkKCW9iai5nZXROdW1PZkFsbENtZHMgPSBmdW5jdGlvbigpIHsNCgkJcmV0", "dXJuICh0aGlzLmNFeGVDbWRzLmxlbmd0aCArIHRoaXMuY1F1ZUNtZHMubGVuZ3RoKTsNCgl9", "DQoJCglvYmouZ2V0TnVtT2ZFbmRDbWRzID0gZnVuY3Rpb24oKSB7DQoJCXRoaXMublJ1bm5p", "bmcgPSAwOw0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5jRXhlQ21kcy5sZW5ndGg7IGkr", "KyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21kc1tpXS5pc1J1bm5pbmcoKSApIHsNCgkJCQl0", "aGlzLm5SdW5uaW5nKys7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICh0aGlzLmNFeGVDbWRzLmxl", "bmd0aCAtIHRoaXMublJ1bm5pbmcpOw0KCX0NCgkKCW9iai5nZXROdW1PZlJlbWFpbkNtZHMg", "PSBmdW5jdGlvbigpIHsNCgkJcmV0dXJuICh0aGlzLmdldE51bU9mQWxsQ21kcygpIC0gdGhp", "cy5nZXROdW1PZkVuZENtZHMoKSk7DQoJfQ0KCQoJb2JqLmdldEV4ZWNPYmogPSBmdW5jdGlv", "biggbm8gKSB7DQoJCXJldHVybiB0aGlzLmNFeGVDbWRzW25vXTsNCgl9DQoJCglvYmouc3Rv", "cEFsbCA9IGZ1bmN0aW9uKCkgew0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5jRXhlQ21k", "cy5sZW5ndGg7IGkrKyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21kc1tpXS5pc1J1bm5pbmco", "KSApIHsNCgkJCQl0aGlzLmNFeGVDbWRzW2ldLnN0b3AoKTsNCgkJCX0NCgkJfQ0KCX0NCgly", "ZXR1cm4gb2JqOw0KfQ0KCg0KCiRnbG9iYWwuZ2V0VGVtcEZvbGRlciA9IGZ1bmN0aW9uKGJh", "c2VQYXRoLCBiQ3JlYXRlKSB7CQ0KDQoJdmFyIGJhc2VQYXRoID0gKCBiYXNlUGF0aCA9PSB1", "bmRlZmluZWQgfHwgYmFzZVBhdGggPT0gIiIgKSA/DQoJCQkJCSAgZnNvLkdldFNwZWNpYWxG", "b2xkZXIoMik6YmFzZVBhdGg7DQoJdmFyIGJDcmVhdGUgPSAoIGJDcmVhdGUgPT0gdW5kZWZp", "bmVkIHx8IGJDcmVhdGUgPT0gdHJ1ZSApID8gdHJ1ZSA6IGZhbHNlOw0KCQ0KCXZhciBwYXRo", "ID0gZnNvLkJ1aWxkUGF0aChiYXNlUGF0aCxmc28uR2V0VGVtcE5hbWUoKSk7DQoJCgl3aGls", "ZSggcGF0aC5pc0V4aXN0Rm9sZGVyKCkgKSB7DQoJCQoJCXBhdGggPSBmc28uQnVpbGRQYXRo", "KGJhc2VQYXRoLGZzby5HZXRUZW1wTmFtZSgpKTsNCgl9DQoJaWYgKCBiQ3JlYXRlICkgew0K", "CQl2YXIgblJldHJ5PTU7IA0KCQl3aGlsZShuUmV0cnktLSkgew0KCQkJdHJ5IHsgDQoJCQkJ", "aWYgKCAhcGF0aC5nZXRQYXJlbnRQYXRoKCkuaXNFeGlzdEZvbGRlcigpICkgew0KCQkJCQkK", "CQkJCQlmc28uQ3JlYXRlRm9sZGVyKHBhdGguZ2V0UGFyZW50UGF0aCgpKTsNCgkJCQl9DQoJ", "CQkJZnNvLkNyZWF0ZUZvbGRlcihwYXRoKTsNCgkJCX0gY2F0Y2goZSl7DQoJCQkJZWNobygi", "UmV0cnkgdGVtcEZvbGRlcjoiLG5SZXRyeSwiOiIscGF0aCk7DQoJCQkJcGF0aCA9IGZzby5C", "dWlsZFBhdGgoYmFzZVBhdGgsZnNvLkdldFRlbXBOYW1lKCkpOw0KCQkJCWNvbnRpbnVlOwoJ", "CQl9DQoJCQlicmVhazsNCgkJfQ0KCQkKCQlleGl0LnB1c2goDQoJCQlmdW5jdGlvbigpew0K", "CQkJCWlmICggcGF0aC5pc0V4aXN0Rm9sZGVyKCkgKXsNCgkJCQkJdHJ5IHsNCgkJCQkJCWZz", "by5EZWxldGVGb2xkZXIocGF0aCx0cnVlKTsNCgkJCQkJfSBjYXRjaCAoZSkgew0KCQkJCQkJ", "Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkpOw0KCX0NCglyZXR1cm4oIHBhdGggKTsNCn0N", "Cg0KCiRnbG9iYWwuZ2V0VGVtcEZpbGUgPSBmdW5jdGlvbihiYXNlRm9sZGVyLCBzRXh0KXsN", "Cg0KCWJhc2VGb2xkZXIgPSAoIGJhc2VGb2xkZXIgPT0gdW5kZWZpbmVkIHx8IGJhc2VGb2xk", "ZXIgPT0gIiIgKSA/DQoJCQkJCQlmc28uR2V0U3BlY2lhbEZvbGRlcigyKTpiYXNlRm9sZGVy", "Ow0KCXNFeHQgPSAoIHNFeHQgPT0gdW5kZWZpbmVkICkgID8gICIudG1wIiA6IHNFeHQ7DQoN", "Cgl2YXIgcGF0aCA9IGZzby5CdWlsZFBhdGgoYmFzZUZvbGRlcixmc28uR2V0VGVtcE5hbWUo", "KStzRXh0KTsNCgkKCXdoaWxlKCBwYXRoLmlzRXhpc3RGaWxlKCkgKSB7DQoJCQoJCXBhdGgg", "PSBmc28uQnVpbGRQYXRoKGJhc2VGb2xkZXIsZnNvLkdldFRlbXBOYW1lKCkrc0V4dCk7DQoJ", "fQ0KCWlmICggIXBhdGguZ2V0UGFyZW50UGF0aCgpLmlzRXhpc3RGb2xkZXIoKSApIHsNCgkJ", "CgkJZnNvLkNyZWF0ZUZvbGRlcihwYXRoLmdldFBhcmVudFBhdGgoKSk7DQoJfQ0KCXJldHVy", "biggcGF0aCApOw0KfQ0KDQoKDQoKJGdsb2JhbC5wYXVzZSA9IGZ1bmN0aW9uKHRpdGxlKSB7", "DQoNCgl0aXRsZSA9ICh0aXRsZSA9PSB1bmRlZmluZWQgKT8gIlBsZWFzZSBlbnRlciBrZXk6", "IiA6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKS5qb2luKCIiKTsN", "CglXU2NyaXB0LlN0ZE91dC5Xcml0ZSh0aXRsZSk7DQoJaWYgKCB3cy5TdGRJbi5BdEVuZE9m", "U3RyZWFtICkNCgkJcmV0dXJuIG51bGw7DQoJdmFyIHN0cj0gd3MuU3RkSW4uUmVhZExpbmUo", "KTsNCglyZXR1cm4gc3RyOw0KfQ0KDQoKJGdsb2JhbC5kbXAgPSBmdW5jdGlvbiggX3ZhbHVl", "XywgX2lkeF8gKSB7IAoNCgl2YXIgX3NfPSIiOw0KCWlmIChfaWR4XyA9PSB1bmRlZmluZWQg", "KSB7DQoJCV9zXyA9ICJlY2hvKCIrICJcIiIgKyBfdmFsdWVfICsgIjpcIixbIiArIF92YWx1", "ZV8gKyAiXSk7IjsNCgkJcmV0dXJuIGV2YWwoX3NfKTsNCgl9IGVsc2Ugew0KCQlfc18gPSAi", "ZWNobygiKyAiXCIiICsgX3ZhbHVlXyArICJbIiArIF9pZHhfICsgIl0iICsgIjpcIiwiICsg", "X3ZhbHVlXyArIlsiICsgX2lkeF8gKyJdIiArICIpOyI7DQoJCXJldHVybiBldmFsKF9zXyk7", "DQoJfQ0KfQ0KDQoNCgoKDQokZ2xvYmFsLnJlYWRLZXlWYWx1ZSA9IGZ1bmN0aW9uKHBhdGhL", "ZXlWYWx1ZUZpbGUsIG9wdERpYykgew0KCXZhciBvYmogPSBuZXcgT2JqZWN0KCk7DQoJb2Jq", "LmEgPSB7fTsKCW9iai5hS2V5TGlzdCA9IG5ldyBBcnJheSgpOwoJb2JqLnBhdGhGaWxlID0g", "cGF0aEtleVZhbHVlRmlsZTsNCglvYmoubGFzdENvbW1lbnRzID0gW107DQoJaWYoICFwYXRo", "S2V5VmFsdWVGaWxlLmlzRXhpc3RGaWxlKCkgKXsNCgkJZWNobygiRmlsZSBpcyBub3QgZXhp", "c3Q6IixwYXRoS2V5VmFsdWVGaWxlKTsNCgkJcmV0dXJuIG51bGw7DQoJfQ0KCXZhciBmID0g", "ZnNvLk9wZW5UZXh0RmlsZShwYXRoS2V5VmFsdWVGaWxlLGlvbW9kZS5Gb3JSZWFkaW5nKTsN", "Cgl2YXIgcyxtLG1hOw0KCXZhciBrPSIiLHY9IiI7DQoJdmFyIHNFbHNlPVtdOwoNCgl3aGls", "ZSghZi5BdEVuZE9mU3RyZWFtKSB7DQoJCXMgPSBmLlJlYWRMaW5lKCk7DQoJCXZhciBwb3M9", "MDsNCgkJaWYgKChtID0gcy5tYXRjaCgvXlwqXCooW146XHRdKilbIFx0XSpcOlsgXHRdKigu", "KikkLykpICE9IG51bGwpIHsNCgkJCWsgPSBtWzFdOw0KCQkJdiA9IHNraXBRdW90YShtWzJd", "KTsNCgkJCW9iai5hW2tdID0ge307DQoJCQlvYmouYVtrXS52YWwgPSBbXTsNCgkJCW9iai5h", "W2tdLnZhbC5wdXNoKHYpOw0KCQkJb2JqLmFLZXlMaXN0LnB1c2goayk7DQoJCQlvYmouYVtr", "XS5zRWxzZSA9IFtdOw0KCQkJb2JqLmFba10uc0Vsc2VbMF0gPSBzRWxzZS5jb25jYXQoKTsN", "CgkJCXNFbHNlID0gW107CgkJfSBlbHNlIGlmICgobWEgPSBzLm1hdGNoKC9eWyBcdF0qXCtc", "K1sgXHRdKjpbIFx0XSooLiopJC8pKSAhPSBudWxsKSB7DQoJCQkKCQkJcG9zPW9iai5hW2td", "LnZhbC5wdXNoKHNraXBRdW90YShtYVsxXSkpLTE7DQoJCQlvYmouYVtrXS5zRWxzZVtwb3Nd", "ID0gc0Vsc2UuY29uY2F0KCk7DQoJCQlzRWxzZSA9IFtdOwoJCX0gZWxzZSB7DQoJCQkKCQkJ", "c0Vsc2UucHVzaChzKTsKCQl9DQoJfQ0KCW9iai5sYXN0Q29tbWVudHMgPXNFbHNlOw0KCWYu", "Q2xvc2UoKTsNCg0KCglvYmouaXNLZXkgPSBmdW5jdGlvbihrZXkpIHsNCgkJaWYgKHRoaXMu", "YVtrZXldID09IHVuZGVmaW5lZCl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJcmV0dXJu", "IHRydWU7DQoJfQ0KCW9iai5nZXRWYWx1ZSA9IGZ1bmN0aW9uKGtleSxubykgew0KCQlpZiAo", "dGhpcy5hW2tleV0gPT0gdW5kZWZpbmVkKXsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCWlm", "ICggbm8gPT0gdW5kZWZpbmVkICkgew0KCQkJCgkJCW5vID0gMDsJDQoJCX0NCgkJcmV0dXJu", "ICB0aGlzLmFba2V5XS52YWxbbm9dOw0KCX0NCglvYmouZ2V0QXJyYXlOdW0gPSBmdW5jdGlv", "bihrZXkpIHsNCgkJaWYgKHRoaXMuYVtrZXldID09IHVuZGVmaW5lZCl7DQoJCQlyZXR1cm4g", "MDsNCgkJfQ0KCQlyZXR1cm4gdGhpcy5hW2tleV0udmFsLmxlbmd0aDsNCgl9DQoJb2JqLmdl", "dEtleUxpc3QgPSBmdW5jdGlvbigpIHsNCgkJcmV0dXJuIHRoaXMuYUtleUxpc3Q7CQ0KCX0N", "CglvYmouc2V0VmFsdWUgPSBmdW5jdGlvbihrZXksdil7DQoJCWlmKHRoaXMuYVtrZXldID09", "IHVuZGVmaW5lZCl7DQoJCQkKCQkJdGhpcy5hW2tleV0gPSB7fTsNCgkJCXRoaXMuYVtrZXld", "LnZhbCA9IFtdOw0KCQkJdGhpcy5hW2tleV0uc0Vsc2UgPSBbXTsNCgkJCXRoaXMuYVtrZXld", "LnZhbC5wdXNoKHYpOw0KCQkJdGhpcy5hS2V5TGlzdC5wdXNoKGtleSk7DQoJCQlyZXR1cm4g", "dGhpczsNCgkJfQ0KCQkKCQlpZiAoIHYgaW5zdGFuY2VvZiBBcnJheSApIHsKCQkJdGhpcy5h", "W2tleV0udmFsID0gdi5zbGljZSgwKTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuYVtrZXldLnZh", "bCA9IFtdOw0KCQkJCgkJCXRoaXMuYVtrZXldLnZhbC5wdXNoKHYpOw0KCQkJCgkJfQ0KDQoJ", "CQoJCQoJCQoJCQoJCXJldHVybiB0aGlzOw0KCX0NCgkKDQoJb2JqLnNhdmVGaWxlID0gZnVu", "Y3Rpb24oc1BhdGgpew0KCQl2YXIgcXQgPSAiXCIiOw0KCQlpZiAoc1BhdGggPT0gdW5kZWZp", "bmVkICkNCgkJCXNQYXRoID0gdGhpcy5wYXRoRmlsZTsNCgkJdmFyIG90U3RyPSIiOw0KCQlm", "b3IodmFyIGk9MDtpPHRoaXMuYUtleUxpc3QubGVuZ3RoO2krKyl7DQoJCQl2YXIgc0tleSA9", "IHRoaXMuYUtleUxpc3RbaV07DQoJCQl2YXIgYSA9IHRoaXMuYVtzS2V5XTsNCgkJCWlmICgo", "YS5zRWxzZSAhPSB1bmRlZmluZWQpICYmIChhLnNFbHNlLmxlbmd0aCkpewoJCQkJZm9yKHZh", "ciBqPTA7ajxhLnNFbHNlWzBdLmxlbmd0aDtqKyspIHsNCgkJCQkJb3RTdHIgKz0gZWNob1N0", "cihhLnNFbHNlWzBdW2pdKTsJCQoJCQkJfQ0KCQkJfQ0KCQkJb3RTdHIgKz0gZWNob1N0cigi", "KioiLHNLZXksIjoiLHF0LGEudmFsWzBdLHF0KTsJCgkJCWZvcih2YXIgaj0xO2o8YS52YWwu", "bGVuZ3RoO2orKykgew0KCQkJCWlmICggYS5zRWxzZSAhPSB1bmRlZmluZWQgJiYgKGEuc0Vs", "c2UubGVuZ3RoKSkgew0KCQkJCQlmb3IodmFyIGNMPTA7IGNMIDwgKGEuc0Vsc2Vbal0gIT0g", "dW5kZWZpbmVkKSAmJiBhLnNFbHNlW2pdLmxlbmd0aDtjTCsrKXsNCgkJCQkJCW90U3RyICs9", "IGVjaG9TdHIoYS5zRWxzZVtqXVtjTF0pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCW90U3RyICs9", "IGVjaG9TdHIoIlx0Kys6IixxdCxhLnZhbFtqXSxxdCk7CQoJCQl9DQoJCX0NCgkJCgkJZm9y", "KHZhciBpPTA7IGk8IHRoaXMubGFzdENvbW1lbnRzLmxlbmd0aDsgaSsrICkNCgkJCW90U3Ry", "ICs9IGVjaG9TdHIodGhpcy5sYXN0Q29tbWVudHNbaV0pOw0KCQkKCQlzUGF0aC53cml0ZUFs", "bChvdFN0cik7DQoJfQ0KDQoNCgl2YXIgYkV4cGFuZE1hY3JvID0gdHJ1ZTsNCglpZiAoICFp", "c05vbmUob3B0RGljKSApIHsNCgkJaWYgKCAoImV4cGFuZE1hY3JvIiBpbiBvcHREaWMgKSYm", "KG9wdERpYy5leHBhbmRNYWNybz09ZmFsc2UpICkgew0KCQkJYkV4cGFuZE1hY3JvID0gZmFs", "c2U7DQoJCX0NCgl9DQoJaWYgKCBiRXhwYW5kTWFjcm8gKSB7DQoJCXZhciBrZXlzID0gb2Jq", "LmdldEtleUxpc3QoKTsNCgkJZm9yKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoO2krKyl7", "DQoJCQl2YXIgayA9IGtleXNbaV07CQ0KCQkJZm9yKHZhciBqPTA7IGogPCBvYmouZ2V0QXJy", "YXlOdW0oayk7aisrKXsNCgkJCQkKCQkJCWZvcih2YXIgciA9IDA7IHIgPCBrZXlzLmxlbmd0", "aDsgcisrICkgew0KCQkJCQl2YXIgbWFjS2V5PWtleXNbcl07DQoJCQkJCW9iai5hW2tdLnZh", "bFtqXSA9IChvYmouYVtrXS52YWxbal0pLnJlcGxhY2UoICgiJSIrbWFjS2V5KyIlIiksb2Jq", "LmdldFZhbHVlKG1hY0tleSkpOw0KCQkJCX0NCgkJCX0JDQoJCX0NCgl9DQoJcmV0dXJuIG9i", "ajsNCn0NCg0KDQoKJGdsb2JhbC5tYWtlQ21kTGluZSA9IGZ1bmN0aW9uKHNDbWRMaW5lcykg", "ew0KDQoJaWYgKCB0eXBlT2Yoc0NtZExpbmVzKSA9PSAiYXJyYXkiICkgew0KCQkKCQlyZXR1", "cm4gKGFyZ3VtZW50cy5jYWxsZWUuYXBwbHkobnVsbCxzQ21kTGluZXMpKTsNCgl9DQoJdmFy", "IHNDbWRzPSIiOw0KCWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspIHsNCgkJ", "aWYgKCB0eXBlT2YoYXJndW1lbnRzW2ldKSA9PSAib2JqZWN0IiApIHsKCQkJY29udGludWU7", "CgkJfQ0KCQlpZiAoIHNDbWRzIT0iIikgc0NtZHMrPSIgIjsNCgkJc0NtZHMgKz0gKG11c3RR", "dW90YShhcmd1bWVudHNbaV0pKTsNCgl9DQoJCglyZXR1cm4gc0NtZHM7DQp9DQoNCgokZ2xv", "YmFsLm11c3RRdW90YSA9IGZ1bmN0aW9uKHBsaW5lLCBzZXApIHsNCg0KCXZhciBzdHIgPSBw", "bGluZS50b1N0cmluZygpOw0KCQoJaWYgKHN0ci5tYXRjaCgvXlwiLipcIiQvKSkgew0KCQly", "ZXR1cm4gc3RyOyAKCX0NCgkKCWlmICggc3RyLm1hdGNoKC9bXHQgXSsvKSApIHsNCgkJaWYg", "KCBzZXAgPT09IHVuZGVmaW5lZCApIHsNCgkJCXJldHVybiAoIlwiIitzdHIrIlwiIik7DQoJ", "CX0gZWxzZSB7DQoJCQlyZXR1cm4gKHNlcCtzdHIrc2VwKTsKCQl9DQoJfQ0KCXJldHVybiBz", "dHI7Cn0NCg0KCgoNCg0KJGdsb2JhbC5za2lwUXVvdGEgPSBmdW5jdGlvbihzdHIpIHsNCgl2", "YXIgbSA9IHN0ci5tYXRjaCgvXlwiKC4qKVwiJC8pOw0KCWlmICggbSApIHsNCgkJcmV0dXJu", "IG1bMV07DQoJfSBlbHNlIHsNCgkJcmV0dXJuIHN0cjsJDQoJfQ0KfQ0KDQoNCgokZ2xvYmFs", "Lm11c3REaXIgPSBmdW5jdGlvbih3UGF0aCkgew0KCQ0KCWlmICggd1BhdGguY2hhckF0KHdQ", "YXRoLmxlbmd0aC0xKSAhPSAiXFwiICkgew0KCQlyZXR1cm4gKHdQYXRoICsgIlxcIik7DQoJ", "fQ0KCXJldHVybiB3UGF0aDsNCn0NCg0KCg0KDQokZ2xvYmFsLnNwbGl0TGluZSA9IGZ1bmN0", "aW9uKHN0cikgew0KCXZhciByZSA9IC9cclxufFxyfFxuL2csIHN0PTAsIHY9W107DQoJZm9y", "ICh2YXIgYXI9bnVsbDsoYXIgPSByZS5leGVjKHN0cikpICE9IG51bGw7IHN0PWFyLmxhc3RJ", "bmRleCkgew0KCQl2LnB1c2goc3RyLnN1YnN0cmluZyhzdCwgYXIuaW5kZXgpKTsNCgkJc3Qg", "PSBhci5sYXN0SW5kZXg7DQoJfQ0KCWlmICggc3QgIT09IHN0ci5sZW5ndGggKSB7DQoJCXYu", "cHVzaChzdHIuc3Vic3RyaW5nKHN0LCBzdHIubGVuZ3RoKSk7CQoJfQ0KCXJldHVybiB2Ow0K", "fQ0KCgoKDQpTdHJpbmcucHJvdG90eXBlLnNwbGl0TGluZSA9IGZ1bmN0aW9uKCl7IHJldHVy", "biBzcGxpdExpbmUodGhpcyk7IH07DQoNCgoNCiRnbG9iYWwucmVtb3ZlQ29tbWVudD1mdW5j", "dGlvbihzdHIpIHsNCgkKCXJldHVybiBzdHIucmVwbGFjZSgvKFwvKSg/OlwqW1xzXFNdKj9c", "KlwvfFwvLiopfCIoPzpcXFtcc1xTXXxbXlxcXG4iXSkqInwnKD86XFxbXHNcU118W15cXFxu", "J10pKid8PCFcW0NEQVRBXFtbXHNcU10qP1xdXF0+fFwvKD86XFwufFxbKD86XFwufFteXG5c", "XV0pKlxdfFteXG4vXSkrXC9cdyovZywgZnVuY3Rpb24oJDAsICQxKSB7DQoJCXJldHVybiAk", "MSA/ICcnIDogJDA7DQoJfSk7DQp9DQoNCg0KCiRnbG9iYWwuZ2V0RmlsZXM9ZnVuY3Rpb24o", "dGFyZ2V0LHJlRXh0LGJSZWN1cmNpYmxlLGNhbGxGdW5jKSB7DQoJDQoJdmFyIHBhdCA9ICIi", "Ow0KCWlmICggKHJlRXh0ID09IHVuZGVmaW5lZCl8fChyZUV4dCA9PSBudWxsKXx8KHJlRXh0", "ID09ICIiKSAgKSB7DQoJCXBhdD0iLipcLnBkZiQiOyAKCX0gZWxzZSBpZiAoIHJlRXh0ID09", "ICIqIiApIHsKCQlwYXQ9IC8uKi87DQoJfSBlbHNlIHsNCgkJcGF0PSByZUV4dDsNCgl9DQoJ", "aWYgKCAoYlJlY3VyY2libGUgPT0gdW5kZWZpbmVkKXx8KGJSZWN1cmNpYmxlID09IG51bGwp", "fHwoYlJlY3VyY2libGUgPT0gIiIpICApIHsNCgkJYlJlY3VyY2libGUgPSBmYWxzZTsNCgl9", "DQoJCgkKDQoJdmFyIHJlOw0KCWlmICggZ2V0T2JqZWN0VHlwZShwYXQpID09ICJbb2JqZWN0", "IFJlZ0V4cF0iICkgew0KCQlyZSA9IHBhdDsKCX0gZWxzZSB7DQoJIAlyZSA9IG5ldyBSZWdF", "eHAocGF0LCJpIik7DQoJfQ0KCQoNCglpZiAoZnNvLkZpbGVFeGlzdHModGFyZ2V0KSkgew0K", "CQlyZXR1cm4gW107DQoJfQ0KCWlmICghZnNvLkZvbGRlckV4aXN0cyh0YXJnZXQpKSByZXR1", "cm4gW107DQoJdmFyIHJlc3VsdCA9IFtdOw0KDQoJCglmdW5jdGlvbiBfZW51bSggZGlyICkg", "ew0KCQkKCQl2YXIgZSA9IG5ldyBFbnVtZXJhdG9yKCBkaXIuRmlsZXMgKTsNCgkJZm9yICgg", "OyAhZS5hdEVuZCgpOyBlLm1vdmVOZXh0KCkgKSB7DQoJCQl2YXIgZmlsZSA9IGUuaXRlbSgp", "Ow0KCQkJdmFyIGFyID0gcmUuZXhlYyhmaWxlLlBhdGgpOw0KCQkJaWYgKCBhciAhPSBudWxs", "KSB7DQoJCQkJcmVzdWx0LnB1c2goZmlsZS5QYXRoKTsNCgkJCQlpZiAoY2FsbEZ1bmMhPXVu", "ZGVmaW5lZCkgew0KCQkJCQljYWxsRnVuYyhmaWxlLlBhdGgpOw0KCQkJCX0NCgkJCX0NCgkJ", "fQ0KCQlpZiAoICFiUmVjdXJjaWJsZSApIHJldHVybjsNCgkJCgkJZSA9IG5ldyBFbnVtZXJh", "dG9yKCBkaXIuU3ViRm9sZGVycyApOw0KCQlmb3IgKCA7ICFlLmF0RW5kKCk7IGUubW92ZU5l", "eHQoKSApIHsNCgkJCXZhciBzZGlyID0gZS5pdGVtKCk7DQoJCQlfZW51bSggc2RpciApOw0K", "CQl9DQoJCXJldHVybjsNCgl9DQoJdmFyIGRpciA9IGZzby5HZXRGb2xkZXIodGFyZ2V0KTsN", "CglfZW51bShkaXIpOw0KCXJldHVybiByZXN1bHQ7DQoNCn0NCgokZ2xvYmFsLmdldERpcnMg", "PSBmdW5jdGlvbih0YXJnZXQscmVFeHQsYlJlY3VyY2libGUsY2FsbEZ1bmMpIHsNCgkNCgl2", "YXIgcGF0ID0gIiI7DQoJaWYgKCAocmVFeHQgPT0gdW5kZWZpbmVkKXx8KHJlRXh0ID09IG51", "bGwpfHwocmVFeHQgPT0gIiIpICApIHsNCgkJcGF0PSIuKiI7IAoJfSBlbHNlIHsNCgkJcGF0", "PSByZUV4dDsNCgl9DQoJaWYgKCAoYlJlY3VyY2libGUgPT0gdW5kZWZpbmVkKXx8KGJSZWN1", "cmNpYmxlID09IG51bGwpfHwoYlJlY3VyY2libGUgPT0gIiIpICApIHsNCgkJYlJlY3VyY2li", "bGUgPSBmYWxzZTsNCgl9DQoJCgkKCXZhciByZTsNCglpZiAoIGdldE9iamVjdFR5cGUocGF0", "KSA9PSAiW29iamVjdCBSZWdFeHBdIiApIHsNCgkJcmUgPSBwYXQ7Cgl9IGVsc2Ugew0KCSAJ", "cmUgPSBuZXcgUmVnRXhwKHBhdCwiaSIpOw0KCX0NCg0KCWlmIChmc28uRmlsZUV4aXN0cyh0", "YXJnZXQpKSB7DQoJCXJldHVybiBbXTsNCgl9DQoJaWYgKCFmc28uRm9sZGVyRXhpc3RzKHRh", "cmdldCkpIHJldHVybiBbXTsNCgl2YXIgcmVzdWx0ID0gW107DQoJCglmdW5jdGlvbiBfZW51", "bSggZGlyICkgew0KCQkKCQl2YXIgZSA9IG5ldyBFbnVtZXJhdG9yKCBkaXIuU3ViRm9sZGVy", "cyApOw0KCQlmb3IgKCA7ICFlLmF0RW5kKCk7IGUubW92ZU5leHQoKSApIHsNCgkJCXZhciBm", "aWxlID0gZS5pdGVtKCk7DQoJCQl2YXIgYXIgPSByZS5leGVjKGZpbGUuUGF0aCk7DQoJCQlp", "ZiAoIGFyICE9IG51bGwpIHsNCgkJCQlyZXN1bHQucHVzaChmaWxlLlBhdGgpOw0KCQkJCWlm", "IChjYWxsRnVuYyE9dW5kZWZpbmVkKSB7DQoJCQkJCWNhbGxGdW5jKGZpbGUuUGF0aCk7DQoJ", "CQkJfQkJCQkNCgkJCX0NCgkJfQ0KCQlpZiAoICFiUmVjdXJjaWJsZSApIHJldHVybjsNCgkJ", "CgkJZSA9IG5ldyBFbnVtZXJhdG9yKCBkaXIuU3ViRm9sZGVycyApOw0KCQlmb3IgKCA7ICFl", "LmF0RW5kKCk7IGUubW92ZU5leHQoKSApIHsNCgkJCXZhciBzZGlyID0gZS5pdGVtKCk7DQoJ", "CQlfZW51bSggc2RpciApOw0KCQl9DQoJCXJldHVybjsNCgl9DQoJdmFyIGRpciA9IGZzby5H", "ZXRGb2xkZXIodGFyZ2V0KTsNCglfZW51bShkaXIpOw0KCXJldHVybiByZXN1bHQ7DQoNCn0N", "Cg0KCgoJDQoNCiRnbG9iYWwuZWNob1Byb2dyZXNzID0gZnVuY3Rpb24oKSB7DQoJdmFyIG8g", "PSBlY2hvUHJvZ3Jlc3MubzsNCglpZiAoIG8gPT0gdW5kZWZpbmVkICkgew0KCQlvID0gZWNo", "b1Byb2dyZXNzLm8gPSB7fTsNCgkJby5wcmVMZW4gPSAwOw0KCQlvLnByZUxlbiA9IDA7DQoJ", "CW8ucHJlVGltZSA9IG5ldyBEYXRlKCk7DQoJCW8uc3BhbiA9IDUwKjE7DQoJCWVjaG9Qcm9n", "cmVzcy5vID0gbzsNCgl9DQoJdmFyIG5vd1QgPSBuZXcgRGF0ZSgpOw0KCWlmICggKG5vd1Qg", "LSBvLnByZVRpbWUpIDwgby5zcGFuICl7DQoJCXJldHVybjsNCgl9DQoJby5wcmVUaW1lID0g", "bm93VDsNCgl2YXIgb3Q9IiI7DQoJZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2kr", "Kykgew0KCQl2YXIgcyA9IGFyZ3VtZW50c1tpXTsNCgkJaWYgKCBzID09IG51bGwgKSBzID0g", "IihudWxsKSI7CgkJb3QgKz0gczsNCgl9DQoJdmFyIHNTcGFjZT0iIjsNCglmb3IodmFyIGk9", "MDtpPG8ucHJlTGVuO2krKykgew0KCQlzU3BhY2UgKz0iICI7DQoJfQ0KCXByaW50KHNTcGFj", "ZSwiXHIiLG90LCJcciIpOw0KCW8ucHJlTGVuID0gb3QubGVuZ3RoOw0KfQ0KJGdsb2JhbC5l", "Y2hvU3BpbiA9IGZ1bmN0aW9uKCkgew0KCXZhciBvID0gZWNob1NwaW4ubzsNCglpZiAoIG8g", "PT0gdW5kZWZpbmVkICl7CgkJbyA9IGVjaG9TcGluLm8gPSB7fTsNCgkJby5Db3VudCA9IDA7", "DQoJCW8ucHJlVGltZSA9IG5ldyBEYXRlKCk7DQoJCW8uc3BhbiA9IDUwKjE7DQoJfQ0KCXZh", "ciBub3dUID0gbmV3IERhdGUoKTsNCglpZiAoIChub3dUIC0gby5wcmVUaW1lKSA8IG8uc3Bh", "biApew0KCQlyZXR1cm47DQoJfQ0KCW8ucHJlVGltZSA9IG5vd1Q7DQoNCglvLkNvdW50KysN", "CglpZiAoIChvLkNvdW50ICUgMikgKQ0KCQlwcmludCgiWlxiIik7DQoJZWxzZSANCgkJcHJp", "bnQoIk5cYiIpOw0KCXJldHVybjsNCn0NCiRnbG9iYWwuZWNob0JhciA9IGZ1bmN0aW9uKGN1", "cixtYXgpIHsNCgl2YXIgbyA9IGVjaG9CYXIubzsNCglpZiAoIG8gPT0gdW5kZWZpbmVkICl7", "CgkJbyA9IGVjaG9CYXIubyA9IHt9Ow0KCQlvLkN1ciA9IC0xOwkKCQlvLk1heCA9IDA7CQoJ", "CW8uTGVuID0gODA7CQoJfQ0KCWlmICggY3VyID09IG8uQ3VyICkgDQoJCXJldHVybjsKCWlm", "ICggY3VyID49IG1heCApIHsNCgkJcmV0dXJuOwoJfQ0KCW8uTWF4ID0gbWF4Ow0KCXZhciBj", "Tk9OID0gIiAiLGNPSyAgPSAiPSI7DQoJdmFyIHM9IlsiOw0KCW8uQ3VyID0gY3VyOw0KCXZh", "ciBsZW49cGFyc2VJbnQoKGN1ciAvIG1heCkgKiBvLkxlbik7DQoJZm9yICggdmFyIGk9MDsg", "aSA8IGxlbjsgaSsrICkgDQoJCXMgKz0gY09LOw0KCWxlbj1vLkxlbi1sZW4tMTsNCglmb3Ig", "KCB2YXIgaT0wOyBpIDwgbGVuOyBpKysgKQ0KCQlzICs9IGNOT047DQoJcys9Il0iDQoJZWNo", "b1Byb2dyZXNzKHMpOw0KCQoJCglyZXR1cm47DQp9DQoNCgokZ2xvYmFsLm1ha2VQYXRoID0g", "ZnVuY3Rpb24oc0NtZExpbmVzKSB7DQoNCiAgICB2YXIgYXIgPSBhcmd1bWVudHM7DQoJdmFy", "IHNDbWRzPWFyWzBdOw0KICAgIHZhciBiRGVsaT0gKGFyWzBdKVsoYXJbMF0ubGVuZ3RoLTEp", "XT09IlxcIjsKCWZvcih2YXIgaT0xO2k8YXIubGVuZ3RoO2krKykgew0KICAgICAgICBzQ21k", "cyArPSAoYkRlbGkpID8gIChhcltpXSkgOigiXFwiICsgYXJbaV0pOw0KCX0NCglyZXR1cm4g", "c0NtZHM7DQp9DQoNCg0KJGdsb2JhbC5yZWFkSGVyZURvYyA9IGZ1bmN0aW9uKGtleSxmUGF0", "aCkgew0KCWlmICggaXNOb25lKGZQYXRoKSApIHsKCQlmUGF0aCA9IHdzLlNjcmlwdEZ1bGxO", "YW1lOw0KCX0gDQoJdmFyIHNEYXRhID0gZlBhdGgucmVhZEFsbCgpOw0KCXNEYXRhID0gc0Rh", "dGEucmVwbGFjZSgvXHJcbnxcbi9nLCJcbiIpOwoJCgl2YXIgcGF0PSJcXG48PFtcXFNdKj8i", "ICsga2V5ICsgIltcXHNcXFNdKj9cbihbXFxTXFxzXFxuXSo/KVtcXG5dIiArIGtleTsNCgkK", "CXZhciByZSA9IG5ldyBSZWdFeHAocGF0LCJnIik7DQoJdmFyIGFyID0gcmUuZXhlYyhzRGF0", "YSk7DQoJaWYgKCBhciA9PSBudWxsKSB7DQoJCQoJCXJldHVybiAiIjsNCgl9DQoJcmV0dXJu", "IGFyWzFdOw0KfQ0KJGdsb2JhbC5yZWFkSGVyZURvY1ZlYyA9IGZ1bmN0aW9uKGtleSxmUGF0", "aCkge3JldHVybiBzcGxpdExpbmUocmVhZEhlcmVEb2Moa2V5LGZQYXRoKSk7fQ0KDQoKJGds", "b2JhbC5yZWFkSGVyZUtleSA9IGZ1bmN0aW9uIChrZXkpIHsNCg0KDQoJdmFyIF90aGlzID0g", "cmVhZEhlcmVLZXk7DQoJaWYgKCAhKCJjYWNoZU1hcCIgaW4gX3RoaXMpICkgew0KCQl2YXIg", "cmUgPSAvXC9cLzo6KFxTKylccypcPSguKikkLzsJCgkJdmFyIHZlYyA9IHNwbGl0TGluZSh3", "cy5TY3JpcHRGdWxsTmFtZS5yZWFkQWxsKCkpOw0KCQl2YXIga01hcCA9IHt9Ow0KCQlmb3Io", "dmFyIGk9MDtpPHZlYy5sZW5ndGg7aSsrKSB7DQoJCQl2YXIgYXIgPSByZS5leGVjKHZlY1tp", "XSk7DQoJCQlpZiAoIGlzTm9uZShhcikgKSANCgkJCQljb250aW51ZTsNCgkJCWlmICggYXJb", "MV0gaW4ga01hcCApIA0KCQkJCWNvbnRpbnVlOw0KCQkJa01hcFthclsxXV0gPSBza2lwUXVv", "dGEoYXJbMl0pOw0KCQl9DQoJCV90aGlzLmNhY2hlTWFwPWtNYXA7DQoJfQkNCglpZiAoIGlz", "Tm9uZShrZXkpICkgDQoJCXJldHVybiBfdGhpcy5jYWNoZU1hcDsNCglyZXR1cm4gKGtleSBp", "biBfdGhpcy5jYWNoZU1hcCkgPyBfdGhpcy5jYWNoZU1hcFtrZXldIDogbnVsbDsNCn0NCg0K", "Cg0KDQokZ2xvYmFsLmdldFZlcnNpb25JbmZvPWZ1bmN0aW9uKCB2ZXJTdHIgKSB7DQoJdmFy", "IG9iaj17fTsNCgl2YXIgcmUgPSAvXihcZCspXC4oXGQrKVwuKFxkKylUKFxkKylBKFxkKykv", "Ow0KCXZhciB2S2V5ID0gezA6Im5vdXNlIiwxOiJtYWpvciIsMjoibWlub3IiLDM6InBhdGNo", "Iiw0OiJ0VmVyIiw1OiJhVmVyIn07CQ0KCQoJCgkKCQoJCgl2YXIgYXIgPSB2ZXJTdHIubWF0", "Y2gocmUpOw0KCWlmICghYXIpew0KCQlmb3IodmFyIGk9MTtpPDY7aSsrKQ0KCQkJb2JqW3ZL", "ZXlbaV1dID0gMDsNCgl9IGVsc2Ugew0KCQlmb3IodmFyIGk9MTtpPGFyLmxlbmd0aDtpKysp", "DQoJCQlvYmpbdktleVtpXV0gPSBwYXJzZUludChhcltpXSk7DQoJfQ0KCW9ialsidmVyIl09", "b2JqWyJtYWpvciJdKyIuIitvYmpbIm1pbm9yIl0rIi4iK29ialsicGF0Y2giXSsiVCIrb2Jq", "WyJ0VmVyIl0rIkEiK29ialsiYVZlciJdOwkNCglvYmouc2V0VmVyID0gZnVuY3Rpb24gKG8p", "IHsNCgkJdmFyIHQgPSBnZXRPYmplY3RUeXBlKG8pOw0KCQlpZiAoIHQgPT0gIltvYmplY3Qg", "T2JqZWN0XSIgKXsNCgkJCQoJCQlmb3IoIHZhciBrIGluIG8gKSB7DQoJCQkJaWYgKCBrIGlu", "IG9iaiApIHsNCgkJCQkJb2JqW2tdID0gb1trXTsNCgkJCQl9DQoJCQl9DQoJCQlvYmpbInZl", "ciJdPW9ialsibWFqb3IiXSsiLiIrb2JqWyJtaW5vciJdKyIuIitvYmpbInBhdGNoIl0rIlQi", "K29ialsidFZlciJdKyJBIitvYmpbImFWZXIiXTsJDQoJCX0gZWxzZSB7CgkJCXZhciBpbmZv", "ID0gZ2V0VmVyc2lvbkluZm8obyk7DQoJCQlmb3IoIHZhciBrIGluIGluZm8gKSB7DQoJCQkJ", "aWYgKCBrIGluIG9iaiApIHsNCgkJCQkJb2JqW2tdID0gaW5mb1trXTsNCgkJCQl9DQoJCQl9", "DQoJCX0NCgl9DQoJcmV0dXJuIG9iajsNCn0NCg0KCgkNCiRnbG9iYWwuZ2V0RW52PWZ1bmN0", "aW9uKCkgew0KCXZhciBlbnYgPSB7fTsNCgllbnYuZXhlUGF0aCA9IHdzLlNjcmlwdEZ1bGxO", "YW1lOw0KCWVudi5leGVEaXIJPSBlbnYuZXhlUGF0aC5QQSgpOw0KCXJldHVybiBlbnY7DQp9", "DQoNCgp2YXIgaW5pRmlsZUlPID0geyAKDQoJc3RyaXA6CQlmdW5jdGlvbihhcmcpIHtyZXR1", "cm4gKHR5cGVvZihhcmcpID09ICJzdHJpbmciKSA/IHNraXBRdW90YShhcmcucmVwbGFjZSgv", "XlxzK3xccyskL2csICIiKSkgOiBhcmc7fSwNCgljYXNlY21wOglmdW5jdGlvbihhcmcxLCBh", "cmcyKSB7DQoJCWlmICh0eXBlb2YoYXJnMSkgPT0gInN0cmluZyIpIGFyZzEgPSBhcmcxLnRv", "TG93ZXJDYXNlKCk7DQoJCWlmICh0eXBlb2YoYXJnMikgPT0gInN0cmluZyIpIGFyZzIgPSBh", "cmcyLnRvTG93ZXJDYXNlKCk7DQoJCXJldHVybiAoYXJnMSA9PSBhcmcyKTsNCgl9LA0KCWdl", "dEZtdEVuYzoJZnVuY3Rpb24ocGF0aCkgew0KCQl2YXIgY29udkVuYyA9IHsgInV0Zi04Ijpp", "b2VuY29kaW5nLlVuaWNvZGUsICJ1dGYtOEJPTSI6aW9lbmNvZGluZy5Vbmljb2RlLCJ1bmlj", "b2RlIjppb2VuY29kaW5nLlVuaWNvZGUsInVuaWNvZGVmZmZlIjppb2VuY29kaW5nLlVuaWNv", "ZGUgLCAic2hpZnQtamlzIjogaW9lbmNvZGluZy5EZWZhdWx0fTsNCgkJcmV0dXJuIChjb252", "RW5jW3BhdGguZ2V0RW5jb2RlKHRydWUpLnRvTG93ZXJDYXNlKCldKTsNCgl9LA0KCWdldDoJ", "CWZ1bmN0aW9uKGZpbGVuYW1lLCBzZWN0aW9uLCBrZXkpIHsNCgkJdmFyIGxvPSBpbmlGaWxl", "SU87DQoJCXNlY3Rpb24gPSAodHlwZW9mKHNlY3Rpb24pID09ICJ1bmRlZmluZWQiKSA/IG51", "bGwgOiBsby5zdHJpcChzZWN0aW9uKTsNCgkJa2V5ICAgICA9ICh0eXBlb2Yoa2V5KSAgICAg", "PT0gInVuZGVmaW5lZCIpID8gbnVsbCA6IGxvLnN0cmlwKGtleSk7DQoJCXZhciBkYXRhID0g", "bmV3IEFycmF5KCk7DQoJCXRyeSB7DQoJCQl2YXIgZiA9IGZzby5PcGVuVGV4dEZpbGUoZmls", "ZW5hbWUsIDEsIGZhbHNlLCBsby5nZXRGbXRFbmMoZmlsZW5hbWUpICk7IAoJCQl2YXIgcG9z", "ID0gMDsgDQoJCQl2YXIgbT1udWxsOwoJCQl3aGlsZSAoIWYuQXRFbmRPZlN0cmVhbSkgew0K", "CQkJCXZhciBsaW5lID0gZi5SZWFkTGluZSgpOw0KCQkJCWlmICghbGluZS5tYXRjaCgvXlxz", "KjsvKSkgew0KCQkJCQlpZiAobSA9IGxpbmUubWF0Y2goL15ccypcWyhbXlxdXSopXF0vKSkg", "ew0KCQkJCQkJaWYgKHNlY3Rpb24gPT09IG51bGwpIHsNCgkJCQkJCQlkYXRhW2xvLnN0cmlw", "KG1bMV0pXSA9IG5ldyBBcnJheSgpOw0KCQkJCQkJfSBlbHNlIGlmIChwb3MgPT0gMCAmJiBs", "by5jYXNlY21wKGxvLnN0cmlwKG1bMV0pLCBzZWN0aW9uKSkgew0KCQkJCQkJCXBvcyA9IDE7", "DQoJCQkJCQl9IGVsc2UgaWYgKHBvcyA9PSAxKSB7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQl9", "DQoJCQkJCX0gZWxzZSBpZiAocG9zID09IDEgJiYgKG0gPSBsaW5lLm1hdGNoKC9eXHMqKC4q", "Pyk9KC4qKSQvKSkpIHsNCgkJCQkJCXZhciB2ID0gbG8uc3RyaXAobVsyXSkucmVwbGFjZSgv", "XihbIiddKSguKilcMSQvLCAiJDIiKTsNCgkJCQkJCWlmIChrZXkgPT09IG51bGwpIHsNCgkJ", "CQkJCQlkYXRhW2xvLnN0cmlwKG1bMV0pXSA9IHY7DQoJCQkJCQl9IGVsc2UgaWYgKGxvLmNh", "c2VjbXAobG8uc3RyaXAobVsxXSksIGtleSkpIHsNCgkJCQkJCQlkYXRhID0gdjsgCgkJCQkJ", "CQlicmVhazsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCWYuQ2xvc2UoKTsN", "CgkJfSBjYXRjaChlKSB7DQoJCQlpZiAoZS5udW1iZXIgIT0gLTB4N2ZmNWZmY2IpIHsJCgkJ", "CQlXU2NyaXB0LkVjaG8oV1NjcmlwdC5TY3JpcHRGdWxsTmFtZSArICJcbiIgKyBmaWxlbmFt", "ZSArICJcbiIgKyBlLmRlc2NyaXB0aW9uKTsNCgkJCX0NCgkJfQ0KCQlpZiAoc2VjdGlvbiA9", "PT0gbnVsbCkgew0KCQkJZm9yICh2YXIgcyBpbiBkYXRhKSB7DQoJCQkJZGF0YVtzXSA9IGxv", "LmdldChmaWxlbmFtZSwgcyk7DQoJCQl9DQoJCX0gZWxzZSBpZiAoa2V5ICE9PSBudWxsICYm", "IHR5cGVvZihkYXRhKSAhPSAic3RyaW5nIikgew0KCQkJZGF0YSA9IG51bGw7DQoJCX0NCgkJ", "cmV0dXJuIGRhdGE7CQ0KCX0sDQoJc2V0OgkJZnVuY3Rpb24oZmlsZW5hbWUsIHNlY3Rpb24s", "IGtleSwgdmFsdWUpIHsNCgkJdmFyIGxvID0gaW5pRmlsZUlPOwkJDQoJCXZhciByZXRDb2Rl", "ID0gIlxyXG4iOw0KCQlpZiAodHlwZW9mKGtleSkgPT0gInVuZGVmaW5lZCIpIHJldHVybiBm", "YWxzZTsNCgkJaWYgKHR5cGVvZih2YWx1ZSkgPT0gInVuZGVmaW5lZCIpIHJldHVybiBmYWxz", "ZTsNCgkJc2VjdGlvbiA9IGxvLnN0cmlwKHNlY3Rpb24pOw0KCQlrZXkgPSBsby5zdHJpcChr", "ZXkpOw0KCQl0cnkgew0KCQkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKGZpbGVuYW1lLCAx", "LCB0cnVlLGxvLmdldEZtdEVuYyhmaWxlbmFtZSkpOyAKCQkJdmFyIHVwcGVyID0gIiI7DQoJ", "CQl2YXIgbG93ZXIgPSAiIjsNCgkJCXZhciBwb3MgPSAwOyAKCQkJd2hpbGUgKCFmLkF0RW5k", "T2ZTdHJlYW0pIHsNCgkJCQl2YXIgbGluZSA9IGYuUmVhZExpbmUoKTsNCgkJCQlpZiAoIWxp", "bmUubWF0Y2goL15ccyo7LykpIHsNCgkJCQkJaWYgKG0gPSBsaW5lLm1hdGNoKC9eXHMqXFso", "W15cXV0qKVxdLykpIHsNCgkJCQkJCWlmIChwb3MgPT0gMCAmJiBsby5jYXNlY21wKGxvLnN0", "cmlwKG1bMV0pLCBzZWN0aW9uKSkgew0KCQkJCQkJCXBvcyA9IDE7CgkJCQkJCQlpZiAoa2V5", "ID09PSBudWxsKSBjb250aW51ZTsNCgkJCQkJCQl1cHBlciArPSBsaW5lICsgcmV0Q29kZTsK", "CQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBlbHNlIGlmIChwb3MgPT0gMSkgew0KCQkJCQkJ", "CXBvcyA9IDI7CgkJCQkJCQkKCQkJCQkJCWxvd2VyICs9IGxpbmUgKyByZXRDb2RlOw0KCQkJ", "CQkJCWJyZWFrOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2UgaWYgKHBvcyA9PSAxICYmIChtID0g", "bGluZS5tYXRjaCgvXiguKj8pPSguKikkLykpKSB7DQoJCQkJCQlpZiAoa2V5ID09PSBudWxs", "KSBjb250aW51ZTsNCgkJCQkJCQoJCQkJCQkKCQkJCQkJCgkJCQkJCWlmIChsby5jYXNlY21w", "KGxvLnN0cmlwKG1bMV0pLCBrZXkpKSB7DQoJCQkJCQkJa2V5ID0gbVsxXTsNCgkJCQkJCQli", "cmVhazsKCQkJCQkJfQ0KCQkJCQkJdXBwZXIgKz0gbGluZSArIHJldENvZGU7CgkJCQkJCWNv", "bnRpbnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXVwcGVyICs9IGxpbmUgKyByZXRDb2RlOwoJ", "CQkJaWYgKHBvcyA+PSAyKSBicmVhazsNCgkJCX0NCgkJCWlmIChrZXkgIT09IG51bGwgJiYg", "dmFsdWUgIT09IG51bGwpIHsNCgkJCQlpZiAocG9zKSB7CQoJCQkJCXVwcGVyICs9IGtleSAr", "ICI9IiArIHZhbHVlICsgcmV0Q29kZTsNCgkJCQl9IGVsc2UgewkNCgkJCQkJCgkJCQkJbG93", "ZXIgKz0gIlsiICsgc2VjdGlvbiArICJdIiArIHJldENvZGUgKyBrZXkgKyAiPSIgKyB2YWx1", "ZSArIHJldENvZGU7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFmLkF0RW5kT2ZTdHJlYW0pIHsN", "CgkJCQl0cnkgeyAKCQkJCQlsb3dlciArPSBmLlJlYWRBbGwoKTsNCgkJCQl9IGNhdGNoKGUp", "ew0KCQkJCQllY2hvKCJXYXJuaW5nOiIsZSk7DQoJCQkJfQ0KCQkJfQ0KCQkJZi5DbG9zZSgp", "Ow0KCQkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKGZpbGVuYW1lLCAyLCB0cnVlLCBsby5n", "ZXRGbXRFbmMoZmlsZW5hbWUpKTsgCgkJCWYuV3JpdGUodXBwZXIgKyBsb3dlcik7DQoJCQlm", "LkNsb3NlKCk7DQoJCX0gY2F0Y2goZSkgew0KCQkJV1NjcmlwdC5FY2hvKFdTY3JpcHQuU2Ny", "aXB0RnVsbE5hbWUgKyByZXRDb2RlICsgZmlsZW5hbWUgKyByZXRDb2RlICsgZS5kZXNjcmlw", "dGlvbik7DQoJCX0NCgkJcmV0dXJuIHVwcGVyICsgbG93ZXI7CQkNCgl9DQp9Ow0KCiRnbG9i", "YWwuZ2V0aW5pID0gZnVuY3Rpb24oZmlsZW5hbWUsIHNlY3Rpb24sIGtleSkgCXsgcmV0dXJu", "KGluaUZpbGVJTy5nZXQoZmlsZW5hbWUsc2VjdGlvbixrZXkpKTsgfQ0KJGdsb2JhbC5wdXRp", "bmkgPSBmdW5jdGlvbihmaWxlbmFtZSxzZWN0aW9uLGtleSx2YWx1ZSkgeyByZXR1cm4oaW5p", "RmlsZUlPLnNldChmaWxlbmFtZSxzZWN0aW9uLGtleSx2YWx1ZSkpO30NCg0KCgoNCnZhciBy", "ZWdEYXRhSU8gPSB7IAoJcmVwbGFjZUhLRVk6ZnVuY3Rpb24oc3RyKXsNCgkJDQoJCXN0ciA9", "IHN0ci5yZXBsYWNlKC9eSEtDUi8sIkhLRVlfQ0xBU1NFU19ST09UIik7DQoJCXN0ciA9IHN0", "ci5yZXBsYWNlKC9eSEtDVS8sIkhLRVlfQ1VSUkVOVF9VU0VSIik7DQoJCXN0ciA9IHN0ci5y", "ZXBsYWNlKC9eSEtMTS8sIkhLRVlfTE9DQUxfTUFDSElORSIpOw0KCQlyZXR1cm4gc3RyOw0K", "CX0sDQoJYmFja3VwOmZ1bmN0aW9uKHVybCxmaWxlUGF0aCl7DQoJCXZhciBsbz1yZWdEYXRh", "SU87DQoJCXZhciBiVG1wPWZhbHNlOw0KCQlpZiAoaXNOb25lKGZpbGVQYXRoKSl7DQoJCQlm", "aWxlUGF0aCA9IGdldFRlbXBGaWxlKCk7DQoJCQliVG1wID0gdHJ1ZTsNCgkJfQ0KCQl2YXIg", "byA9IGRvQ21kKHsiZWNobyI6ZmFsc2V9LCJyZWciLCJleHBvcnQiLHVybCwgZmlsZVBhdGgg", "LCAiL3kiKTsNCgkJaWYgKCBvLkV4aXRDb2RlICE9IDAgKSB7IAoJCQllY2hvKG8uTXNnLmpv", "aW4oIlxuIikpOw0KCQkJaWYgKCBiVG1wICkgDQoJCQkJZGVsZXRlRmlsZShmaWxlUGF0aCk7", "DQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KCQl2YXIgZW5jb2RpbmcgPWZpbGVQYXRoLmdldEVu", "Y29kZSh0cnVlKTsNCgkJdmFyIG90U3RyPWZpbGVQYXRoLnJlYWRBbGxFbmNvZGluZyhlbmNv", "ZGluZyk7DQoJCWZpbGVQYXRoLndyaXRlQWxsRW5jb2RpbmcoZW5jb2Rpbmcsb3RTdHIpOwoJ", "CQoJCWlmICggYlRtcCApIA0KCQkJZGVsZXRlRmlsZShmaWxlUGF0aCk7DQoJCXJldHVybiBv", "dFN0cjsNCgl9LA0KCXJlc3RvcmU6ZnVuY3Rpb24oZmlsZVBhdGgpew0KCQl2YXIgbG89cmVn", "RGF0YUlPOwkJDQoJCWlmICggIWZpbGVQYXRoLmlzRXhpc3QoKSkNCgkJCXJldHVybiBmYWxz", "ZTsNCgkJdmFyIG8gPSBkb0NtZCh7ImVjaG8iOmZhbHNlfSwicmVnIiwiaW1wb3J0IixmaWxl", "UGF0aCApOw0KCQlpZiAoIG8uRXhpdENvZGUgIT0gMCApIHsgCgkJCWVjaG8oby5Nc2cuam9p", "bigiXG4iKSk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfSwN", "CglnZXQ6ZnVuY3Rpb24oIHJlZ1BhdGgsIGtleU5hbWUsIGJSZWN1cnNlICkgew0KCQlpZiAo", "YlJlY3Vyc2U9PXVuZGVmaW5lZCkgDQoJCQliUmVjdXJzZSA9IHRydWU7CgkJdmFyIGxvPXJl", "Z0RhdGFJTzsJCQ0KCQl2YXIgb3QgPSB7fTsNCgkJdmFyIGJTaW5nbGUgPSBpc09rKGtleU5h", "bWUpID8gdHJ1ZTpmYWxzZTsNCgkJdmFyIGJTdWIJPSBmYWxzZTsNCgkJdmFyIGhrZXkgPSBs", "by5yZXBsYWNlSEtFWShyZWdQYXRoKTsNCgkJaWYgKCBiU2luZ2xlICkgew0KCQkJYlN1YiA9", "IGZhbHNlOw0KCQkJdmFyIGtleU5hbWVWZWMgPSBrZXlOYW1lLnNwbGl0KCJcXCIpOw0KCQkJ", "aWYgKCBrZXlOYW1lVmVjLmxlbmd0aCA+IDEpew0KCQkJCWtleU5hbWUgPSBrZXlOYW1lVmVj", "LnBvcCgpOw0KCQkJCWhrZXkgKz0gKCJcXCIgKyBrZXlOYW1lVmVjLmpvaW4oIlxcIikgKTsN", "CgkJCX0NCgkJfSBlbHNlIHsNCgkJCWJTdWIgPSBiUmVjdXJzZTsKCQl9DQoJCQoJCQoJCQoJ", "CQoJCXZhciBvID0gZG9DbWQoe2VjaG86ZmFsc2V9LCJyZWciLCJxdWVyeSIsaGtleSwgYlN1", "YiA/ICIvcyI6IiIsIGJTaW5nbGU/Ii92IjoiIiwgYlNpbmdsZT8ga2V5TmFtZToiIikgOw0K", "CQlpZiAoIG8uRXhpdENvZGUgIT0gMCApIHsgCgkJCWVjaG8oby5Nc2cuam9pbigiXG4iKSk7", "DQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KCQl2YXIgc3Via2V5Ow0KCQl2YXIgcmVLZXk9L1xz", "KihbXiBdKylccysoW14gXSspXHMrKC4qKSQvOwkNCgkJZm9yKHZhciBpPTA7aTxvLk1zZy5s", "ZW5ndGg7aSsrKXsNCgkJCXZhciBsbiA9IG8uTXNnW2ldOw0KCQkJaWYgKCBsbiA9PSAiIiAp", "IGNvbnRpbnVlOw0KCQkJaWYgKCBsbi5pbmRleE9mKGhrZXkpID09IDAgKSB7CgkJCQlzdWJr", "ZXk9IGxuLnJlcGxhY2UoaGtleSwiIik7DQoJCQkJaWYgKCBzdWJrZXkgPT0gIiIgKSANCgkJ", "CQkJc3Via2V5ID0gImdsb2JhbCI7DQoJCQkJc3Via2V5ID0gc3Via2V5LnJlcGxhY2UoL15c", "XC8sIiIpOw0KCQkJCWlmICggIShzdWJrZXkgaW4gb3QpICkgew0KCQkJCQlvdFtzdWJrZXld", "PXt9Ow0KCQkJCX0JDQoJCQkJY29udGludWU7DQoJCQl9DQoJCQl2YXIgYXIgPSByZUtleS5l", "eGVjKGxuKTsNCgkJCWlmICggYXIgKSB7DQoJCQkJdmFyIHZkYXRhID0gKGFyWzJdPT0iUkVH", "X0RXT1JEIik/IHBhcnNlSW50KGFyWzNdKTphclszXTsKCQkJCW90W3N1YmtleV1bYXJbMV1d", "ID0ge3Y6dmRhdGEsdHlwZTphclsyXX07DQoJCQl9DQoJCX0NCgkJcmV0dXJuIG90Ow0KCX0s", "DQoJc2V0OmZ1bmN0aW9uKCByZWdQYXRoLCBzZWNOYW1lLCBrZXlOYW1lLCB2YWx1ZSApIHsN", "CgkJdmFyIHJlZ1VSTCA9IHJlZ1BhdGg7CQ0KCQlpZiAocmVnVVJMLnNsaWNlKC0xKSAhPSAi", "XFwiICkgDQoJCQlyZWdVUkwgKz0gIlxcIjsNCgkJaWYgKCAhKGlzTm9uZShzZWNOYW1lKSB8", "fCAoc2VjTmFtZSA9PSAiZ2xvYmFsIikpICl7DQoJCQlyZWdVUkwgKz0gKHNlY05hbWUgKyAi", "XFwiKTsNCgkJfQ0KCQlyZWdVUkwgKz0ga2V5TmFtZTsNCgkJdmFyIHZhbHVlVHlwZSA9ICh0", "eXBlb2YodmFsdWUpPT09Im51bWJlciIpPyAiUkVHX0RXT1JEIjoiUkVHX1NaIjsNCgkJc2gu", "cmVnV3JpdGUocmVnVVJMLHZhbHVlLHZhbHVlVHlwZSk7DQoJfQ0KfQ0KJGdsb2JhbC5yZWdE", "YXRhSU8gPSByZWdEYXRhSU87DQoKDQokZ2xvYmFsLnJlYWRQYXJhbSA9IGZ1bmN0aW9uKHVy", "bCxmVHlwZSxiUmVjdXJzZSl7DQoJaWYgKCBiUmVjdXJzZT09dW5kZWZpbmVkICkgDQoJCWJS", "ZWN1cnNlID0gdHJ1ZTsKDQoJdmFyIG9iaiA9IHt9Ow0KCW9iai5fIAk9IHt9OwkKCW9iai5k", "YXRhID0ge307CQoJdmFyIGRhdGEgPSBvYmouZGF0YTsKCXZhciB3b3JrID0gb2JqLl87CQoJ", "aWYgKCBpc05vbmUoZlR5cGUpICkgDQoJCWZUeXBlID0gImluaSI7IAoJd29yay5vcmdQYXRo", "ID0gdXJsOw0KCWlmICggZlR5cGUgPT0gImluaSIgKSB7CQkJCgkJaWYgKCAhdXJsLmlzRXhp", "c3QoKSApIHsNCgkJCWVjaG8oImZpbGUgbm90IGV4aXN0Iik7DQoJCQlyZXR1cm4gbnVsbDsN", "CgkJfQ0KCQl2YXIgaW5pID0gaW5pRmlsZUlPLmdldCh1cmwpOwoJCXdvcmsub3JnUmVhZERh", "dGEgPSB1cmwucmVhZEFsbEVuY29kaW5nKCk7DQoJCXdvcmsubmV3RGF0YSA9IHt9Ow0KCQlm", "b3IodmFyIHMgaW4gaW5pKXsNCgkJCWRhdGFbc109e307DQoJCQlmb3IodmFyIGsgaW4gaW5p", "W3NdKQ0KCQkJCWRhdGFbc11ba109aW5pW3NdW2tdOw0KCQl9DQoJCW9iai5zZXQ9ZnVuY3Rp", "b24gKHNlYyxrZXksdmFsdWUpew0KCQkJaWYgKCAhKHNlYyBpbiBkYXRhKSApIA0KCQkJCWRh", "dGFbc2VjXT17fTsNCgkJCWRhdGFbc2VjXVtrZXldPSB2YWx1ZTsNCgkJCQoJCQl2YXIgbmV3", "RGF0YSA9IHdvcmsubmV3RGF0YTsNCgkJCWlmICggIShzZWMgaW4gbmV3RGF0YSkgKQ0KCQkJ", "CW5ld0RhdGFbc2VjXT17fTsNCgkJCW5ld0RhdGFbc2VjXVtrZXldPSB2YWx1ZTsNCgkJCXJl", "dHVybiBvYmo7DQoJCX0NCgkJb2JqLmdldD1mdW5jdGlvbihzZWMsa2V5KXsNCgkJCWlmICgg", "aXNOb25lKHNlYykgKQ0KCQkJCXNlYyA9ICJnbG9iYWwiOw0KCQkJaWYgKCAhKHNlYyBpbiBk", "YXRhKSApIA0KCQkJCXJldHVybiB1bmRlZmluZWQ7DQoJCQlpZiAoICEoa2V5IGluIGRhdGFb", "c2VjXSkgKSANCgkJCQlyZXR1cm4gdW5kZWZpbmVkOw0KCQkJcmV0dXJuICBkYXRhW3NlY11b", "a2V5XTsNCgkJfQ0KCQlvYmouc2F2ZSA9IGZ1bmN0aW9uKG90UGF0aCxmVHlwZSl7DQoJCQl2", "YXIgYk9yZyA9IGZhbHNlOw0KCQkJaWYgKGlzTm9uZShvdFBhdGgpKQ0KCQkJCW90UGF0aCA9", "IHdvcmsub3JnUGF0aDsNCgkJCWlmICggb3RQYXRoLkZQKCkgPT0gd29yay5vcmdQYXRoLkZQ", "KCkgKQ0KCQkJCWJPcmcgPSB0cnVlOw0KCQkJdmFyIHNhdmVGdW5jID0gZnVuY3Rpb24ob3RG", "KSB7DQoJCQkJZm9yKHZhciBzIGluIHdvcmsubmV3RGF0YSApew0KCQkJCQlmb3IodmFyIGsg", "aW4gd29yay5uZXdEYXRhW3NdKXsNCgkJCQkJCWluaUZpbGVJTy5zZXQob3RGLHMsayx3b3Jr", "Lm5ld0RhdGFbc11ba10pOw0KCQkJCQl9DQoJCQkJfQkJCQkNCgkJCX07DQoJCQlpZiAoIWJP", "cmcpewoJCQkJb3RQYXRoLndyaXRlQWxsKHdvcmsub3JnUmVhZERhdGEpOwoJCQl9DQoJCQlz", "YXZlRnVuYyhvdFBhdGgpOw0KCQkJcmV0dXJuIG9iajsNCgkJfTsNCgkJCgl9IGVsc2UgaWYg", "KCBmVHlwZSA9PSAia3YiICkgewkKCQlpZiAoICF1cmwuaXNFeGlzdCgpICkgew0KCQkJZWNo", "bygiZmlsZSBub3QgZXhpc3QiKTsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCXZhciBrdiA9", "IHJlYWRLZXlWYWx1ZSh1cmwse2V4cGFuZE1hY3JvOnRydWV9KTsNCgkJd29yay5vcmdLZXlW", "YWx1ZU9iaiA9IGt2Ow0KCQl3b3JrLm9yZ1JlYWREYXRhID0gdXJsLnJlYWRBbGwoKTsNCgkJ", "d29yay5uZXdEYXRhID0ge307DQoJCXZhciBrZXlWZWMgPSBrdi5hS2V5TGlzdDsKCQl2YXIg", "cyA9ICJnbG9iYWwiOw0KCQlkYXRhW3NdPXt9OwkNCgkJZm9yKHZhciBpPTA7aTwga2V5VmVj", "Lmxlbmd0aDtpKyspew0KCQkJdmFyIGsgPSBrZXlWZWNbaV07DQoJCQl2TnVtID0ga3YuZ2V0", "QXJyYXlOdW0oayk7DQoJCQlpZiAoIHZOdW0gIT0gMSApIHsNCgkJCQlkYXRhW3NdW2tdID0g", "W107CgkJCQlmb3IodmFyIGo9MDtqPHZOdW07aisrKQ0KCQkJCQkoZGF0YVtzXVtrXSkucHVz", "aChrdi5nZXRWYWx1ZShrLGopKTsNCgkJCX0gZWxzZSB7DQoJCQkJZGF0YVtzXVtrXSA9IGt2", "LmdldFZhbHVlKGspOw0KCQkJfQ0KCQl9DQoJCW9iai5zZXQgPSBmdW5jdGlvbihhcmdTZWMs", "YXJnS2V5LGFyZ1ZhbHVlKXsNCgkJCXZhciBzZWMgPSBhcmdTZWMsIGtleT1hcmdLZXksIHZh", "bHVlPWFyZ1ZhbHVlOw0KCQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoPT0yICl7DQoJCQkJc2Vj", "ID0gdW5kZWZpbmVkO2tleT1hcmd1bWVudHNbMF07dmFsdWU9YXJndW1lbnRzWzFdOwkNCgkJ", "CX0JCQkNCgkJCWlmICggaXNOb25lKHNlYykgKSANCgkJCQlzZWMgPSAiZ2xvYmFsIjsNCgkJ", "CWlmICggIShzZWMgaW4gZGF0YSkgKQ0KCQkJCWRhdGFbc2VjXT17fTsNCgkJCWRhdGFbc2Vj", "XVtrZXldPSB2YWx1ZTsNCgkJCQoJCQl2YXIgbmV3RGF0YSA9IHdvcmsubmV3RGF0YTsNCgkJ", "CWlmICggIShzZWMgaW4gbmV3RGF0YSkgKQ0KCQkJCW5ld0RhdGFbc2VjXT17fTsNCgkJCW5l", "d0RhdGFbc2VjXVtrZXldPSB2YWx1ZTsNCgkJCXJldHVybiBvYmo7DQoJCX0NCgkJb2JqLmdl", "dD1mdW5jdGlvbiAoYXJnU2VjLGFyZ0tleSl7DQoJCQl2YXIgc2VjID0gYXJnU2VjLCBrZXk9", "YXJnS2V5Ow0KCQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoPT0xICl7CgkJCQlzZWMgPSB1bmRl", "ZmluZWQ7DQoJCQkJa2V5PWFyZ3VtZW50c1swXTsNCgkJCX0NCgkJCWlmICggaXNOb25lKHNl", "YykgKQ0KCQkJCXNlYyA9ICJnbG9iYWwiOw0KCQkJaWYgKCAhKHNlYyBpbiBkYXRhKSApIA0K", "CQkJCXJldHVybiB1bmRlZmluZWQ7DQoJCQlpZiAoICEoa2V5IGluIGRhdGFbc2VjXSkgKSAN", "CgkJCQlyZXR1cm4gdW5kZWZpbmVkOw0KCQkJcmV0dXJuICBkYXRhW3NlY11ba2V5XTsNCgkJ", "fQ0KCQlvYmouc2F2ZSA9IGZ1bmN0aW9uKG90UGF0aCxmVHlwZSl7DQoJCQl2YXIgYk9yZyA9", "IGZhbHNlOw0KCQkJaWYgKGlzTm9uZShvdFBhdGgpKQ0KCQkJCW90UGF0aCA9IHdvcmsub3Jn", "UGF0aDsNCgkJCWlmICggb3RQYXRoLkZQKCkgPT0gd29yay5vcmdQYXRoLkZQKCkgKQ0KCQkJ", "CWJPcmcgPSB0cnVlOw0KCQkJaWYgICghKCJvcmdLZXlWYWx1ZU9iaiIgaW4gd29yaykpIHsN", "CgkJCQllY2hvKCJvcmdpbmFsIHJlYWQgbm90IGtleSB2YWx1ZSIpOw0KCQkJCXJldHVybiBm", "YWxzZTsNCgkJCX0NCgkJCXZhciBrdiA9IHdvcmsub3JnS2V5VmFsdWVPYmo7DQoJCQlmb3Io", "dmFyIHMgaW4gd29yay5uZXdEYXRhICl7DQoJCQkJdmFyIG5kID0gd29yay5uZXdEYXRhW3Nd", "Ow0KCQkJCWZvcih2YXIgayBpbiBuZCl7DQoJCQkJCWlmICggKG5kW2tdKSBpbnN0YW5jZW9m", "IEFycmF5ICkgDQoJCQkJCQlrdi5zZXRWYWx1ZShrLChuZFtrXSkuc2xpY2UoMCkpOwoJCQkJ", "CWVsc2UgDQoJCQkJCQlrdi5zZXRWYWx1ZShrLChuZFtrXSkpOwkJCQoJCQkJfQ0KCQkJfQkJ", "CQkNCgkJCWlmICghYk9yZykKCQkJCW90UGF0aC53cml0ZUFsbCh3b3JrLm9yZ1JlYWREYXRh", "KTsKCQkJa3Yuc2F2ZUZpbGUob3RQYXRoKTsNCgkJCXJldHVybiBvYmo7DQoJCX07DQoJCQoJ", "fSBlbHNlIGlmICggZlR5cGUgPT0gInJlZyIgKSB7ICAKCQkKCQl2YXIgcmVnID0gcmVnRGF0", "YUlPLmdldCh1cmwsdW5kZWZpbmVkLGJSZWN1cnNlKTsNCgkJd29yay5vcmdSZWdPYmogPSBy", "ZWc7DQoJCXdvcmsubmV3RGF0YSA9IHt9Ow0KCQl2YXIgcyA9ICJnbG9iYWwiOw0KCQlkYXRh", "W3NdPXt9OwkNCgkJZm9yKHZhciBzIGluIHJlZyl7DQoJCQlkYXRhW3NdPXt9Ow0KCQkJZm9y", "KHZhciBrIGluIHJlZ1tzXSkNCgkJCQlkYXRhW3NdW2tdPXJlZ1tzXVtrXS52Ow0KCQl9DQoJ", "CW9iai5zZXQ9ZnVuY3Rpb24oYXJnU2VjLGFyZ0tleSxhcmdWYWx1ZSl7DQoJCQkKCQkJdmFy", "IHNlYyA9IGFyZ1NlYywga2V5PWFyZ0tleSwgdmFsdWU9YXJnVmFsdWU7DQoJCQlpZiAoIGFy", "Z3VtZW50cy5sZW5ndGg9PTIgKXsNCgkJCQlzZWMgPSB1bmRlZmluZWQ7a2V5PWFyZ3VtZW50", "c1swXTt2YWx1ZT1hcmd1bWVudHNbMV07CQ0KCQkJfQkJCQ0KCQkJaWYgKCBpc05vbmUoc2Vj", "KSApIA0KCQkJCXNlYyA9ICJnbG9iYWwiOw0KCQkJaWYgKCAhKHNlYyBpbiBkYXRhKSApDQoJ", "CQkJZGF0YVtzZWNdPXt9Ow0KCQkJZGF0YVtzZWNdW2tleV09IHZhbHVlOw0KCQkJCgkJCXZh", "ciBuZXdEYXRhID0gd29yay5uZXdEYXRhOw0KCQkJaWYgKCAhKHNlYyBpbiBuZXdEYXRhKSAp", "DQoJCQkJbmV3RGF0YVtzZWNdPXt9Ow0KCQkJbmV3RGF0YVtzZWNdW2tleV09IHZhbHVlOw0K", "CQkJcmV0dXJuIG9iajsJCQkNCgkJCQoJCX0NCgkJb2JqLmdldCA9IGZ1bmN0aW9uIChhcmdT", "ZWMsYXJnS2V5KXsNCgkJCXZhciBzZWMgPSBhcmdTZWMsIGtleT1hcmdLZXk7DQoJCQlpZiAo", "IGFyZ3VtZW50cy5sZW5ndGg9PTEgKXsKCQkJCXNlYyA9IHVuZGVmaW5lZDsNCgkJCQlrZXk9", "YXJndW1lbnRzWzBdOw0KCQkJfQ0KCQkJaWYgKCBpc05vbmUoc2VjKSApDQoJCQkJc2VjID0g", "Imdsb2JhbCI7DQoJCQlpZiAoICEoc2VjIGluIGRhdGEpICkgDQoJCQkJcmV0dXJuIHVuZGVm", "aW5lZDsNCgkJCWlmICggIShrZXkgaW4gZGF0YVtzZWNdKSApIA0KCQkJCXJldHVybiB1bmRl", "ZmluZWQ7DQoJCQlyZXR1cm4gIGRhdGFbc2VjXVtrZXldOw0KCQl9DQoJCW9iai5zYXZlID0g", "ZnVuY3Rpb24ob3RQYXRoLGZUeXBlKXsNCgkJCXZhciBiT3JnID0gZmFsc2U7DQoJCQlpZiAo", "aXNOb25lKG90UGF0aCkpDQoJCQkJb3RQYXRoID0gd29yay5vcmdQYXRoOw0KCQkJaWYgKCBv", "dFBhdGggPT0gd29yay5vcmdQYXRoICkNCgkJCQliT3JnID0gdHJ1ZTsNCgkJCWlmICAoISgi", "b3JnUmVnT2JqIiBpbiB3b3JrKSkgew0KCQkJCWVjaG8oIm9yZ2luYWwgcmVhZCBub3QgcmVn", "Iik7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQkJdmFyIHNldEZ1bmMgPSBmdW5jdGlv", "bihvdCxkKXsNCgkJCQlmb3IodmFyIHMgaW4gZCApew0KCQkJCQl2YXIgbmQgPSBkW3NdOw0K", "CQkJCQlmb3IodmFyIGsgaW4gbmQpew0KCQkJCQkJaWYgKCAobmRba10pIGluc3RhbmNlb2Yg", "QXJyYXkgKSB7DQoJCQkJCQkJZWNobygiYXJyeSBjYW5ub3Qgc3VwcG9ydCIpOw0KCQkJCQkJ", "CXJldHVybiBmYWxzZTsNCgkJCQkJCX0gDQoJCQkJCQlyZWdEYXRhSU8uc2V0KG90LHMsayxu", "ZFtrXSk7DQoJCQkJCX0NCgkJCQl9CQ0KCQkJCXJldHVybiB0cnVlOwkJCQ0KCQkJfQ0KCQkJ", "aWYgKCFiT3JnKQoJCQkJc2V0RnVuYyhvdFBhdGgsZGF0YSk7DQoJCQlzZXRGdW5jKG90UGF0", "aCx3b3JrLm5ld0RhdGEpOw0KCQkJcmV0dXJuIG9iajsNCgkJfTsNCgkJCgl9DQoJCglyZXR1", "cm4gb2JqOw0KfQ0KCiRnbG9iYWwucmVhZFBhcmFtLmluaSAJPSBmdW5jdGlvbih1cmwpIHsg", "cmV0dXJuKHJlYWRQYXJhbSh1cmwsImluaSIpKTt9DQoKJGdsb2JhbC5yZWFkUGFyYW0ua3Yg", "CT0gZnVuY3Rpb24odXJsKSB7IHJldHVybihyZWFkUGFyYW0odXJsLCJrdiIgKSk7fQ0KCiRn", "bG9iYWwucmVhZFBhcmFtLnJlZyAJPSBmdW5jdGlvbih1cmwsYlJlY3Vyc2UpIHtyZXR1cm4o", "cmVhZFBhcmFtKHVybCwicmVnIixiUmVjdXJzZSkpO30NCg0KJGdsb2JhbC5nZXRPYmpMaW5r", "PWZ1bmN0aW9uKCAgKSB7Cgl2YXIgYWcgPSBhcmd1bWVudHM7DQoJaWYgKCBhZy5sZW5ndGgg", "PT0gMCApIHJldHVybiB1bmRlZmluZWQ7DQoJdmFyIG8gPSBhZ1swXTsNCglmb3IodmFyIGk9", "MTsgaSA8IGFnLmxlbmd0aDsgaSsrICl7DQoJCWlmICggIShhZ1tpXSBpbiBvKSApIHJldHVy", "biB1bmRlZmluZWQ7DQoJCW8gPSBvW2FnW2ldXTsNCgl9DQoJcmV0dXJuIG87DQp9DQoNCgoN", "CnZhciB1UkU9ew0KCWVzY2FwZVJFOmZ1bmN0aW9uKHN0cil7DQoJCXJldHVybiBzdHIucmVw", "bGFjZSgvWy1cL1xcXiQqKz8uKCl8XFtcXXt9XS9nLCAnXFwkJicpOw0KCX0sDQoJc3BsaXRS", "RTogZnVuY3Rpb24gKHN0cikgewoJCXZhciBhciA9IHN0ci5tYXRjaCgvXlwvKC4qKVwvKFte", "XC9dKikkLyk7DQoJCWlmICggYXIgKQ0KCQkJcmV0dXJuIHtleHA6YXJbMV0sZmxnOmFyWzJd", "fTsNCgkJcmV0dXJuIHtleHA6bnVsbCxmbGc6bnVsbH07DQoJfSwNCglyZW1ha2VSRTpmdW5j", "dGlvbihyZVRwbCx2TmFtZSxyZXBTdHIpew0KCQlpZiAoIGdldE9iamVjdFR5cGUocmVUcGwp", "ICE9ICJbb2JqZWN0IFJlZ0V4cF0iICkgew0KCQkJcmVUaHJvdygicmVtYWtlUkUiLCJub3Qg", "UmVnRXhwIHRlbXBsYXRlIHBhdHRlcm4iKTsNCgkJfQ0KCQl2YXIgYXIgPSB1UkUuc3BsaXRS", "RSggcmVUcGwudG9TdHJpbmcoKSApOw0KCQlpZiAoIGFyLmV4cCA9PSBudWxsICkgew0KCQkJ", "cmV0dXJuIHJlVHBsOwoJCX0NCgkJaWYgKCB0eXBlT2Yodk5hbWUpID09ICJzdHJpbmciICkg", "ew0KCQkJdmFyICByZV92TmFtZSA9IFJlZ0V4cCh2TmFtZSwiaWciKTsNCgkJCXZhciBleHAg", "PSBhci5leHAucmVwbGFjZShyZV92TmFtZSwgdVJFLmVzY2FwZVJFKHJlcFN0cikgKTsNCgkJ", "CQoNCgkJCWlmICggaXNPayhhci5mbGcpICkgDQoJCQkJcmV0dXJuICggUmVnRXhwKGV4cCxh", "ci5mbGcpKTsNCgkJCXJldHVybiAoIFJlZ0V4cChleHApICk7CQkJDQoJCX0gZWxzZSB7DQoJ", "CQkKCQkJdmFyIGV4cCA9IGFyLmV4cDsNCgkJCWZvcih2YXIga2V5IGluIHZOYW1lICkgew0K", "CQkJCXZhciBzcmMgPSBrZXksIGRzdCA9IHZOYW1lW2tleV07DQoJCQkJdmFyIHJlX3NyYyA9", "IFJlZ0V4cChzcmMsImlnIik7DQoJCQkJZXhwID0gZXhwLnJlcGxhY2UocmVfc3JjLCB1UkUu", "ZXNjYXBlUkUoZHN0KSApOw0KCQkJfQ0KCQkJaWYgKCBpc09rKGFyLmZsZykgKSANCgkJCQly", "ZXR1cm4gKCBSZWdFeHAoZXhwLGFyLmZsZykpOw0KCQkJcmV0dXJuICggUmVnRXhwKGV4cCkg", "KTsJCQkNCgkJfQ0KCX0NCn0NCiRnbG9iYWwudVJFID0gdVJFOw0KJGdsb2JhbC5yZW1ha2VS", "RSA9IHVSRS5yZW1ha2VSRTsNCg0KCg0KJGdsb2JhbC5nZXRTeXN0ZW1JbmZvID0gZnVuY3Rp", "b24oKSB7DQoNCgl2YXIgcmVnVVJMID0gIkhLTE1cXFNPRlRXQVJFXFxNaWNyb3NvZnRcXFdp", "bmRvd3MgTlRcXEN1cnJlbnRWZXJzaW9uIjsNCgkKCQkJCQkJCQkJCgkJCQkJCQkJCQ0KCXZh", "ciByZWcgPSByZWFkUGFyYW0ucmVnKHJlZ1VSTCxmYWxzZSk7Cgl2YXIgbSA9IHt9Ow0KCWVh", "Y2goDQoJCVsiQ3VycmVudFZlcnNpb24iLCJSZWxlYXNlSWQiLCJQcm9kdWN0TmFtZSIsIkN1", "cnJlbnRCdWlsZCIsIlVCUiJdLCBmdW5jdGlvbigpeyBtW3RoaXNdPXJlZy5nZXQodGhpcyk7", "IH0NCgkpOyANCglpZiAoaXNOb25lKG0uUmVsZWFzZUlkKSkgDQoJCW0uUmVsZWFzZUlkID0g", "IiI7DQoJCgl2YXIgb3M9ew0KCQkiZnVsbE5hbWUiCQk6bS5Qcm9kdWN0TmFtZSsiICIrbS5S", "ZWxlYXNlSWQrIihCdWlsZCAiK20uQ3VycmVudFZlcnNpb24rIi4iK20uQ3VycmVudEJ1aWxk", "KyIgIittLlVCUisiKSINCgkJLCJuYW1lIgkJCTptLlByb2R1Y3ROYW1lDQoJCSwidmVyc2lv", "biIJCTptLlJlbGVhc2VJZCANCgkJLCJjdXJyZW50VmVyIgk6bS5DdXJyZW50VmVyc2lvbg0K", "CQksImJ1aWxkVmVyIgkJOm0uQ3VycmVudEJ1aWxkDQoJCSwiVUJSIgkJCTptLlVCUg0KCX0N", "CglyZXR1cm4gb3M7DQp9DQoNCgoNCiRnbG9iYWwuZ2V0SG9zdE5hbWUgPSBmdW5jdGlvbigp", "IHsgcmV0dXJuIChuZXcgQWN0aXZlWE9iamVjdCgiV1NjcmlwdC5OZXRXb3JrIikpLkNvbXB1", "dGVyTmFtZTt9DQokZ2xvYmFsLmdldElQQWRkcmVzcyA9IGZ1bmN0aW9uKCkgewoJdmFyIHN0", "ckNvbXB1dGVyID0gIi4iOw0KCXZhciBuYW1lID0gIndpbm1nbXRzOlxcXFwiICsgc3RyQ29t", "cHV0ZXIgKyAiXFxyb290XFxDSU1WMiI7DQoJdmFyIG9XbWlzID0gR2V0T2JqZWN0KG5hbWUp", "Ow0KCXZhciBjb2xzID0gb1dtaXMuRXhlY1F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIFdpbjMyX05l", "dHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbiBXSEVSRSBJUEVuYWJsZWQ9VFJVRSIpDQoJdmFy", "IGxpc3QgPSBuZXcgRW51bWVyYXRvcihjb2xzKQ0KCWZvcig7IWxpc3QuYXRFbmQoKTsgbGlz", "dC5tb3ZlTmV4dCgpKXsNCgkJdmFyIHByb2MgPSBsaXN0Lml0ZW0oKTsNCgkJcmV0dXJuIHBy", "b2MuSVBBZGRyZXNzKDApOw0KCX0NCn0NCg0KCgkNCg0KCg0KCiRnbG9iYWxfZXhwb3J0c19t", "YWtlKCk7DQp9KSgpOwoNCgoKCgoKDQooZnVuY3Rpb24oKXsNCgoNCg0KdmFyICRnbG9iYWxf", "ZXhwb3J0cyA9IHt9OwoJdmFyICRnbG9iYWxfZXhwb3J0c19tYWtlID0gZnVuY3Rpb24oKSB7", "CgkJdmFyIGV2PSIiOw0KCQlmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0cyApDQoJCQll", "diArPSBrICsgIj0kZ2xvYmFsX2V4cG9ydHNbXCIiK2srIlwiXVxuIjsNCgkJRnVuY3Rpb24o", "IiRnbG9iYWxfZXhwb3J0cyIsZXYpKCRnbG9iYWxfZXhwb3J0cyk7DQoJCQoNCgkJCgl9Ow0K", "CShmdW5jdGlvbigpeyAKCQl2YXIgJG5zID0gJ3VIZXJlRG9jJzsNCgkJCgkJZnVuY3Rpb24g", "bWFrZUV4cG9ydHMoKXsNCgkJCXJldHVybiAoew0KCQkJCQoJCQkJCgkJCQkiaGVyZURvYyIJ", "CTpbaGVyZURvYywJCXRydWVdLA0KCQkJCSJoZXJlS2V5IgkJOltoZXJlS2V5LAkJdHJ1ZV0s", "DQoJCQkJCgkJCQkicmVhZEhlcmVEb2MiCTpbYl9yZWFkSGVyZURvYywgdHJ1ZV0sDQoJCQkJ", "InJlYWRIZXJlRG9jVmVjIjpbYl9yZWFkSGVyZURvY1ZlYywgdHJ1ZV0sDQoJCQkJInJlYWRI", "ZXJlS2V5Igk6W2JfcmVhZEhlcmVLZXksIHRydWVdDQoJCQkJCgkJCX0pOw0KCQl9DQoJCXZh", "ciAkZyA9ICRnbG9iYWxfZXhwb3J0czsNCgkJdmFyIF90aGlzPXt9OyAkZ1skbnNdPV90aGlz", "Ow0KDQoJCQoJCXZhciByZUNvbnRlbnRzID0gL1tcc1xTXSpcL1wqKFtcc1xTXSopXCpcL1x9", "W1wpXSovOyANCgkJCQoJCQkKCQkJCgkJDQoJCQoJCXZhciBiX3JlYWRIZXJlRG9jPXJlYWRI", "ZXJlRG9jLCBiX3JlYWRIZXJlRG9jVmVjPXJlYWRIZXJlRG9jVmVjLCBiX3JlYWRIZXJlS2V5", "PXJlYWRIZXJlS2V5Ow0KDQoJCXZhciBoZXJlRG9jID0gZnVuY3Rpb24oZnVuYyxyZXApew0K", "CQkJaWYgKHR5cGVvZiBmdW5jICE9PSAnZnVuY3Rpb24nKSB7DQoJCQkJcmV0dXJuIChiX3Jl", "YWRIZXJlRG9jKGZ1bmMscmVwKSk7CgkJCX0NCgkJCXZhciBfZGF0YT1udWxsLCBfZnVuYz1u", "dWxsOw0KCQkJaWYgKCBmdW5jID09IHVuZGVmaW5lZCApICANCgkJCQlyZXR1cm4gIiI7DQoJ", "CQlfZnVuYyA9IGZ1bmM7DQoJCQlpZiAoIHJlcCAhPSB1bmRlZmluZWQgKSB7DQoJCQkJX2Rh", "dGEgPSByZXA7DQoJCQl9DQoJCQlpZiAodHlwZW9mIF9mdW5jICE9PSAnZnVuY3Rpb24nKSBy", "ZXR1cm4gIiI7DQoJCQl2YXIgX2RvYyA9IF9mdW5jLnRvU3RyaW5nKCkubWF0Y2gocmVDb250", "ZW50cylbMV07DQoJCQlpZiAoIF9kb2MgPT0gdW5kZWZpbmVkICkgcmV0dXJuICIiOw0KCQkJ", "CgkJCWZvciAodmFyIF9rZXkgaW4gX2RhdGEpew0KCQkJCV9kb2MgPSBfZG9jLnJlcGxhY2Uo", "bmV3IFJlZ0V4cChfa2V5LCJnIiksIF9kYXRhW19rZXldKTsNCgkJCX0NCgkJCXJldHVybiBf", "ZG9jOw0KCQl9Cg0KCQkKDQoJCXZhciBoZXJlS2V5ID0gZnVuY3Rpb24oZnVuYyxyZXApew0K", "CQkJaWYgKHR5cGVvZiBmdW5jICE9PSAnZnVuY3Rpb24nKSB7DQoJCQkJcmV0dXJuIChiX3Jl", "YWRIZXJlRG9jKGZ1bmMscmVwKSk7CgkJCX0NCgkJCXZhciBtYXBEYXRhID0ge307DQoJCQl2", "YXIgdmVjID0gc3BsaXRMaW5lKGhlcmVEb2MoZnVuYyxyZXApKTsNCgkJCQoJCQl2YXIgcmUg", "PSAvKFteIFw9XHRcblxyXGZdKylccypcPSguKikkLzsJCgkJCQoJCQlmb3IodmFyIGk9MDsg", "aSA8IHZlYy5sZW5ndGg7aSsrKXsNCgkJCQlpZiAoICgvXltcc10qXC9cLy8pLnRlc3QodmVj", "W2ldKSApew0KCQkJCQljb250aW51ZTsKCQkJCX0NCgkJCQl2YXIgYXIgPSByZS5leGVjKHZl", "Y1tpXSk7DQoJCQkJaWYgKCBpc05vbmUoYXIpICkgY29udGludWU7DQoJCQkJaWYgKCBhclsx", "XSBpbiBtYXBEYXRhICkgY29udGludWU7DQoJCQkJbWFwRGF0YVthclsxXV0gPSBza2lwUXVv", "dGEoYXJbMl0pOw0KCQkJfQ0KCQkJcmV0dXJuIG1hcERhdGE7DQoJCX0KCQ0KCQkKCQlfdGhp", "cy51c2luZyA9IGZ1bmN0aW9uKGIpew0KCQkJCgkJCQoJCQl2YXIgZXggPSBtYWtlRXhwb3J0", "cygpOw0KCQkJZm9yKHZhciBrIGluIGV4KXsNCgkJCQlpZihiPT10cnVlKXsNCgkJCQkJX3Ro", "aXNba109ZXhba11bMF07CgkJCQl9Ow0KCQkJCWlmKChiIT10cnVlKXx8KGV4W2tdWzFdPT10", "cnVlKSl7DQoJCQkJCSRnW2tdPWV4W2tdWzBdOwkgCgkJCQl9Ow0KCQkJfQ0KCQkJJGdsb2Jh", "bF9leHBvcnRzX21ha2UoKTsNCgkJfQ0KCQlfdGhpcy51c2luZyh0cnVlKTsNCgl9KSh0aGlz", "KTsKfSkoKTsKDQoKKGZ1bmN0aW9uKCl7DQoNCgkoZnVuY3Rpb24oZyl7IAoJCXZhciAkbnMg", "PSAndUpzb24nOw0KCQkKCQlmdW5jdGlvbiBtYWtlRXhwb3J0cygpew0KCQkJcmV0dXJuICh7", "DQoJCQkJCgkJCQkKCQkJCSJzdHJpbmdpZnkiCQkJOltzdHJpbmdpZnksCWZhbHNlXSwNCgkJ", "CQkicGFyc2UiCQkJCTpbcGFyc2UsCQlmYWxzZV0NCgkJCQkKCQkJfSk7DQoJCX0NCgkJdmFy", "ICRnID0gbmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7DQoJCWlmICgoJG5zIGluICRn", "KSkgcmV0dXJuOw0KCQl2YXIgX3RoaXM9e307ICRnWyRuc109X3RoaXM7DQoJDQoJCQ0KCQkK", "CQkNCgkJCgkJdmFyIHBhcnNlID0gZnVuY3Rpb24oc0pTKSB7cmV0dXJuICggZXZhbCgnKCcg", "KyBzSlMgKyAnKScpICk7fQ0KCQl2YXIgc3RyaW5naWZ5ID0gIChmdW5jdGlvbiAoKXsNCgkJ", "CXZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7DQoJCQl2YXIgaGFz", "T3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Ow0KCQkJdmFy", "IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhKSB7IHJldHVybiB0b1N0", "cmluZy5jYWxsKGEpID09PSAnW29iamVjdCBBcnJheV0nOyB9Ow0KCQkJdmFyIGVzY01hcCA9", "IHsnIic6ICdcXCInLCAnXFwnOiAnXFxcXCcsICdcYic6ICdcXGInLCAnXGYnOiAnXFxmJywg", "J1xuJzogJ1xcbicsICdccic6ICdcXHInLCAnXHQnOiAnXFx0J307DQoJCQl2YXIgZXNjRnVu", "YyA9IGZ1bmN0aW9uIChtKSB7IHJldHVybiBlc2NNYXBbbV0gfHwgJ1xcdScgKyAobS5jaGFy", "Q29kZUF0KDApICsgMHgxMDAwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKTsgfTsNCgkJCXZh", "ciBlc2NSRSA9IC9bXFwiXHUwMDAwLVx1MDAxRlx1MjAyOFx1MjAyOV0vZzsNCgkJCXJldHVy", "biBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHsNCgkJCQlpZiAodmFsdWUgPT0gbnVsbCkg", "ew0KCQkJCQlyZXR1cm4gJ251bGwnOw0KCQkJCX0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09", "PSAnbnVtYmVyJykgew0KCQkJCQlyZXR1cm4gaXNGaW5pdGUodmFsdWUpID8gdmFsdWUudG9T", "dHJpbmcoKSA6ICdudWxsJzsNCgkJCQl9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jv", "b2xlYW4nKSB7DQoJCQkJCXJldHVybiB2YWx1ZS50b1N0cmluZygpOw0KCQkJCX0gZWxzZSBp", "ZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykgew0KCQkJCQlpZiAodHlwZW9mIHZhbHVl", "LnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgew0KCQkJCQkJcmV0dXJuIHN0cmluZ2lmeSh2YWx1", "ZS50b0pTT04oKSk7DQoJCQkJCX0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHsNCgkJCQkJ", "CXZhciByZXMgPSAnWyc7DQoJCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0", "aDsgaSsrKQ0KCQkJCQkJCXJlcyArPSAoaSA/ICcsJyA6ICcnKSArIHN0cmluZ2lmeSh2YWx1", "ZVtpXSk7DQoJCQkJCQlyZXR1cm4gcmVzICsgJ10nOw0KCQkJCQl9IGVsc2UgaWYgKHRvU3Ry", "aW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBPYmplY3RdJykgew0KCQkJCQkJdmFyIHRt", "cCA9IFtdOw0KCQkJCQkJZm9yICh2YXIgayBpbiB2YWx1ZSkgew0KCQkJCQkJCQoJCQkJCQkJ", "aWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGspKQ0KCQkJCQkJCQl0bXAucHVzaChz", "dHJpbmdpZnkoaykgKyAnOicgKyBzdHJpbmdpZnkodmFsdWVba10pKTsNCgkJCQkJCX0NCgkJ", "CQkJCXJldHVybiAneycgKyB0bXAuam9pbignLCcpICsgJ30nOw0KCQkJCQl9DQoJCQkJfQ0K", "CQkJCXJldHVybiAnIicgKyB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoZXNjUkUsIGVzY0Z1", "bmMpICsgJyInOw0KCQkJfQ0KCQl9KSgpOw0KCQkKCQl2YXIgZXggPSBtYWtlRXhwb3J0cygp", "Ow0KCQlfdGhpcy51c2luZyA9IGZ1bmN0aW9uKGIpew0KCQkJZm9yKHZhciBrIGluIGV4KXtp", "ZihiPT10cnVlKXtfdGhpc1trXT1leFtrXVswXTt9O2lmKChiIT10cnVlKXx8KGV4W2tdWzFd", "PT10cnVlKSl7JGdba109ZXhba11bMF07fTt9DQoJCX0NCgkJX3RoaXMudXNpbmcodHJ1ZSk7", "DQoJDQoJfSkodGhpcyk7Cn0pKCk7DQoNCg0KCiFmdW5jdGlvbigpIHsKCQ0KdmFyIG9yZ0Vy", "cm9yID0gRXJyb3I7IAooZnVuY3Rpb24oZyl7IAoJdmFyICRucyA9ICd1U3ByaW50JzsNCgkK", "CWZ1bmN0aW9uIG1ha2VFeHBvcnRzKCl7DQoJCXJldHVybiAoew0KCQkJCgkJCQoJCQkic3By", "aW50ZiIJOltzcHJpbnRmLAl0cnVlXSwNCgkJCSJ2c3ByaW50ZiIJOlt2c3ByaW50ZiwJdHJ1", "ZV0NCgkJCQoJCX0pOw0KCX0NCgl2YXIgJGcgPSBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlz", "IikoKTsNCglpZiAoKCRucyBpbiAkZykpIHJldHVybjsNCgl2YXIgX3RoaXM9e307ICRnWyRu", "c109X3RoaXM7DQoJDQoJdmFyIGV4cG9ydHMgPSBbXTsNCgl2YXIgSlNPTiA9IHVKc29uOw0K", "CWlmICggISgnY3JlYXRlJyBpbiBPYmplY3QpICApIE9iamVjdC5jcmVhdGUgPSBmdW5jdGlv", "bihhKSB7IHJldHVybiB7fSB9Ow0KCXZhciBFcnJvciAJCT0gZnVuY3Rpb24obXNnKSB7cmV0", "dXJuIG5ldyBvcmdFcnJvcigweDgwMEEwMUI2LG1zZyk7fQ0KCXZhciBUeXBlRXJyb3I9RXJy", "b3IsU3ludGF4RXJyb3I9RXJyb3I7DQoNCgoNCiFmdW5jdGlvbigpIHsNCgkndXNlIHN0cmlj", "dCcNCg0KCXZhciByZSA9IHsNCgkJbm90X3N0cmluZzogL1tec10vLA0KCQlub3RfYm9vbDog", "L1tedF0vLA0KCQlub3RfdHlwZTogL1teVF0vLA0KCQlub3RfcHJpbWl0aXZlOiAvW152XS8s", "DQoJCW51bWJlcjogL1tkaWVmZ10vLA0KCQludW1lcmljX2FyZzogL1tiY2RpZWZndXhYXS8s", "DQoJCWpzb246IC9bal0vLA0KCQlub3RfanNvbjogL1teal0vLA0KCQl0ZXh0OiAvXlteXHgy", "NV0rLywNCgkJbW9kdWxvOiAvXlx4MjV7Mn0vLA0KCQlwbGFjZWhvbGRlcjogL15ceDI1KD86", "KFsxLTldXGQqKVwkfFwoKFteKV0rKVwpKT8oXCspPygwfCdbXiRdKT8oLSk/KFxkKyk/KD86", "XC4oXGQrKSk/KFtiLWdpam9zdFR1dnhYXSkvLA0KCQlrZXk6IC9eKFthLXpfXVthLXpfXGRd", "KikvaSwNCgkJa2V5X2FjY2VzczogL15cLihbYS16X11bYS16X1xkXSopL2ksDQoJCWluZGV4", "X2FjY2VzczogL15cWyhcZCspXF0vLA0KCQlzaWduOiAvXlsrLV0vDQoJfQ0KDQoJZnVuY3Rp", "b24gc3ByaW50ZihrZXkpIHsNCgkJCgkJcmV0dXJuIHNwcmludGZfZm9ybWF0KHNwcmludGZf", "cGFyc2Uoa2V5KSwgYXJndW1lbnRzKQ0KCX0NCg0KCWZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwg", "YXJndikgew0KCQlyZXR1cm4gc3ByaW50Zi5hcHBseShudWxsLCBbZm10XS5jb25jYXQoYXJn", "diB8fCBbXSkpDQoJfQ0KDQoNCglmdW5jdGlvbiBzcHJpbnRmX2Zvcm1hdChwYXJzZV90cmVl", "LCBhcmd2KSB7DQoJCXZhciBjdXJzb3IgPSAxLCB0cmVlX2xlbmd0aCA9IHBhcnNlX3RyZWUu", "bGVuZ3RoLCBhcmcsIG91dHB1dCA9ICcnLCBpLCBrLCBwaCwgcGFkLCBwYWRfY2hhcmFjdGVy", "LCBwYWRfbGVuZ3RoLCBpc19wb3NpdGl2ZSwgc2lnbg0KCQlmb3IgKGkgPSAwOyBpIDwgdHJl", "ZV9sZW5ndGg7IGkrKykgew0KCQkJaWYgKHR5cGVvZiBwYXJzZV90cmVlW2ldID09PSAnc3Ry", "aW5nJykgew0KCQkJCW91dHB1dCArPSBwYXJzZV90cmVlW2ldDQoJCQl9DQoJCQllbHNlIGlm", "ICh0eXBlb2YgcGFyc2VfdHJlZVtpXSA9PT0gJ29iamVjdCcpIHsNCgkJCQlwaCA9IHBhcnNl", "X3RyZWVbaV0gCgkJCQlpZiAocGgua2V5cykgeyAKCQkJCQlhcmcgPSBhcmd2W2N1cnNvcl0N", "CgkJCQkJZm9yIChrID0gMDsgayA8IHBoLmtleXMubGVuZ3RoOyBrKyspIHsNCgkJCQkJCWlm", "IChhcmcgPT0gdW5kZWZpbmVkKSB7DQoJCQkJCQkJdGhyb3cgbmV3IEVycm9yKHNwcmludGYo", "J1tzcHJpbnRmXSBDYW5ub3QgYWNjZXNzIHByb3BlcnR5ICIlcyIgb2YgdW5kZWZpbmVkIHZh", "bHVlICIlcyInLCBwaC5rZXlzW2tdLCBwaC5rZXlzW2stMV0pKQ0KCQkJCQkJfQ0KCQkJCQkJ", "YXJnID0gYXJnW3BoLmtleXNba11dDQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZSBpZiAocGgu", "cGFyYW1fbm8pIHsgCgkJCQkJYXJnID0gYXJndltwaC5wYXJhbV9ub10NCgkJCQl9DQoJCQkJ", "ZWxzZSB7IAoJCQkJCWFyZyA9IGFyZ3ZbY3Vyc29yKytdDQoJCQkJfQ0KDQoJCQkJaWYgKHJl", "Lm5vdF90eXBlLnRlc3QocGgudHlwZSkgJiYgcmUubm90X3ByaW1pdGl2ZS50ZXN0KHBoLnR5", "cGUpICYmIGFyZyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7DQoJCQkJCWFyZyA9IGFyZygpDQoJ", "CQkJfQ0KDQoJCQkJaWYgKHJlLm51bWVyaWNfYXJnLnRlc3QocGgudHlwZSkgJiYgKHR5cGVv", "ZiBhcmcgIT09ICdudW1iZXInICYmIGlzTmFOKGFyZykpKSB7DQoJCQkJCXRocm93IG5ldyBU", "eXBlRXJyb3Ioc3ByaW50ZignW3NwcmludGZdIGV4cGVjdGluZyBudW1iZXIgYnV0IGZvdW5k", "ICVUJywgYXJnKSkNCgkJCQl9DQoNCgkJCQlpZiAocmUubnVtYmVyLnRlc3QocGgudHlwZSkp", "IHsNCgkJCQkJaXNfcG9zaXRpdmUgPSBhcmcgPj0gMA0KCQkJCX0NCg0KCQkJCXN3aXRjaCAo", "cGgudHlwZSkgew0KCQkJCQljYXNlICdiJzoNCgkJCQkJCWFyZyA9IHBhcnNlSW50KGFyZywg", "MTApLnRvU3RyaW5nKDIpDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICdjJzoNCgkJCQkJCWFy", "ZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxMCkpDQoJCQkJCQlicmVh", "aw0KCQkJCQljYXNlICdkJzoNCgkJCQkJY2FzZSAnaSc6DQoJCQkJCQlhcmcgPSBwYXJzZUlu", "dChhcmcsIDEwKQ0KCQkJCQkJYnJlYWsNCgkJCQkJY2FzZSAnaic6DQoJCQkJCQlhcmcgPSBK", "U09OLnN0cmluZ2lmeShhcmcsIG51bGwsIHBoLndpZHRoID8gcGFyc2VJbnQocGgud2lkdGgp", "IDogMCkNCgkJCQkJCWJyZWFrDQoJCQkJCWNhc2UgJ2UnOg0KCQkJCQkJYXJnID0gcGgucHJl", "Y2lzaW9uID8gcGFyc2VGbG9hdChhcmcpLnRvRXhwb25lbnRpYWwocGgucHJlY2lzaW9uKSA6", "IHBhcnNlRmxvYXQoYXJnKS50b0V4cG9uZW50aWFsKCkNCgkJCQkJCWJyZWFrDQoJCQkJCWNh", "c2UgJ2YnOg0KCQkJCQkJYXJnID0gcGgucHJlY2lzaW9uID8gcGFyc2VGbG9hdChhcmcpLnRv", "Rml4ZWQocGgucHJlY2lzaW9uKSA6IHBhcnNlRmxvYXQoYXJnKQ0KCQkJCQkJYnJlYWsNCgkJ", "CQkJY2FzZSAnZyc6DQoJCQkJCQlhcmcgPSBwaC5wcmVjaXNpb24gPyBTdHJpbmcoTnVtYmVy", "KGFyZy50b1ByZWNpc2lvbihwaC5wcmVjaXNpb24pKSkgOiBwYXJzZUZsb2F0KGFyZykNCgkJ", "CQkJCWJyZWFrDQoJCQkJCWNhc2UgJ28nOg0KCQkJCQkJYXJnID0gKHBhcnNlSW50KGFyZywg", "MTApID4+PiAwKS50b1N0cmluZyg4KQ0KCQkJCQkJYnJlYWsNCgkJCQkJY2FzZSAncyc6DQoJ", "CQkJCQlhcmcgPSBTdHJpbmcoYXJnKQ0KCQkJCQkJYXJnID0gKHBoLnByZWNpc2lvbiA/IGFy", "Zy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZykNCgkJCQkJCWJyZWFrDQoJCQkJ", "CWNhc2UgJ3QnOg0KCQkJCQkJYXJnID0gU3RyaW5nKCEhYXJnKQ0KCQkJCQkJYXJnID0gKHBo", "LnByZWNpc2lvbiA/IGFyZy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZykNCgkJ", "CQkJCWJyZWFrDQoJCQkJCWNhc2UgJ1QnOg0KCQkJCQkJYXJnID0gT2JqZWN0LnByb3RvdHlw", "ZS50b1N0cmluZy5jYWxsKGFyZykuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCkNCgkJCQkJ", "CWFyZyA9IChwaC5wcmVjaXNpb24gPyBhcmcuc3Vic3RyaW5nKDAsIHBoLnByZWNpc2lvbikg", "OiBhcmcpDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICd1JzoNCgkJCQkJCWFyZyA9IHBhcnNl", "SW50KGFyZywgMTApID4+PiAwDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICd2JzoNCgkJCQkJ", "CWFyZyA9IGFyZy52YWx1ZU9mKCkNCgkJCQkJCWFyZyA9IChwaC5wcmVjaXNpb24gPyBhcmcu", "c3Vic3RyaW5nKDAsIHBoLnByZWNpc2lvbikgOiBhcmcpDQoJCQkJCQlicmVhaw0KCQkJCQlj", "YXNlICd4JzoNCgkJCQkJCWFyZyA9IChwYXJzZUludChhcmcsIDEwKSA+Pj4gMCkudG9TdHJp", "bmcoMTYpDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICdYJzoNCgkJCQkJCWFyZyA9IChwYXJz", "ZUludChhcmcsIDEwKSA+Pj4gMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkNCgkJCQkJ", "CWJyZWFrDQoJCQkJfQ0KCQkJCWlmIChyZS5qc29uLnRlc3QocGgudHlwZSkpIHsNCgkJCQkJ", "b3V0cHV0ICs9IGFyZw0KCQkJCX0NCgkJCQllbHNlIHsNCgkJCQkJaWYgKHJlLm51bWJlci50", "ZXN0KHBoLnR5cGUpICYmICghaXNfcG9zaXRpdmUgfHwgcGguc2lnbikpIHsNCgkJCQkJCXNp", "Z24gPSBpc19wb3NpdGl2ZSA/ICcrJyA6ICctJw0KCQkJCQkJYXJnID0gYXJnLnRvU3RyaW5n", "KCkucmVwbGFjZShyZS5zaWduLCAnJykNCgkJCQkJfQ0KCQkJCQllbHNlIHsNCgkJCQkJCXNp", "Z24gPSAnJw0KCQkJCQl9DQoJCQkJCXBhZF9jaGFyYWN0ZXIgPSBwaC5wYWRfY2hhciA/IHBo", "LnBhZF9jaGFyID09PSAnMCcgPyAnMCcgOiBwaC5wYWRfY2hhci5jaGFyQXQoMSkgOiAnICcN", "CgkJCQkJcGFkX2xlbmd0aCA9IHBoLndpZHRoIC0gKHNpZ24gKyBhcmcpLmxlbmd0aA0KCQkJ", "CQlwYWQgPSBwaC53aWR0aCA/IChwYWRfbGVuZ3RoID4gMCA/IHBhZF9jaGFyYWN0ZXIucmVw", "ZWF0KHBhZF9sZW5ndGgpIDogJycpIDogJycNCgkJCQkJb3V0cHV0ICs9IHBoLmFsaWduID8g", "c2lnbiArIGFyZyArIHBhZCA6IChwYWRfY2hhcmFjdGVyID09PSAnMCcgPyBzaWduICsgcGFk", "ICsgYXJnIDogcGFkICsgc2lnbiArIGFyZykNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJu", "IG91dHB1dA0KCX0NCg0KCXZhciBzcHJpbnRmX2NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxs", "KQ0KDQoJZnVuY3Rpb24gc3ByaW50Zl9wYXJzZShmbXQpIHsNCgkJaWYgKHNwcmludGZfY2Fj", "aGVbZm10XSkgew0KCQkJcmV0dXJuIHNwcmludGZfY2FjaGVbZm10XQ0KCQl9DQoNCgkJdmFy", "IF9mbXQgPSBmbXQsIG1hdGNoLCBwYXJzZV90cmVlID0gW10sIGFyZ19uYW1lcyA9IDANCgkJ", "d2hpbGUgKF9mbXQpIHsNCgkJCWlmICgobWF0Y2ggPSByZS50ZXh0LmV4ZWMoX2ZtdCkpICE9", "PSBudWxsKSB7DQoJCQkJcGFyc2VfdHJlZS5wdXNoKG1hdGNoWzBdKQ0KCQkJfQ0KCQkJZWxz", "ZSBpZiAoKG1hdGNoID0gcmUubW9kdWxvLmV4ZWMoX2ZtdCkpICE9PSBudWxsKSB7DQoJCQkJ", "cGFyc2VfdHJlZS5wdXNoKCclJykNCgkJCX0NCgkJCWVsc2UgaWYgKChtYXRjaCA9IHJlLnBs", "YWNlaG9sZGVyLmV4ZWMoX2ZtdCkpICE9PSBudWxsKSB7DQoJCQkJaWYgKG1hdGNoWzJdKSB7", "DQoJCQkJCWFyZ19uYW1lcyB8PSAxDQoJCQkJCXZhciBmaWVsZF9saXN0ID0gW10sIHJlcGxh", "Y2VtZW50X2ZpZWxkID0gbWF0Y2hbMl0sIGZpZWxkX21hdGNoID0gW10NCgkJCQkJaWYgKChm", "aWVsZF9tYXRjaCA9IHJlLmtleS5leGVjKHJlcGxhY2VtZW50X2ZpZWxkKSkgIT09IG51bGwp", "IHsNCgkJCQkJCWZpZWxkX2xpc3QucHVzaChmaWVsZF9tYXRjaFsxXSkNCgkJCQkJCXdoaWxl", "ICgocmVwbGFjZW1lbnRfZmllbGQgPSByZXBsYWNlbWVudF9maWVsZC5zdWJzdHJpbmcoZmll", "bGRfbWF0Y2hbMF0ubGVuZ3RoKSkgIT09ICcnKSB7DQoJCQkJCQkJaWYgKChmaWVsZF9tYXRj", "aCA9IHJlLmtleV9hY2Nlc3MuZXhlYyhyZXBsYWNlbWVudF9maWVsZCkpICE9PSBudWxsKSB7", "DQoJCQkJCQkJCWZpZWxkX2xpc3QucHVzaChmaWVsZF9tYXRjaFsxXSkNCgkJCQkJCQl9DQoJ", "CQkJCQkJZWxzZSBpZiAoKGZpZWxkX21hdGNoID0gcmUuaW5kZXhfYWNjZXNzLmV4ZWMocmVw", "bGFjZW1lbnRfZmllbGQpKSAhPT0gbnVsbCkgew0KCQkJCQkJCQlmaWVsZF9saXN0LnB1c2go", "ZmllbGRfbWF0Y2hbMV0pDQoJCQkJCQkJfQ0KCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQl0aHJv", "dyBuZXcgU3ludGF4RXJyb3IoJ1tzcHJpbnRmXSBmYWlsZWQgdG8gcGFyc2UgbmFtZWQgYXJn", "dW1lbnQga2V5JykNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZSB7DQoJ", "CQkJCQl0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1tzcHJpbnRmXSBmYWlsZWQgdG8gcGFyc2Ug", "bmFtZWQgYXJndW1lbnQga2V5JykNCgkJCQkJfQ0KCQkJCQltYXRjaFsyXSA9IGZpZWxkX2xp", "c3QNCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCWFyZ19uYW1lcyB8PSAyDQoJCQkJfQ0KCQkJ", "CWlmIChhcmdfbmFtZXMgPT09IDMpIHsNCgkJCQkJdGhyb3cgbmV3IEVycm9yKCdbc3ByaW50", "Zl0gbWl4aW5nIHBvc2l0aW9uYWwgYW5kIG5hbWVkIHBsYWNlaG9sZGVycyBpcyBub3QgKHll", "dCkgc3VwcG9ydGVkJykNCgkJCQl9DQoNCgkJCQlwYXJzZV90cmVlLnB1c2goDQoJCQkJCXsN", "CgkJCQkJCXBsYWNlaG9sZGVyOiBtYXRjaFswXSwNCgkJCQkJCXBhcmFtX25vOiAgICBtYXRj", "aFsxXSwNCgkJCQkJCWtleXM6ICAgICAgICBtYXRjaFsyXSwNCgkJCQkJCXNpZ246ICAgICAg", "ICBtYXRjaFszXSwNCgkJCQkJCXBhZF9jaGFyOiAgICBtYXRjaFs0XSwNCgkJCQkJCWFsaWdu", "OiAgICAgICBtYXRjaFs1XSwNCgkJCQkJCXdpZHRoOiAgICAgICBtYXRjaFs2XSwNCgkJCQkJ", "CXByZWNpc2lvbjogICBtYXRjaFs3XSwNCgkJCQkJCXR5cGU6ICAgICAgICBtYXRjaFs4XQ0K", "CQkJCQl9DQoJCQkJKQ0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJdGhyb3cgbmV3IFN5bnRheEVy", "cm9yKCdbc3ByaW50Zl0gdW5leHBlY3RlZCBwbGFjZWhvbGRlcicpDQoJCQl9DQoJCQlfZm10", "ID0gX2ZtdC5zdWJzdHJpbmcobWF0Y2hbMF0ubGVuZ3RoKQ0KCQl9DQoJCXJldHVybiBzcHJp", "bnRmX2NhY2hlW2ZtdF0gPSBwYXJzZV90cmVlDQoJfQ0KDQoJDQoJDQoJaWYgKHR5cGVvZiBl", "eHBvcnRzICE9PSAndW5kZWZpbmVkJykgew0KCQlleHBvcnRzWydzcHJpbnRmJ10gPSBzcHJp", "bnRmDQoJCWV4cG9ydHNbJ3ZzcHJpbnRmJ10gPSB2c3ByaW50Zg0KCX0NCglpZiAodHlwZW9m", "IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsNCgkJd2luZG93WydzcHJpbnRmJ10gPSBzcHJp", "bnRmDQoJCXdpbmRvd1sndnNwcmludGYnXSA9IHZzcHJpbnRmDQoNCgkJaWYgKHR5cGVvZiBk", "ZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkgew0KCQkJZGVmaW5lKGZ1", "bmN0aW9uKCkgew0KCQkJCXJldHVybiB7DQoJCQkJCSdzcHJpbnRmJzogc3ByaW50ZiwNCgkJ", "CQkJJ3ZzcHJpbnRmJzogdnNwcmludGYNCgkJCQl9DQoJCQl9KQ0KCQl9DQoJfQ0KDQoJDQp9", "KCk7IAoKCXZhciBzcHJpbnRmID0gZXhwb3J0c1snc3ByaW50ZiddOw0KCXZhciB2c3ByaW50", "ZiA9IGV4cG9ydHNbJ3ZzcHJpbnRmJ107DQoNCgl2YXIgZXggPSBtYWtlRXhwb3J0cygpOw0K", "CV90aGlzLnVzaW5nID0gZnVuY3Rpb24oYil7DQoJCWZvcih2YXIgayBpbiBleCl7aWYoYj09", "dHJ1ZSl7X3RoaXNba109ZXhba11bMF07fTtpZigoYiE9dHJ1ZSl8fChleFtrXVsxXT09dHJ1", "ZSkpeyRnW2tdPWV4W2tdWzBdO307fQ0KCX0NCglfdGhpcy51c2luZyh0cnVlKTsNCg0KfSko", "dGhpcyk7IAp9KCk7IAoKCQ0KCihmdW5jdGlvbigpew0KDQoJKGZ1bmN0aW9uKGcpeyAKCQl2", "YXIgJG5zID0gJ3VBZG1pbic7DQoJCQoJCWZ1bmN0aW9uIG1ha2VFeHBvcnRzKCl7DQoJCQly", "ZXR1cm4gKHsNCgkJCQkKCQkJCQoJCQkJInJlYm9vdEFkbWluIgk6W3JlYm9vdEFkbWluLAl0", "cnVlXSwNCgkJCQkid2FpdEZvclNpZ25hbCIJOlt3YWl0Rm9yU2lnbmFsLGZhbHNlXSwNCgkJ", "CQkic2VuZFNpZ25hbCIJOltzZW5kU2lnbmFsLAlmYWxzZV0sDQoJCQkJImdldFBJRCIJCTpb", "Z2V0UElELAkJZmFsc2VdLA0KCQkJCSJnZXRQYXJlbnRQSUQiCTpbZ2V0UGFyZW50UElELAlm", "YWxzZV0sDQoJCQkJImdldENtZEFyZ3NCeVBJRCI6W2dldENtZEFyZ3NCeVBJRCxmYWxzZV0s", "DQoJCQkJImdldFNpZ25hbE5hbWUiCTpbZ2V0U2lnbmFsTmFtZSxmYWxzZV0NCgkJCQkKCQkJ", "fSk7DQoJCX0NCgkJdmFyICRnID0gbmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7DQoJ", "CWlmICgoJG5zIGluICRnKSkgcmV0dXJuOw0KCQl2YXIgX3RoaXM9e307ICRnWyRuc109X3Ro", "aXM7DQoJDQoJCQ0KCQkKCQl2YXIgc2hhID0gV1NjcmlwdC5DcmVhdGVPYmplY3QoIlNoZWxs", "LkFwcGxpY2F0aW9uIik7DQoJCXZhciBiQWRtaW5SZWJvb3QgPSB0cnVlOwkKCQl2YXIgYXJn", "QWRtaW5SZWJvb3QgPSAiX0FkbWluUmVib290IjsKCQl2YXIgZXhEYXRhID0gewkNCgkJCQlh", "cmdzOiIiLA0KCQkJCWN1cnJlbnREaXJlY3Rvcnk6IiIsDQoJCQkJc2lnbmFsTmFtZToiIiwN", "CgkJCQlleGl0Q29kZTotMSwNCgkJCQltc2c6IiINCgkJfQ0KCQkNCgkJCgkJZnVuY3Rpb24g", "X2dldEFkbWluT3B0TmFtZSgpIHsgcmV0dXJuICJfYWRtaW5SZWJvb3QiOyB9Ow0KCQlmdW5j", "dGlvbiBfZ2V0RXhjaGFuZ2VGaWxlTmFtZShwaWQpIHtyZXR1cm4gKGdldEVudigpLmV4ZVBh", "dGguQk4oKSsiLiIrcGlkKyIucGlkIik7IH07IAoJCWZ1bmN0aW9uIHJlYm9vdEFkbWluKG9w", "dCl7DQoJCQlvcHQgPSBvcHQgfHwge307CgkJCQoJCQkKCQkJaWYgKCAhaXNBZG1pbigpICkg", "ew0KCQkJCQoJCQkJdmFyIFBJRCA9IHVBZG1pbi5nZXRQSUQoKTsNCgkJCQl2YXIgcHJvY0lu", "Zm8gPSBnZXRDbWRBcmdzQnlQSUQoUElEKTsKCQkJCWlmICggaXNOb25lKHByb2NJbmZvKSAp", "IHsNCgkJCQkJZXhpdCgtMSwiZXJyb3I6Y2FuIG5vdCBnZXQgcHJvY0luZm8iKTsNCgkJCQl9", "DQoJCQkJCgkJCQkKCQkJCXZhciBhcmdzID0gcHJvY0luZm8uQXJncyArICIgLyIrX2dldEFk", "bWluT3B0TmFtZSgpOw0KCQkJCQoJCQkJDQoJCQkJCgkJCQl2YXIgcGF0aEFkbWluRXhjaGFu", "Z2U9IF9nZXRFeGNoYW5nZUZpbGVOYW1lKFBJRCk7DQoJCQkJdmFyIGV4RGF0YVBhdGggPSBt", "YWtlUGF0aChnZXRFbnYoKS5leGVEaXIscGF0aEFkbWluRXhjaGFuZ2UpOw0KCQkJCQoJCQkJ", "ZXhEYXRhLmFyZ3MgPSBhcmdzOw0KCQkJCWV4RGF0YS5jdXJyZW50RGlyZWN0b3J5ID0gc2gu", "Q3VycmVudERpcmVjdG9yeTsNCgkJCQlleERhdGEuc2lnbmFsTmFtZSA9IGdldFNpZ25hbE5h", "bWUoKTsNCgkJCQlleERhdGEuZXhpdENvZGUgPSAtMTsNCgkJCQlleERhdGEubXNnID0gIiI7", "DQoJCQkJZXhEYXRhUGF0aC53cml0ZUFsbFVURjgoIHVKc29uLnN0cmluZ2lmeShleERhdGEp", "ICkgOw0KCQ0KCQkJCQoJCQkJZXhpdC5wdXNoKGZ1bmN0aW9uKCl7IGlmIChleERhdGFQYXRo", "LmlzRXhpc3RGaWxlKCkpIGRlbGV0ZUZpbGUoZXhEYXRhUGF0aCk7IH0pOw0KCQ0KCQkJCQoJ", "CQkJc2hhLlNoZWxsRXhlY3V0ZShwcm9jSW5mby5OYW1lLCBhcmdzLCAiIiwgInJ1bmFzIiwg", "MSk7IA0KCQkJCQkKCQkJCQkKCQkJCQ0KCQkJCQoJCQkJaWYgKCBvcHQgJiYgKCJ0aW1lb3V0", "IiBpbiBvcHQpICkgew0KCQkJCQl3YWl0Rm9yU2lnbmFsKGV4RGF0YS5zaWduYWxOYW1lLG9w", "dC50aW1lb3V0KTsNCgkJCQl9IGVsc2Ugew0KCQkJCQl3YWl0Rm9yU2lnbmFsKGV4RGF0YS5z", "aWduYWxOYW1lKTsNCgkJCQl9DQoJCQkJaWYgKCAhZXhEYXRhUGF0aC5pc0V4aXN0RmlsZSgp", "ICkgew0KCQkJCQlleGl0KGV4RGF0YS5leGl0Q29kZSwiZXJyb3I6IGNhbiBub3QgZm91bmQg", "ZXhjaGFuZ2UgYWRtaW4gZmlsZToiLGV4RGF0YVBhdGgpOw0KCQkJCX0NCgkJCQl2YXIgZXhP", "dERhdGEgPSB1SnNvbi5wYXJzZShleERhdGFQYXRoLnJlYWRBbGxVVEY4KCkpOw0KCQkJCQoJ", "CQkJCgkJCQlleGl0KGV4T3REYXRhLmV4aXRDb2RlLGV4T3REYXRhLm1zZyk7IA0KCQkJCQoJ", "CQl9IGVsc2UgaWYgKCB1UGFyYW0uYkFkbWluICkgew0KCQkJCQoJCQkJCgkJCQl2YXIgcHBp", "ZCA9IHVBZG1pbi5nZXRQYXJlbnRQSUQoKTsNCgkJCQkKCQkJCXZhciBwYXRoQWRtaW5FeGNo", "YW5nZT0gX2dldEV4Y2hhbmdlRmlsZU5hbWUocHBpZCk7CgkJCQl2YXIgZXhEYXRhUGF0aCA9", "IG1ha2VQYXRoKGdldEVudigpLmV4ZURpcixwYXRoQWRtaW5FeGNoYW5nZSk7DQoJCQkJCgkJ", "CQlpZiAoICEoZXhEYXRhUGF0aC5pc0V4aXN0RmlsZSgpKSApIHsNCgkJCQkJCgkJCQkJcmV0", "dXJuIHRydWU7DQoJCQkJfQ0KCQkJCWV4RGF0YSA9IHVKc29uLnBhcnNlKGV4RGF0YVBhdGgu", "cmVhZEFsbFVURjgoKSk7DQoJCQkJCgkJCQlpZiAoIGlzT2soZXhEYXRhLmN1cnJlbnREaXJl", "Y3RvcnkpICkgew0KCQkJCQlzaC5DdXJyZW50RGlyZWN0b3J5ID0gZXhEYXRhLmN1cnJlbnRE", "aXJlY3Rvcnk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZXhpdCgtMSwiZXJyb3I6Y2FuIG5vdCBy", "ZWFkIGN1cnJlbnREaXJlY3RvcnkiKTsNCgkJCQl9DQoJCQkJCgkJCQlleGl0LnNldEFkbWlu", "Q2FsbCggZnVuY3Rpb24oY29kZSxtc2cpew0KCQkJCQlleERhdGEuZXhpdENvZGUgPSBjb2Rl", "Ow0KCQkJCQlleERhdGEubXNnID0gWyBtc2cgXTsNCgkJCQkJZXhEYXRhUGF0aC53cml0ZUFs", "bFVURjgodUpzb24uc3RyaW5naWZ5KGV4RGF0YSkpOw0KCQkJCQlzZW5kU2lnbmFsKGV4RGF0", "YS5zaWduYWxOYW1lKTsNCgkJCQl9KTsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0gZWxzZSB7", "DQoJCQkJCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCQlmdW5jdGlvbiBnZXRTaWdu", "YWxOYW1lKCBiYXNlICkgew0KCQkJCgkJCQoJCQl2YXIgc05hbWUgPSBpc09LKGJhc2UpPyBi", "YXNlIDogKGNhc3RTKE1hdGgucmFuZG9tKCkpICsgd3MuU2NyaXB0RnVsbE5hbWUuRk4oKSk7", "DQoJCQlzTmFtZT1zTmFtZS5yZXBsYWNlQWxsKC9bXmEtekEtWjAtOV0vZywiWCIpLnN1YnN0", "cigwLDgxKTsKCQkJcmV0dXJuIHNOYW1lOw0KCQl9DQoJCQoJCQoJCWZ1bmN0aW9uIHdhaXRG", "b3JTaWduYWwoIHNpZ05hbWUsIGluVGltZU91dCApIHsNCgkJCXZhciB0T3V0U3RyID0gIiI7", "DQoJCQlpZiAoIGlzT2soaW5UaW1lT3V0KSApew0KCQkJCXRPdXRTdHIgPSAiIC9UICIgKyBp", "blRpbWVPdXQ7DQoJCQl9DQoJCQlpZiAoIHNpZ05hbWUubGVuZ3RoID4gODIgKSB7DQoJCQkJ", "ZWNobygiZXJyb3I6IHNpZ25hbCBuYW1lIGxpbWl0IDwgODIiKTsNCgkJCX0NCgkJCWlmICgg", "L1teYS16QS1aMC05XS8udGVzdChzaWdOYW1lKSApIHsNCgkJCQllY2hvKCJlcnJvcjogc2ln", "bmFsIG5hbWUgOlthLXpBLVowLTldIik7DQoJCQl9DQoJCQl2YXIgZSA9IHNoLkV4ZWMoImNt", "ZCAvQyBXQUlURk9SICIgKyBzaWdOYW1lICsgdE91dFN0cik7DQoJCQl3aGlsZSAoZS5TdGF0", "dXM9PTApeyAKCQkJCVdTY3JpcHQuU2xlZXAoMTApOw0KCQkJfQ0KCQl9DQoJCWZ1bmN0aW9u", "IHNlbmRTaWduYWwoIHNpZ05hbWUgKSB7DQoJCQkKCQkJdmFyIGUgPSBzaC5FeGVjKCJjbWQg", "L0MgV0FJVEZPUiIgKyAiIC9TICIgKyAiJUNPTVBVVEVSTkFNRSUiICsgIiAvU0kgIiArIHNp", "Z05hbWUpOyANCgkJCXdoaWxlIChlLlN0YXR1cz09MCl7IAoJCQkJV1NjcmlwdC5TbGVlcCgx", "MCk7DQoJCQl9DQoJCX0NCgkJZnVuY3Rpb24gZ2V0UElEKCkgew0KCQkJDQoJCQl2YXIgc2ln", "bmFsTmFtZSA9IGdldFNpZ25hbE5hbWUoKTsKCQkJCgkJCXZhciByZXRQSUQgPSBudWxsOw0K", "CQkJCgkJCXZhciBvRXhlYyA9IHNoLkV4ZWMoImNtZCAvQyBXQUlURk9SICIgKyBzaWduYWxO", "YW1lICk7CgkJCXZhciBQcm9jZXNzZXM9R2V0T2JqZWN0KCJ3aW5tZ210czpyb290XFxDSU1W", "MiIpLkV4ZWNRdWVyeSgiU0VMRUNUICogRlJPTSBXaW4zMl9Qcm9jZXNzIFdIRVJFIFByb2Nl", "c3NJRD0iICsgb0V4ZWMuUHJvY2Vzc0lEKTsNCgkJCWVhY2goUHJvY2Vzc2VzLGZ1bmN0aW9u", "KGksdil7DQoJCQkJCgkJCQlyZXRQSUQgPSB2LlBhcmVudFByb2Nlc3NJRDsNCgkJCQlpZiAo", "IGlzT2socmV0UElEKSApDQoJCQkJCXJldHVybiBmYWxzZTsKCQkJfSk7DQoJCQlpZiAoIGlz", "Tm9uZShyZXRQSUQpKSB7DQoJCQkJZWNobygid2FybmluZzpyZXRQSUQgaXMgTlVMTCIpOw0K", "CQkJfQ0KCQkJc2guRXhlYygiY21kIC9DIFdBSVRGT1IiICsgIiAvUyAiICsgIiVDT01QVVRF", "Uk5BTUUlIiArICIgL1NJICIgKyBzaWduYWxOYW1lKTsgCg0KCQkJdmFyIGxvb3A9MTA7DQoJ", "CQl3aGlsZSAob0V4ZWMuU3RhdHVzPT0wKXsgCgkJCQlXU2NyaXB0LlNsZWVwKDEwKTsNCgkJ", "CQlpZiAoICEobG9vcC0tKSApIHsNCgkJCQkJCgkJCQkJb0V4ZWMuVGVybWluYXRlKCk7DQoJ", "CQkJCW9FeGVjID0gMDsNCgkJCQl9DQoJCQl9IA0KCQkJcmV0dXJuIHJldFBJRDsNCgkJfQ0K", "CQlmdW5jdGlvbiBnZXRQYXJlbnRQSUQoaW5QSUQpIHsNCgkJCQoJCQl2YXIgcmVmUElEID0g", "aW5QSUQ7DQoJCQl2YXIgcmV0UElEID0gbnVsbDsNCgkJCWlmICggaXNOb25lKHJlZlBJRCkp", "IHsNCgkJCQlyZWZQSUQgPSBnZXRQSUQoKTsKCQkJfQ0KCQkJdmFyIFByb2Nlc3Nlcz1HZXRP", "YmplY3QoIndpbm1nbXRzOnJvb3RcXENJTVYyIikuRXhlY1F1ZXJ5KCJTRUxFQ1QgKiBGUk9N", "IFdpbjMyX1Byb2Nlc3MgV0hFUkUgUHJvY2Vzc0lEPSIrcmVmUElEKTsNCgkJCWVhY2goUHJv", "Y2Vzc2VzLGZ1bmN0aW9uKGksdil7DQoJCQkJcmV0UElEID0gdi5QYXJlbnRQcm9jZXNzSUQ7", "DQoJCQl9KTsNCgkJCXJldHVybiByZXRQSUQ7DQoJCX0NCgkJZnVuY3Rpb24gZ2V0Q21kQXJn", "c0J5UElEKCBpblBJRCApIHsNCgkJCQoJCQl2YXIgcmV0T2JqID0geyBOYW1lOm51bGwsIEFy", "Z3M6bnVsbH07DQoJCQkKCQkJdmFyIHByb2NzID0gR2V0T2JqZWN0KCJ3aW5tZ210czpyb290", "XFxDSU1WMiIpLkV4ZWNRdWVyeSgiU0VMRUNUICogRlJPTSBXaW4zMl9Qcm9jZXNzIFdIRVJF", "IFByb2Nlc3NJRD0iK2luUElEKTsNCgkJCXZhciBjbWRMaW5lID0gIiI7DQoJCQllYWNoKHBy", "b2NzLGZ1bmN0aW9uKGksdil7Y21kTGluZSA9IHYuY29tbWFuZExpbmU7fSk7DQoJCQlpZiAo", "IGNtZExpbmUgPT0gIiIgKSByZXR1cm4gbnVsbDsNCgkNCgkJCXZhciBtID0gY21kTGluZS5t", "YXRjaCgvXlwiKFteXCJdKylcIlxzKyguKikkLyk7CgkJCWlmICggaXNOb25lKG0pICkNCgkJ", "CQltID0gY21kTGluZS5tYXRjaCgvXihbXiBdKylccysoLiopJC8pOwoJCQlpZiAoIGlzT2so", "bSkgKSB7DQoJCQkJcmV0T2JqLk5hbWUgPSBtWzFdOyByZXRPYmouQXJncyA9IG1bMl07DQoJ", "CQkJcmV0T2JqLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAoIHJldE9iai5OYW1l", "ICsgIiAiICsgcmV0T2JqLkFyZ3MgKTt9Ow0KCQkJCXJldHVybiByZXRPYmo7DQoJCQl9IGVs", "c2Ugew0KCQkJCXJldHVybiBudWxsOw0KCQkJfQ0KCQl9DQoJCQoJCQoJCXZhciBleCA9IG1h", "a2VFeHBvcnRzKCk7DQoJCV90aGlzLnVzaW5nID0gZnVuY3Rpb24oYil7DQoJCQlmb3IodmFy", "IGsgaW4gZXgpe2lmKGI9PXRydWUpe190aGlzW2tdPWV4W2tdWzBdO307aWYoKGIhPXRydWUp", "fHwoZXhba11bMV09PXRydWUpKXskZ1trXT1leFtrXVswXTt9O30NCgkJfQ0KCQlfdGhpcy51", "c2luZyh0cnVlKTsNCgl9KSh0aGlzKTsKfSkoKTsNCg0KCihmdW5jdGlvbigpew0KDQoJdmFy", "ICRnbG9iYWxfZXhwb3J0cyA9IHt9OwoJdmFyICRnbG9iYWxfZXhwb3J0c19tYWtlID0gZnVu", "Y3Rpb24oKSB7CgkJdmFyIGV2PSIiOw0KCQlmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0", "cyApDQoJCQlldiArPSBrICsgIj0kZ2xvYmFsX2V4cG9ydHNbXCIiK2srIlwiXVxuIjsNCgkJ", "RnVuY3Rpb24oIiRnbG9iYWxfZXhwb3J0cyIsZXYpKCRnbG9iYWxfZXhwb3J0cyk7DQoJCQoJ", "DQoJCQoJfTsNCgkNCgkoZnVuY3Rpb24oKXsgCgkJdmFyICRucyA9ICd1TWlzYyc7DQoJCQoJ", "CWZ1bmN0aW9uIG1ha2VFeHBvcnRzKCl7DQoJCQlyZXR1cm4gKHsNCgkJCQkKCQkJCQoJCQkJ", "ImRlbGV0ZUZpbGUiCQk6W2RlbGV0ZUZpbGUsCQl0cnVlXSwNCgkJCQkiZGVsZXRlRGlyIgkJ", "CTpbZGVsZXRlRGlyLAkJdHJ1ZV0sDQoJCQkJImNvcHlGaWxlIgkJCTpbY29weUZpbGUsCQkJ", "dHJ1ZV0sDQoJCQkJIm1vdmVGaWxlIgkJCTpbbW92ZUZpbGUsCQkJdHJ1ZV0sDQoJCQkJImNv", "cHlEaXIiCQkJOltjb3B5RGlyLAkJCXRydWVdLA0KCQkJCSJtb3ZlRGlyIgkJCTpbbW92ZURp", "ciwJCQl0cnVlXQ0KCQkJCQoJCQl9KTsNCgkJfQ0KCQl2YXIgJGcgPSAkZ2xvYmFsX2V4cG9y", "dHM7DQoJCXZhciBfdGhpcz17fTsgJGdbJG5zXT1fdGhpczsNCgkNCgkJDQoJCQ0KCQlmdW5j", "dGlvbiBkZWxldGVGaWxlKHBhdGgpew0KCQkJaWYgKCAhcGF0aC5pc0V4aXN0RmlsZSgpICkg", "ew0KCQkJCXJldHVybiB0cnVlOyAKCQkJfQ0KCQkJdmFyIGNudFRyeSA9IDEwOw0KCQkJZG8g", "ew0KCQkJCXRyeSB7DQoJCQkJCWZzby5EZWxldGVGaWxlKHBhdGgpOwoJCQkJfSBjYXRjaChl", "KSB7DQoJCQkJCXdzLlNsZWVwKDEwMDApOwoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQly", "ZXR1cm4gdHJ1ZTsNCgkJCX0gd2hpbGUoY250VHJ5LS0pOw0KCQkJZWNobygiZXJyb3I6ZGVs", "ZXRlIGZpbGU6IixwYXRoKTsNCgkJCXJldHVybiBmYWxzZTsJDQoJCX0NCgkJZnVuY3Rpb24g", "ZGVsZXRlRGlyKHBhdGgpew0KCQkJaWYoIShwYXRoLmlzRXhpc3RGb2xkZXIoKSkpIHsNCgkJ", "CQlyZVRocm93KCJbVzpkZWxldGVEaXJdOm5vdCBmaW5kOiIscGF0aCk7DQoJCQkJCgkJCX0N", "CgkJCXRyeSB7DQoJCQkJZnNvLkRlbGV0ZUZvbGRlcihwYXRoLGZhbHNlKTsNCgkJCX0gY2F0", "Y2goZSl7DQoJCQkJcmVUaHJvdygiZGVsZXRlRGlyIixlKTsNCgkJCX0NCgkJCXJldHVybiB0", "cnVlOw0KCQl9DQoJCWZ1bmN0aW9uIGNvcHlGaWxlKHNyYyxkc3Qpew0KCQkJdHJ5ew0KCQkJ", "CWZzby5Db3B5RmlsZShzcmMsZHN0LHRydWUpOw0KCQkJfSBjYXRjaChlKXsNCgkJCQlyZVRo", "cm93KCJjb3B5RmlsZSIsZSk7DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlmdW5j", "dGlvbiBtb3ZlRmlsZShzcmMsZHN0LGJPdmVyd3JpdGUpew0KCQkJDQoJCQl2YXIgYk92ZXJ3", "cml0ZSA9IChiT3ZlcndyaXRlPT11bmRlZmluZWQpID8gdHJ1ZTpiT3ZlcndyaXRlOw0KCQkJ", "dmFyIGJXaWxkID0gL1wqLy50ZXN0KHNyYyk7CgkJCWlmICggL1xcJC8udGVzdChkc3QpICkg", "ew0KCQkJCWRzdCA9ZHN0LnJlcGxhY2UoLyhcXCkkL2csIiIpOw0KCQkJfQ0KCQkJdmFyIGJT", "cmNJc0RpciA9IHNyYy5pc0V4aXN0Rm9sZGVyKCk7DQoJCQl2YXIgYkRzdElzRGlyID0gZHN0", "LmlzRXhpc3RGb2xkZXIoKTsNCgkJCQ0KCQkJaWYgKCBiV2lsZCApIHsgCQ0KCQkJCWRzdCAr", "PSAiXFwiOw0KCQkJCXRyeXtmc28uTW92ZUZpbGUoc3JjLGRzdCk7fSBjYXRjaChlKXtyZVRo", "cm93KCJtb3ZlRmlsZSIsInNyYyBpcyB3aWxkY2FyZCIsZSk7fQ0KCQkJfSBlbHNlIHsgCQkN", "CgkJCQlpZiAoIGJTcmNJc0RpciApIHsNCgkJCQkJcmV0dXJuIG1vdmVEaXIoc3JjLGRzdCk7", "DQoJCQkJfQ0KCQkJCWlmICggYkRzdElzRGlyICkgewkNCgkJCQkJZHN0ICs9ICJcXCI7DQoJ", "CQkJCXRyeXtmc28uTW92ZUZpbGUoc3JjLGRzdCk7fSBjYXRjaChlKXtyZVRocm93KCJtb3Zl", "RmlsZSIsImRzdCBpcyBob2xkZXIiLGUpO30NCgkJCQl9IGVsc2UgewkJCQ0KCQkJCQl0cnl7", "ZnNvLk1vdmVGaWxlKHNyYyxkc3QpO30gY2F0Y2goZSl7cmVUaHJvdygibW92ZUZpbGUiLGUp", "O30NCgkJCQl9DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlmdW5jdGlvbiBjb3B5", "RGlyKHNyYyxkc3QsYk92ZXJ3cml0ZSl7DQoJCQlpZiAoIGJPdmVyd3JpdGUgIT0gdHJ1ZSAp", "IHsNCgkJCQliT3ZlcndyaXRlID1mYWxzZTsNCgkJCX0NCgkJCWlmICggYk92ZXJ3cml0ZT09", "ZmFsc2UgJiYgKCBkc3QuaXNFeGlzdEZvbGRlcigpKSkgew0KCQkJCXJlVGhyb3coImNvcHlG", "aWxlIiwiT3V0cHV0IGZvbGRlciBleGlzdHM6Iitkc3QpOw0KCQkJfQ0KCQkJdHJ5ew0KCQkJ", "CWZzby5Db3B5Rm9sZGVyKHNyYyxkc3QsYk92ZXJ3cml0ZSk7DQoJCQl9IGNhdGNoKGUpew0K", "CQkJCXJlVGhyb3coImNvcHlEaXIiLGUpOw0KCQkJfQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0J", "DQoJCWZ1bmN0aW9uIG1vdmVEaXIoc3JjLGRzdCxiT3ZlcndyaXRlKXsNCgkJCQkKCQkJCQoJ", "CQkJCgkJCXRyeSB7DQoJCQkJaWYgKCBpc09rKGJPdmVyd3JpdGUpICkgew0KCQkJCQkKCQkJ", "CQlpZiAJCSggZHN0LmlzRXhpc3RGb2xkZXIoKSApIGRlbGV0ZURpcihkc3QpOw0KCQkJCQll", "bHNlIGlmICggZHN0LmlzRXhpc3RGaWxlKCkgKSAJZGVsZXRlRmlsZShkc3QpOw0KCQkJCX0N", "CgkJCQlmc28ubW92ZUZvbGRlcihzcmMsZHN0KTsNCgkJCX0gY2F0Y2goZSl7DQoJCQkJcmVU", "aHJvdygibW92ZURpciIsZSk7DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQkNCgkJCgkJ", "X3RoaXMudXNpbmcgPSBmdW5jdGlvbihiKXsNCgkJCQoJCQkKCQkJdmFyIGV4ID0gbWFrZUV4", "cG9ydHMoKTsNCgkJCWZvcih2YXIgayBpbiBleCl7DQoJCQkJaWYoYj09dHJ1ZSl7DQoJCQkJ", "CV90aGlzW2tdPWV4W2tdWzBdOwoJCQkJfTsNCgkJCQlpZigoYiE9dHJ1ZSl8fChleFtrXVsx", "XT09dHJ1ZSkpew0KCQkJCQkkZ1trXT1leFtrXVswXTsJIAoJCQkJfTsNCgkJCX0NCgkJCSRn", "bG9iYWxfZXhwb3J0c19tYWtlKCk7DQoJCX0NCgkJX3RoaXMudXNpbmcodHJ1ZSk7DQoJfSko", "dGhpcyk7Cn0pKCk7IAoNCgooZnVuY3Rpb24oKXsNCgkNCgkJdmFyICRnbG9iYWxfZXhwb3J0", "cyA9IHt9OwoJCXZhciAkZ2xvYmFsX2V4cG9ydHNfbWFrZSA9IGZ1bmN0aW9uKCkgewoJCQl2", "YXIgZXY9IiI7DQoJCQlmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0cyApDQoJCQkJZXYg", "Kz0gayArICI9JGdsb2JhbF9leHBvcnRzW1wiIitrKyJcIl1cbiI7DQoJCQlGdW5jdGlvbigi", "JGdsb2JhbF9leHBvcnRzIixldikoJGdsb2JhbF9leHBvcnRzKTsNCgkJCQoJCQkKCQl9Ow0K", "CQkNCgkJKGZ1bmN0aW9uKCl7IAoJCQl2YXIgJG5zID0gJ3VHaXQnOw0KCQkJCgkJCWZ1bmN0", "aW9uIG1ha2VFeHBvcnRzKCl7DQoJCQkJcmV0dXJuICh7DQoJCQkJCQoJCQkJCQoJCQkJCSJn", "aXRCYXNoIgkJOltnaXRCYXNoLAkJdHJ1ZV0NCgkJCQkJCgkJCQl9KTsNCgkJCX0NCgkJCXZh", "ciAkZyA9ICRnbG9iYWxfZXhwb3J0czsNCgkJCXZhciBfdGhpcz17fTsgJGdbJG5zXT1fdGhp", "czsNCgkJDQoJCQkNCgkJCQ0KDQoJCQlmdW5jdGlvbiBnaXRCYXNoKCBvcHREaWMgLCBjbWRz", "TGlzdCApIHsNCgkJCQkKCQkJCXZhciByZXQgPSB7IGV4aXRDb2RlOi0xLCBtc2c6W10gfTsN", "CgkJCQl2YXIgb3B0ID0ge30NCgkJCQl2YXIgY21kcyA9IFtdOw0KCQkJCWVhY2goYXJndW1l", "bnRzLGZ1bmN0aW9uKGksdil7DQoJCQkJCWlmICggaT09MCAmJiB0eXBlT2Yodik9PSJvYmpl", "Y3QiKXsKCQkJCQkJb3B0LmVjaG8gCT0gdi5lY2hvIAl8fCBmYWxzZTsNCgkJCQkJCW9wdC5j", "ZAkJPSB2LmNkCQl8fCB1bmRlZmluZWQ7DQoJCQkJCQlvcHQuY21kVHlwZSA9IHYuY21kVHlw", "ZSB8fCAiY21kIjsNCgkJCQkJCXJldHVybjsNCgkJCQkJfQ0KCQkJCQljbWRzLnB1c2godik7", "DQoJCQkJfSk7DQoJCQkJCgkJCQkKCQkJCQoJCQkJZnVuY3Rpb24gZ2V0R2l0QmFzaFBhdGgo", "KXsNCgkJCQkJdmFyIG8gPSBkb0NtZCgge2VjaG86ZmFsc2V9LCJ3aGVyZSIsImdpdC5leGUi", "ICk7DQoJCQkJCWlmICggby5leGl0Q29kZSAhPSAwICkgew0KCQkJCQkJZWNobygiZ2l0LWJh", "c2jjgYzjgqTjg7Pjgrnjg4jjg7zjg6vjgZXjgozjgabjgYTjgb7jgZvjgpMiKTsNCgkJCQkJ", "CXJldHVybiBudWxsOw0KCQkJCQl9DQoJCQkJCXZhciB3aGVyZUdpdFBhdGggPSBvLm1zZ1sw", "XTsKCQkJCQl2YXIgcGF0aEdpdEJhc2ggPSB3aGVyZUdpdFBhdGgudXAoKS51cCgpLmRvd24o", "ImJpbiIpLmRvd24oImJhc2guZXhlIik7IAoJCQkJCWlmICggcGF0aEdpdEJhc2guaXNFeGlz", "dEZpbGUoKSApIHsNCgkJCQkJCXJldHVybiBwYXRoR2l0QmFzaDsNCgkJCQkJfSBlbHNlIHsN", "CgkJCQkJCWVjaG8oImJhc2jjgYzopovjgaTjgYvjgorjgb7jgZvjgpMoIixwYXRoR2l0QmFz", "aCwiKSIpOw0KCQkJCQkJcmV0dXJuIG51bGw7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdmFyIHBh", "dGhDbWRHaXRCYXNoID0gZ2V0R2l0QmFzaFBhdGgoKTsNCgkJCQlpZiAoIGlzTm9uZShwYXRo", "Q21kR2l0QmFzaCkgKSB7DQoJCQkJCXJldC5leGl0Q29kZSA9IC0xOyByZXQubXNnLnB1c2go", "IkNhbm5vdCBmaW5kIGdpdC1iYXNoIik7DQoJCQkJCXJldHVybiByZXQ7DQoJCQkJfQ0KCQkJ", "CQoJCQkJCgkJCQlpZiAoIG9wdC5jbWRUeXBlID09ICJmaWxlIiApew0KCQkJCQkKCQkJCQlm", "b3IodmFyIGk9MDtpPGNtZHMubGVuZ3RoO2krKyl7DQoJCQkJCQlpZiAoICFjbWRzW2ldLmlz", "RXhpc3RGaWxlKCkgKSB7DQoJCQkJCQkJcmV0LmV4aXRDb2RlID0gLTE7IHJldC5tc2cucHVz", "aCgiQ2Fubm90IGZpbmQgZmlsZToiICsgY21kc1tpXSsiKCIrY21kc1tpXS5QUigpKyIpIik7", "DQoJCQkJCQkJcmV0dXJuIHJldDsNCgkJCQkJCX0NCgkJCQkJCWNtZHNbaV0gPSBjbWRzW2ld", "LkZQKCk7IAoJCQkJCX0NCgkJCQl9DQoJCQkJCgkJCQl2YXIgdGVtcERpciA9IGdldFRlbXBG", "b2xkZXIoZ2V0RW52KCkuZXhlRGlyLHRydWUpOw0KCQkJCXZhciB0ZW1wRmlsZSA9IGdldFRl", "bXBGaWxlKHRlbXBEaXIsIi5vdCIpOw0KCQkJCQ0KCQkJCXZhciBkZWxUZW1wRGlyID0gZnVu", "Y3Rpb24oKSB7DQoJCQkJCWlmICggdGVtcERpci5pc0V4aXN0Rm9sZGVyKCkgKXsNCgkJCQkJ", "CXRyeSB7DQoJCQkJCQkJZnNvLkRlbGV0ZUZvbGRlcih0ZW1wRGlyLHRydWUpOw0KCQkJCQkJ", "fSBjYXRjaCAoZSkgew0KCQkJCQkJCTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX07DQoNCgkJ", "CQl2YXIgYmtDRD0gc2guQ3VycmVudERpcmVjdG9yeTsgCgkJCQlpZiAoIGlzT0sob3B0LmNk", "KSApIHsgDQoJCQkJCQoJCQkJCWlmICggIW9wdC5jZC5pc0V4aXN0Rm9sZGVyKCkgKSB7DQoJ", "CQkJCQlyZXQuZXhpdENvZGUgPSAtMTsgcmV0Lm1zZy5wdXNoKCJOb3QgZXhpc3QgZGlyZWN0", "b3J5OiIsb3B0LmNkKTsNCgkJCQkJCXJldHVybiByZXQ7DQoJCQkJCX0NCgkJCQkJc2guQ3Vy", "cmVudERpcmVjdG9yeSA9IG9wdC5jZC5GUCgpOw0KCQkJCX0NCgkJCQl2YXIgb3RNc2c9IiI7", "DQoJCQkJaWYgKCBvcHQuY21kVHlwZSA9PSAiY21kIiApIHsNCgkJCQkJZWFjaChjbWRzLGZ1", "bmN0aW9uKGksdil7DQoJCQkJCQl2YXIgdGVtcENtZCA9IGdldFRlbXBGaWxlKHRlbXBEaXIs", "Ii5zaCIpOw0KCQkJCQkJCgkJCQkJCQoJCQkJCQkKCQkJCQkJCgkJCQkJCXRlbXBDbWQud3Jp", "dGVBbGxFbmNvZGluZygiVVRGLThOIix2KTsKCQkJCQkJCgkJCQkJCXZhciBvID0gZG9DbWQo", "e2VjaG86b3B0LmVjaG8sIHJlZGlyZWN0RXJyOnRydWUsc3F1YXRhOnRydWV9LHBhdGhDbWRH", "aXRCYXNoLHRlbXBDbWQsIj4iLHRlbXBGaWxlKTsNCgkJCQkJCW90TXNnID0gdGVtcEZpbGUu", "cmVhZEFsbFVURjgoKTsNCgkJCQkJCXJldC5tc2cgPSByZXQubXNnLmNvbmNhdChzcGxpdExp", "bmUob3RNc2cpKTsNCgkJCQkJCXJldC5leGl0Q29kZSA9IG8uZXhpdENvZGU7DQoJCQkJCQlp", "ZiAoIHJldC5leGl0Q29kZSAhPSAwICkgew0KCQkJCQkJCWRlbFRlbXBEaXIoKTsNCgkJCQkJ", "CQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0NCgkJCQkJfSk7DQoJCQkJfSBlbHNlIGlmICggb3B0", "LmNtZFR5cGUgPT0gImZpbGUiKXsNCgkJCQkJZWFjaChjbWRzLGZ1bmN0aW9uKGksdil7DQoJ", "CQkJCQl2YXIgbyA9IGRvQ21kKHtlY2hvOm9wdC5lY2hvLCByZWRpcmVjdEVycjp0cnVlLHNx", "dWF0YTp0cnVlfSxwYXRoQ21kR2l0QmFzaCwgdiwiPiIsdGVtcEZpbGUpOw0KCQkJCQkJb3RN", "c2cgPSB0ZW1wRmlsZS5yZWFkQWxsVVRGOCgpOw0KCQkJCQkJcmV0Lm1zZyA9IHJldC5tc2cu", "Y29uY2F0KHNwbGl0TGluZShvdE1zZykpOw0KCQkJCQkJcmV0LmV4aXRDb2RlID0gby5leGl0", "Q29kZTsNCgkJCQkJCWlmICggcmV0LmV4aXRDb2RlICE9IDAgKSB7DQoJCQkJCQkJZGVsVGVt", "cERpcigpOw0KCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQ0KCQkJCQl9KTsNCgkJCQkJ", "CgkJCQkJCgkJCQl9DQoJCQkJc2guQ3VycmVudERpcmVjdG9yeSA9IGJrQ0Q7CgkJCQoJCQkJ", "ZGVsVGVtcERpcigpOw0KCQkJCXJldHVybiByZXQ7DQoJCQl9CQkJDQoJCQkKCQkJX3RoaXMu", "dXNpbmcgPSBmdW5jdGlvbihiKXsNCgkJCQkKCQkJCQoJCQkJdmFyIGV4ID0gbWFrZUV4cG9y", "dHMoKTsNCgkJCQlmb3IodmFyIGsgaW4gZXgpew0KCQkJCQlpZihiPT10cnVlKXsNCgkJCQkJ", "CV90aGlzW2tdPWV4W2tdWzBdOwoJCQkJCX07DQoJCQkJCWlmKChiIT10cnVlKXx8KGV4W2td", "WzFdPT10cnVlKSl7DQoJCQkJCQkkZ1trXT1leFtrXVswXTsJIAoJCQkJCX07DQoJCQkJfQ0K", "CQkJCSRnbG9iYWxfZXhwb3J0c19tYWtlKCk7DQoJCQl9DQoJCQlfdGhpcy51c2luZyh0cnVl", "KTsNCgkJfSkodGhpcyk7Cgl9KSgpOyAKCQ0K" ].join("\n")); }; // EMBED-END@3bd654e5-4f90-447a-96b3-450212902aa9 // DO-NOT-EDIT END@d2c890ff-9330-4e28-ba82-695a31a6a4c2