<!doctypehtml><html lang=ja dir=ltr xmlns=http://www.w3.org/1999/xhtml><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta content="text/html; charset=utf-8"http-equiv=Content-Type><meta name=viewport content="user-scalable=1,initial-scale=1,minimum-scale=1,maximum-scale=1"><meta name=format-detection content="telephone=no"><meta name=robots content=noindex,nofollow><link rel=manifest href={{{domainurl}}}manifest.json><link rel="shortcut icon"href={{{domainurl}}}favicon.ico><link rel=icon type=image/png sizes=16x16 href={{{domainurl}}}favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href={{{domainurl}}}favicon-32x32.png><link rel=apple-touch-icon href=/favicon-303x303.png><link type=text/css href=styles/xterm.css media=screen rel=stylesheet title=CSS><body id=body onload='"undefined"!=typeof startup&&startup()'style="overflow-y:hidden;margin:0;padding:0;border:0;font-size:13px;font-family:\'Trebuchet MS\',Arial,Helvetica,sans-serif">{{{customCSSTags}}}<meta name=apple-mobile-web-app-capable content=yes><meta name=apple-mobile-web-app-status-bar-style content=#ffffff><meta name=apple-mobile-web-app-title content={{{title}}}><script src=scripts/common-0.0.1{{{min}}}.js></script><script src=scripts/meshcentral{{{min}}}.js></script><script src=scripts/agent-redir-ws-0.1.1{{{min}}}.js></script><script src=scripts/agent-desktop-0.0.2{{{min}}}.js></script><script src=scripts/amt-0.2.0{{{min}}}.js></script><script src=scripts/amt-redir-ws-0.1.0{{{min}}}.js></script><script src=scripts/amt-desktop-0.0.2{{{min}}}.js></script><script src=scripts/xterm{{{min}}}.js></script><script src=scripts/xterm-addon-fit{{{min}}}.js></script><script src=scripts/xterm-addon-image{{{min}}}.js></script><script src=scripts/zlib{{{min}}}.js></script><script src=scripts/zlib-inflate{{{min}}}.js></script><script src=scripts/zlib-adler32{{{min}}}.js></script><script src=scripts/zlib-crc32{{{min}}}.js></script><script keeplink=1 src=scripts/filesaver.min.js></script>{{{customJSTags}}}<meta name=msapplication-TileColor content=#00aba9><meta name=theme-color content=#ffffff><title>{{{title}}}</title><style>body{background-color:#fff}.night body{background-color:#000}#MxMESH{color:#000}.night #MxMESH{color:#d3d3d3}.textOverGray{color:#000}#dialog{z-index:1000;background-color:#eee;box-shadow:0 0 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:90px;width:300px}.night #dialog{color:#000;background-color:#aaa}:focus{outline:0}a{color:#036;text-decoration:underline}.night a{color:#99f}#footer a{color:#fff;text-decoration:underline}#footer a:hover{text-decoration:none}.night #footer{color:gray}.i1{background:url(../images/icons50.png) 0 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i2{background:url(../images/icons50.png) -50px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i3{background:url(../images/icons50.png) -100px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i4{background:url(../images/icons50.png) -150px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i5{background:url(../images/icons50.png) -200px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i6{background:url(../images/icons50.png) -250px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i7{background:url(../images/icons50.png) -300px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.i8{background:url(../images/icons50.png) -350px 0;background-image:image-set(url(../images/icons50.png) 1x,url(../images/icons100.png) 2x);height:50px;width:50px;border:none}.m0{background:url(../images/images16.png) -32px 0;height:16px;width:16px;border:none;float:left}.m1{background:url(../images/images16.png) -16px 0;height:16px;width:16px;border:none;float:left}.m2{background:url(../images/images16.png) -96px 0;height:16px;width:16px;border:none;float:left}.m3{background:url(../images/images16.png) -112px 0;height:16px;width:16px;border:none;float:left}.m4{background:url(../images/images16.png) -128px 0;height:16px;width:16px;border:none;float:left}.NotifyIconSmall1{width:24px;height:24px;background:url(../images/notify24.png) 0 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall2{width:24px;height:24px;background:url(../images/notify24.png) -24px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall3{width:24px;height:24px;background:url(../images/notify24.png) -48px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall4{width:24px;height:24px;background:url(../images/notify24.png) -72px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall5{width:24px;height:24px;background:url(../images/notify24.png) -96px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall6{width:24px;height:24px;background:url(../images/notify24.png) -120px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall7{width:24px;height:24px;background:url(../images/notify24.png) -144px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall8{width:24px;height:24px;background:url(../images/notify24.png) -168px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.NotifyIconSmall9{width:24px;height:24px;background:url(../images/notify24.png) -192px 0;background-image:image-set(url(../images/notify24.png) 1x,url(../images/notify48.png) 2x)}.gray{filter:gray;-webkit-filter:grayscale(100%) opacity(60%)}.DevSt{padding-left:5px;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#ddd}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;clear:both}.deviceNotifyDot{position:absolute;right:10px;top:0;height:16px}.deviceNotifyDotSub{text-align:center;color:#fff;width:16px;background-color:#00f;padding:2px;border-radius:10px;box-shadow:2px 2px 10px #000;cursor:pointer;margin-left:3px;float:left}.deviceNotifyDotSub:hover{background-color:#44f}.deviceNotifySmallDot{position:absolute;right:10px;top:0;height:10px}.deviceNotifySmallDotSub{text-align:center;color:#fff;width:10px;padding:2px;background-color:#00f;border-radius:10px;box-shadow:2px 2px 10px #000;cursor:pointer;margin-left:2px;float:left}.deviceNotifySmallDotSub:hover{background-color:#44f}.deviceNotifyLargeDot{position:absolute;right:10px;top:10px;height:40px}.deviceNotifyLargeDotSub{text-align:center;width:35px;height:35px;color:#fff;padding:2px;background-color:#00f;border-radius:20px;box-shadow:2px 2px 10px #000;cursor:pointer;margin-left:4px;font-size:30px;float:left}.deviceNotifyLargeDotSub:hover{background-color:#44f}.style10{background-color:#c9c9c9;color:#000}.night .style10{background-color:#888}.deviceBatteryLarge{position:absolute;right:10px;top:0;width:28px;height:48px;border:none;box-shadow:none}.deviceBatteryLarge1{background:url(../images/batteries48.png) 0 0}.deviceBatteryLarge2{background:url(../images/batteries48.png) -28px 0}.deviceBatteryLarge3{background:url(../images/batteries48.png) -56px 0}.deviceBatteryLarge4{background:url(../images/batteries48.png) -84px 0}.deviceBatteryLarge5{background:url(../images/batteries48.png) -112px 0}.deviceBatteryLarge6{background:url(../images/batteries48.png) -140px 0}.deviceBatteryLarge7{background:url(../images/batteries48.png) -168px 0}.deviceBatteryLarge8{background:url(../images/batteries48.png) -196px 0}.deviceBatteryLarge9{background:url(../images/batteries48.png) -224px 0}.deviceBatteryLarge10{background:url(../images/batteries48.png) -252px 0}.deviceBatteryLarge11{background:url(../images/batteries48.png) -280px 0}.deviceBatterySmall{position:absolute;left:6px;top:22px;width:14px;height:24px;border:none;box-shadow:none}.deviceBatterySmall1{background:url(../images/batteries24.png) 0 0}.deviceBatterySmall2{background:url(../images/batteries24.png) -14px 0}.deviceBatterySmall3{background:url(../images/batteries24.png) -28px 0}.deviceBatterySmall4{background:url(../images/batteries24.png) -42px 0}.deviceBatterySmall5{background:url(../images/batteries24.png) -56px 0}.deviceBatterySmall6{background:url(../images/batteries24.png) -70px 0}.deviceBatterySmall7{background:url(../images/batteries24.png) -84px 0}.deviceBatterySmall8{background:url(../images/batteries24.png) -98px 0}.deviceBatterySmall9{background:url(../images/batteries24.png) -112px 0}.deviceBatterySmall10{background:url(../images/batteries24.png) -126px 0}.deviceBatterySmall11{background:url(../images/batteries24.png) -140px 0}.meshList{width:auto;height:40px;background-color:#d3d3d3;margin-top:5px;margin-bottom:5px;margin-left:60px;padding-top:5px;padding-bottom:5px;border-radius:8px 0 0 8px}.night .meshList{background-color:gray}.devList1{height:50px;cursor:pointer;position:relative;margin-top:5px;margin-bottom:5px}.devList2{float:left;margin-left:4px}.devList3{width:auto;height:40px;background-color:#d3d3d3;margin-left:60px;padding-top:5px;padding-bottom:5px;border-radius:8px 0 0 8px}.night .devList3{background-color:gray}.devList4{padding-left:12px;padding-top:2px;color:#000}.devList5{padding-left:12px;padding-top:3px;color:#444}.night .devList5{color:#000}.deskButton{box-shadow:0 0 10px #000;border-radius:20px;position:absolute;right:10px;top:10px;cursor:pointer;background-color:#aaa;z-index:1000}.menuButton{box-shadow:0 0 10px #000;border-radius:10px;display:inline-block;width:120px;background-color:#aaa;text-align:center;padding:8px;cursor:pointer;margin:10px;z-index:1000}#notificationCount{min-width:28px;font-size:20px;background-color:orange;text-align:center;cursor:pointer;color:#000}.notifiyBox{font-size:16px;position:absolute;z-index:1000;top:60px;right:76px;width:300px;text-align:left;background-color:#f0eccd;border:4px solid #666;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:2px 2px 4px #888;-moz-box-shadow:2px 2px 4px #888;box-shadow:2px 2px 4px #888;max-height:200px}.night .notifiyBox{color:#000}.notifiyBox:before{content:' ';position:absolute;width:0;height:0;right:5px;top:-30px;border:15px solid;border-color:transparent #666 #666 transparent}.notifiyBox:after{content:' ';position:absolute;width:0;height:0;right:7px;top:-24px;border:12px solid;border-color:transparent #f0eccd #f0eccd transparent}#p15statetext{padding:4px;height:15px}#p15agentConsole{background:#000;margin:0;padding:0;color:#d3d3d3;width:100%;position:relative}#p15coreName{padding:4px;display:inline-block}#p15agentConsoleText{position:absolute;margin:0;padding:0;top:0;bottom:0;left:0;right:0;overflow-y:scroll;overflow-x:auto}.areaHead{padding-top:2px;padding-bottom:2px;background:silver}.night .areaHead{color:#ccc;background:#333}.areaFoot{padding-top:2px;padding-bottom:2px;background:silver}.night .areaFoot{color:#ccc;background:#333}.toright2{float:right;text-align:right}#consoleTable{width:100%;height:100%;padding:0;margin-top:0}.night #consoleTable{color:#000}.menucurve{background-color:#fff;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid #fff;border-bottom:1px solid #fff}.night .menucurve{background-color:#000;border-right:1px solid #000;border-bottom:1px solid #000}#termTable{width:100%;padding:0;margin-top:0}.fulldesk #termTable{position:absolute;top:0;bottom:0;left:0;right:0}#termarea3x{background:#000;text-align:center;height:400px;position:relative}.viewSelector10{margin-left:2px;margin-top:2px;background:url(../images/views.png) -476px 0;height:28px;width:28px}.viewSelector11{margin-left:2px;margin-top:2px;background:url(../images/views.png) -504px 0;height:28px;width:28px}.tagSpan{background-color:#d3d3d3;padding:3px;border-radius:5px}.night .tagSpan{color:#000}#d2serveraction,#d3serveraction{width:100%;background-color:#d3d9d6;text-align:left;padding:3px}#d2serverfiles,#d3serverfiles{width:100%;height:150px;background-color:#fff;padding:2px;border:1px solid gray;overflow-y:scroll}</style><div id=container><div id=notifiyBox class=notifiyBox style=display:none></div><div id=mastheadx></div><div id=masthead style="background:url(logo.png) 0 0;background-size:341px 50px;background-color:#036;background-repeat:no-repeat;height:50px;width:100%;overflow:hidden"><div style="width:calc(100% - 50px);overflow:hidden"><div style=float:left;height:66px;color:#c8c8c8;padding-left:10px;padding-top:6px onclick=go(2)><strong><font style="font-size:36px;font-family:Arial,Helvetica,sans-serif;text-shadow:1px 1px 2px #000">{{{title1}}}</font></strong></div><div style=float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:10px><strong><font style="font-size:12px;font-family:Arial,Helvetica,sans-serif;text-shadow:1px 1px 2px #000">{{{title2}}}</font></strong></div></div><div id=devViewPageState class=noselect style=position:absolute;right:160px;top:10px;height:30px;line-height:30px;color:#c8c8c8;font-size:16px;display:none></div><img id=devViewPageButton2 class=noselect style=position:absolute;right:130px;top:10px;cursor:pointer;display:none onclick=onDeviceViewPageChange(2) src=/images/left-30.png width=20 height=30> <img id=devViewPageButton3 class=noselect style=position:absolute;right:100px;top:10px;cursor:pointer;display:none onclick=onDeviceViewPageChange(3) src=/images/right-30.png width=20 height=30><div id=notificationCount onclick=clickNotificationIcon() class=unselectable style=position:absolute;right:50px;top:0;font-size:28px;width:50px;height:50px;cursor:pointer;display:none title=クリックして現在の通知を表示します><div id=notificationCount2 style=padding-top:8px>0</div></div><img id=topMenuIcon class=noselect style=position:absolute;right:0;top:10px;color:#c8c8c8;font-size:44px;margin-right:8px;cursor:pointer;display:none onclick=topMenu() src=/images/3bars-30.png width=30 height=30></div><div id=page_content style=position:absolute;bottom:32px;top:50px;width:100%><div id=column_l style=width:100%;padding:0;position:absolute;bottom:0;top:0><div id=p0 style=display:none;width:100%;height:100%><div style=display:flex;align-items:center;width:100%;height:100%><div id=p0message style=text-align:center;width:100%><span id=p0span>サーバーが切断されました</span>、<href onclick=reload() style=cursor:pointer><u>クリックして再接続</u></href>。</div></div></div><div id=p1 style=display:none;width:100%;height:100%><div style=display:flex;align-items:center;width:100%;height:100%><div id=p1message style=text-align:center;width:100%></div></div></div><div id=p2 style=display:none;position:absolute;top:0;left:0;right:0;bottom:0><div id=xdevices style=position:absolute;overflow-y:auto;top:0;left:0;right:0;bottom:34px onscroll=onDevicesScroll() ontouchstart=onDeviceTouch(!0) ontouchend=onDeviceTouch(!1)></div><div id=xdevicesBar style=position:absolute;overflow-y:auto;height:34px;left:0;right:0;bottom:0;background-color:#aaa;color:#000><div style=margin:4px><span style=width:20px;display:inline-block;text-align:center;cursor:pointer;font-size:16px onclick=clearSearchInput()><b>X</b></span> <input id=SearchInput autocomplete=off type=search placeholder=フィルタ onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) style=padding:2px;margin:0;height:20px;background-color:#fff>&nbsp; <label class=noselect><input type=checkbox id=RealNameCheckBox onclick=onRealNameCheckBox()>OS名</label> <label class=noselect><input type=checkbox id=OnlineCheckBox onclick=onOnlineCheckBox(event)>オンライン</label></div></div></div><div id=p3 style=display:none;position:absolute;bottom:0;top:0;width:100%><table cellspacing=0 style=margin:0;padding:0;border-spacing:0;border:0><tr style=padding:0><td style=padding:0;color:#c8c8c8;text-align:center;cursor:pointer width=60px valign=top onclick=goBack()><div style=padding:0;background-color:#036;width:10px;height:10px;float:right;border:0><div class=menucurve></div></div><div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div><td><div style=margin-left:5px><strong style=font-size:large><span id=p3userName></span></strong><br></div></table><div id=p3info style=overflow-y:auto;position:absolute;top:55px;bottom:0;width:100%><img id=p2AccountImage alt=""width=128 height=128 onclick=account_manageImage(0) src=images/user-256.png style="position:absolute;right:8px;top:7px;border-radius:8px;box-shadow:0 0 7px #000"><div style=margin-left:8px><div id=p3AccountActions><div id=p2AccountSecurity style=display:none><p><strong>アカウントのセキュリティ</strong><div style=margin-left:9px;margin-bottom:8px><div id=managePhoneNumber1 style=margin-top:5px;display:none><a onclick=account_managePhone() style=cursor:pointer>電話番号を管理する</a> <span id=authPhoneNumberCheck><strong>✓</strong></span></div><div id=manageEmail2FA style=margin-top:5px;display:none><a onclick=account_manageAuthEmail() style=cursor:pointer>メール認証を管理する</a> <span id=authEmailSetupCheck><strong>✓</strong></span></div><div style=margin-top:5px><a href=# onclick=account_showLocalizationSettings()>ローカリゼーション設定</a></div><div id=manageAuthApp style=margin-top:5px;display:none><a onclick=account_manageAuthApp() style=cursor:pointer>認証アプリを管理する</a> <span id=authAppSetupCheck><strong>✓</strong></span></div><div id=manageOtp style=margin-top:5px;display:none><a onclick=account_manageOtp(0) style=cursor:pointer>バックアップコードを管理する</a> <span id=authCodesSetupCheck><strong>✓</strong></span></div></div></div><div id=p2AccountActions style=display:none><p><strong>アカウントアクション</strong><div style=margin-left:9px;margin-bottom:8px><div style=margin-top:5px><span id=viewPreviousLogins><a onclick="return account_viewPreviousLogins()"style=cursor:pointer>以前のログインを表示する</a></span></div><div style=margin-top:5px><span id=managePhoneNumber2 style=display:none><a onclick=account_managePhone() style=cursor:pointer>電話番号を管理する</a></span></div><div style=margin-top:5px><span id=verifyEmailId style=display:none><a onclick=account_showVerifyEmail() style=cursor:pointer>Eメールを確認します</a></span></div><span id=p2AccountPassActions><div style=margin-top:5px><span id=changeEmailId style=display:none><a onclick=account_showChangeEmail() style=cursor:pointer>メールアドレスを変更する</a></span></div><div style=margin-top:5px><a onclick=account_showChangePassword() style=cursor:pointer>パスワードを変更する</a><span id=p2nextPasswordUpdateTime></span></div><div style=margin-top:5px><a onclick=account_showDeleteAccount() style=cursor:pointer>アカウントを削除</a></div></span><div style=margin-top:5px id=setDarkModeLink><a onclick=toggleNightMode() style=cursor:pointer>ダークモードを設定する</a></div><div style=margin-top:5px><a onclick=showNotes(!1) style=cursor:pointer>個人的なメモ</a></div></div><br style=clear:both></div></div><strong>デバイスグループ</strong> <span id=p3createMeshLink1>（ <a onclick=account_createMesh() style=cursor:pointer><img src=images/icon-addnew.png width=12 height=12 border=0> 新しい</a> ）</span><br><br><div id=p3meshes></div><div id=p3noMeshFound style=margin-left:9px;display:none>デバイスグループはありません。<span id=p3createMeshLink2> <a onclick=account_createMesh() style=cursor:pointer><strong>ここから始めましょう！</strong></a></span></div><br style=clear:both></div></div></div><div id=p5 style=display:none><table cellspacing=0 style=margin:0;padding:0;border-spacing:0;border:0><tr style=padding:0><td style=padding:0;color:#c8c8c8;text-align:center;cursor:pointer width=60px valign=top onclick=goBack()><div style=padding:0;background-color:#036;width:10px;height:10px;float:right;border:0><div class=menucurve></div></div><div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div><td><img src=/images/user-50.png width=50 height=50><td><div style=margin-left:5px><strong style=font-size:large>私のファイル</strong><br></div></table><div id=p5myfiles style=position:absolute;top:55px;bottom:0;width:100%><table id=p5toolbar style=width:100%;height:78px cellpadding=0 cellspacing=0><tr><td style=width:100%;background-color:#d3d9d6;text-align:left;padding:4px valign=bottom><div style=width:100%;text-align:center><input type=button style="width:calc(100%/5 - 5px)"id=p5FolderUp disabled onclick=p5folderup() value=アップ> <input type=button style="width:calc(100%/5 - 5px)"id=p5SelectAllButton disabled onclick=p5selectallfile() value=すべて選択 onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5RenameFileButton disabled value=リネーム onclick=p5renamefile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5DeleteFileButton disabled value=削除 onclick=p5deletefile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5NewFolderButton disabled value=フォルダ onclick=p5createfolder() onkeypress=return!1 onkeydown=return!1></div><div style=width:100%;text-align:center><input type=button style="width:calc(100%/5 - 5px)"id=p5UploadButton disabled value=アップロードする onclick=p5uploadFile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5CutButton disabled value=カット onclick=p5copyFile(1) onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5CopyButton disabled value=コピー onclick=p5copyFile(0) onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5PasteButton disabled value=ペースト onclick=p5pasteFile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p5RefreshButton value=リフレッシュ onclick=p5refreshFiles() onkeypress=return!1 onkeydown=return!1></div><tr><td style=background-color:#e4e9e7;height:28px><table style=width:100%><tr><td id=p5currentpath style=overflow:hidden;padding-left:4px;padding-top:2px;color:#000><td style=text-align:right;padding-right:4px><select id=p5sortdropdown onchange=updateFiles()><option value=1 selected>名前順<option value=2>サイズで並べ替え<option value=3>日付けで並び替え<option value=4>名前で降順<option value=5>サイズで降順<option value=6>日付で降順</select></table></table><div id=p5filetable style="width:100%;height:calc(100% - 102px);overflow:auto;-webkit-user-select:none"><span id=p5files></span></div><table id=p5toolbarBottom style=width:100%;height:22px;position:absolute;bottom:0;background-color:#d3d9d6 cellpadding=0 cellspacing=0><tr><td style=text-align:left;padding:3px>&nbsp;<span id=p5bottomstatus></span><td id=p5rightOfButtons style=text-align:right;padding:3px></table></div></div><div id=p10 style=display:none;position:absolute;bottom:0;top:0;width:100%;overflow:hidden><table id=p10deskTopTable cellspacing=0 style=margin:0;padding:0;border-spacing:0;border:0;position:absolute;top:0><tr style=padding:0><td style=padding:0;color:#c8c8c8;text-align:center;cursor:pointer width=60px valign=top onclick=goBack()><div style=padding:0;background-color:#036;width:10px;height:10px;float:right;border:0><div class=menucurve></div></div><div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div><td><a id=MainComputerImage style=cursor:pointer onclick=p10showiconselector()></a><td><div style=margin-left:5px><strong><span id=p10deviceName></span></strong><br><span id=MainComputerState></span></div></table><div id=p10dialog style="z-index:1000;background-color:#eee;box-shadow:0 0 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:30px;width:300px;left:30px;display:none"><div style="width:100%;background-color:#036;color:#fff;border-radius:5px 5px 0 0"><div style=padding:5px>キーボードショートカットのカスタマイズ</div><div style=width:100%;margin:6px></div></div><div style=margin-right:16px;margin-left:8px><div id=p10dialog2 style=margin:auto;margin:3px></div></div><div style=width:100%;padding:2px;text-align:center><input type=button value="Restore Default Keyboard Shortcuts"onclick=restoreDeskCustomizeKey()></div><div style=padding:10px;margin-bottom:20px><input type=button value=OK style=float:right;width:80px onclick=deskCustomizeKeysEx()></div></div><div id=p10general style=overflow-y:scroll;position:absolute;top:55px;bottom:0;width:100%><div class=deviceNotifyLargeDot><img id=p10deviceStar class=deviceNotifyLargeDotSub src=images/icon-star-notify-40.png width=35 height=35><div id=p10deviceMsg onclick=showDeviceMessages(null,null,event) class=deviceNotifyLargeDotSub></div><img id=p10deviceNotify onclick=showDeviceSessions() class=deviceNotifyLargeDotSub src=images/icon-relay-notify-40.png width=35 height=35> <img id=p10deviceHelp onclick=showDeviceHelpRequests(null,null,event) class=deviceNotifyLargeDotSub src=images/icon-help-notify-40.png width=35 height=35></div><div id=p10deviceBattery class="deviceBatteryLarge deviceBatteryLarge1"></div><div id=p10html style=margin-left:8px;margin-right:8px></div><div id=p10html2></div><div id=p10html3 style=margin-left:8px></div></div><img id=deskkeybutton1 src=images/mobile-desk-exit.png class=deskButton style=top:10px;display:none onclick=exitButton()> <img id=deskkeybutton3a src=images/mobile-desk-menu-open.png class=deskButton style=top:60px;display:none onclick=toggleMenu(!1)> <img id=deskkeybutton3b src=images/mobile-desk-menu-close.png class=deskButton style=top:60px;display:none onclick=toggleMenu(!0)> <img id=deskkeybutton4a src=images/mobile-desk-mouse-left.png class=deskButton style=top:110px;display:none onclick=deskChangeMouseButton(0)> <img id=deskkeybutton4b src=images/mobile-desk-mouse-right.png class=deskButton style=top:110px;display:none onclick=deskChangeMouseButton(1)> <img id=deskkeybutton5a src=images/mobile-desk-scale-out.png class=deskButton style=top:160px;display:none onclick=deskChangeFullscreenZoom()> <img id=deskkeybutton5b src=images/mobile-desk-scale-in.png class=deskButton style=top:160px;display:none onclick=deskChangeFullscreenZoom()> <img id=deskkeybutton2a src=images/mobile-desk-keyboard-open.png class=deskButton style=top:210px;display:none onclick=toggleKeyboard()> <img id=deskkeybutton2b src=images/mobile-desk-keyboard-close.png class=deskButton style=top:210px;display:none onclick=toggleKeyboard()><div style=position:absolute;top:0;left:0;z-index:200;opacity:0;width:1px;height:1px><input id=softKeyboard autocapitalize=off autocomplete=off inputmode=text spellcheck=false style=z-index:200;opacity:0;width:1px;height:1px onfocus=keyboardFocusChange() onblur=keyboardFocusChange()></div><div id=deskButtonMenu style=display:none;position:absolute;top:10px;left:10px;right:55px;bottom:10px;z-index:1000></div><div id=p10desktop style=overflow:hidden;position:absolute;top:55px;bottom:0;width:100%;display:none><div id=deskarea1 style=position:absolute;top:0;width:100%;height:32px><div style=padding-top:2px;padding-bottom:2px;background:silver;height:32px><div style=float:right;text-align:right><span id=p14power></span>&nbsp; <input type=button id=deskFullScreen value=全画面表示 onclick=deskToggleFull(event) onkeypress=return!1 onkeydown=return!1 disabled style=height:28px;margin-right:3px></div><div style=margin-left:3px><input type=button id=connectbutton1 value=接続 onclick=connectDesktop(event,3) onkeypress=return!1 onkeydown=return!1 disabled style=height:28px> <input type=button id=connectbutton1h value="HW Connect"onclick=connectDesktop(event,2) onkeypress=return!1 onkeydown=return!1 disabled style=height:28px> <input type=button id=disconnectbutton1 value=切断 onclick=connectDesktop(event,0) onkeypress=return!1 onkeydown=return!1 style=height:28px> <span id=deskstatus style=color:#000>切断されました</span></div></div></div><div id=deskarea3 style="position:absolute;top:32px;width:100%;height:calc(100% - 64px);background-color:#000;text-align:center"><div id=DeskParent style=height:100%><canvas id=Desk width=640 height=200 style=width:100%;-ms-touch-action:none;margin-left:0 oncontextmenu=return!1 onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event) onmousewheel=dmousewheel(event)></canvas></div><div id=p11DeskConsoleMsg style=display:none;cursor:pointer;position:absolute;left:30px;top:17px;color:#ff0;background-color:rgba(0,0,0,.6);padding:10px;border-radius:5px;text-align:left onclick=p11clearConsoleMsg()></div><div id=p11DeskSessionSelector style=display:none;position:absolute;left:30px;top:17px;right:30px;bottom:17px;overflow-y:auto></div></div><div id=deskarea4 style=position:absolute;bottom:0;width:100%;height:32px><div style=padding-top:2px;padding-bottom:2px;background:silver><div style=float:right;text-align:right;padding-right:2px><span id=DeskLockButton><img src=images/icon-lock.png onclick=deviceLockFunction() height=16 width=16 style=padding-top:5px;cursor:pointer></span><span id=DeskChatButton><img src=images/icon-chat.png onclick=deviceChat(event) height=16 width=16 style=padding-top:5px;cursor:pointer></span>&nbsp; <span id=DeskToastButton><img src=images/icon-notify.png onclick=deviceToastFunction() height=16 width=16 style=padding-top:5px;cursor:pointer></span>&nbsp; <span id=DeskOpenWebButton><img src=images/icon-url2.png onclick=deviceUrlFunction() height=16 width=16 style=padding-top:5px;cursor:pointer></span>&nbsp; <span id=DeskRunButton><img src=images/icon-play.png onclick=runDeviceCmd() height=16 width=16 style=padding-top:5px;cursor:pointer></span></div><div><input id=deskActionsBtn type=button style=margin-left:3px;height:28px onkeypress=return!1 onkeydown=return!1 value=行動 onclick=deviceActionFunction()> <input type=button value=設定 onkeypress=return!1 onkeydown=return!1 onclick=showDesktopSettings() style=height:28px> <input type=button onkeypress=return!1 onkeydown=return!1 value=電源アクション... onclick=showPowerActionDlg() style=display:none;height:28px> <input type=button id=DeskScreens value=スクリーン onkeypress=return!1 onkeydown=return!1 onclick=deskSelectScreens() style=display:none;height:28px> <label><span id=DeskControlSpan style=display:none><input id=DeskControl type=checkbox onkeypress=return!1 onkeydown=return!1>入力</span></label></div></div></div></div><div id=termButtonMenu style=display:none;position:absolute;top:10px;left:10px;right:55px;bottom:10px;z-index:1000></div><div id=p10terminal style=overflow:hidden;position:absolute;top:55px;bottom:0;width:100%;display:none;background-color:#333><div id=termTable style=position:absolute;top:0;bottom:0;left:0;right:0><div id=termarea1><div class=areaHead style=line-height:24px><div class=toright2><input type=button id=termFullScreen value=全画面表示 onclick=deskToggleFull(event) onkeypress=return!1 onkeydown=return!1 disabled style=height:28px;margin-right:3px><div id=terminalCustomUpperRight style=float:left;margin-right:6px></div></div><div><span id=connectbutton2span style=margin-left:3px><input type=button id=connectbutton2 value=接続 style=height:28px onclick=connectTerminal(event,1) onkeypress=return!1 onkeydown=return!1 disabled></span><span id=connectbutton2sspan style=margin-right:4px><input type=button id=connectbutton2s value=SSH接続 style=height:28px onclick=connectTerminal(event,3) onkeypress=return!1 onkeydown=return!1 disabled></span><span id=disconnectbutton2span style=margin-left:3px><input type=button id=disconnectbutton2 value=切断 style=height:28px onclick=connectTerminal(event,0) onkeypress=return!1 onkeydown=return!1></span><span id=termstatus style=line-height:22px>切断されました</span><span id=termtitle></span></div></div></div><div id=termarea3 style="width:100%;height:calc(100% - 60px)"cellpadding=0 cellspacing=0><div id=termarea3x style=width:100%;height:100%><div style=width:100%;height:100%;text-align:left id=termarea3xdiv></div></div></div><div id=termarea4 style=position:relative;height:32px><div class=areaFoot><div class=toright2></div><div style=height:28px><input id=termActionsBtn style=margin-left:3px;height:28px type=button title=デバイスの電源操作を実行します onkeypress=return!1 onkeydown=return!1 value=行動 onclick=deviceActionFunction()> <input id=ctrlcbutton style=margin-left:3px;height:28px type=button onkeypress=return!1 onkeydown=return!1 value=Ctl-C onclick='termSendKey(3,"ctrlcbutton")'> <input id=ctrlxbutton style=margin-left:3px;height:28px type=button onkeypress=return!1 onkeydown=return!1 value=Ctl-X onclick='termSendKey(24,"ctrlxbutton")'> <input id=escbutton style=margin-left:3px;height:28px type=button onkeypress=return!1 onkeydown=return!1 value=ESC onclick='termSendKey(27,"escbutton")'></div></div></div><div id=p12TermConsoleMsg style=display:none;cursor:pointer;position:absolute;left:30px;top:45px;color:#ff0;background-color:rgba(0,0,0,.6);padding:10px;border-radius:5px onclick=p12clearConsoleMsg()></div></div></div><div id=p10files style=position:absolute;top:55px;bottom:0;width:100%;display:none><table id=p13toolbar style=width:100%;height:111px cellpadding=0 cellspacing=0><tr><td style="background-color:silver;border-bottom:2px solid #000;padding:2px;line-height:24px"><div style=float:right;text-align:right><input id=filesActionsBtn type=button onkeypress=return!1 onkeydown=return!1 value=行動 onclick=deviceActionFunction() style=margin-right:2px><div id=filesCustomUpperRight style=float:left;margin-right:6px></div></div><div style=margin-left:2px><input id=p13AutoConnect value=自動接続 onclick=autoConnectFiles(event) onkeypress=return!1 onkeydown=return!1 type=button style=display:none> <input id=p13Connect value=接続 onclick=connectFiles(event,1) onkeypress=return!1 onkeydown=return!1 type=button> <input id=p13Connects value=SFTP接続 onclick=connectFiles(event,2) onkeypress=return!1 onkeydown=return!1 type=button> <input id=p13Disconnect value=切断 onclick=connectFiles(event) onkeypress=return!1 onkeydown=return!1 type=button> <span class=textOverGray id=p13Status>切断されました</span></div><tr><td style=width:100%;background-color:#d3d9d6;text-align:left;padding:4px valign=bottom><div style=width:100%;text-align:center><input type=button style="width:calc(100%/5 - 5px)"id=p13FolderUp disabled onclick=p13folderup() value=アップ> <input type=button style="width:calc(100%/5 - 5px)"id=p13SelectAllButton disabled onclick=p13selectallfile() value=すべて選択 onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13RenameFileButton disabled value=リネーム onclick=p13renamefile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13DeleteFileButton disabled value=削除 onclick=p13deletefile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13NewFolderButton disabled value=フォルダ onclick=p13createfolder() onkeypress=return!1 onkeydown=return!1></div><div style=width:100%;text-align:center><input type=button style="width:calc(100%/5 - 5px)"id=p13UploadButton disabled value=アップロードする onclick=p13uploadFile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13CutButton disabled value=カット onclick=p13copyFile(1) onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13CopyButton disabled value=コピー onclick=p13copyFile(0) onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13PasteButton disabled value=ペースト onclick=p13pasteFile() onkeypress=return!1 onkeydown=return!1> <input type=button style="width:calc(100%/5 - 5px)"id=p13RefreshButton disabled value=リフレッシュ onclick=p13folderup(9999) onkeypress=return!1 onkeydown=return!1></div><tr><td style=background-color:#e4e9e7;height:28px><table style=width:100%><tr><td id=p13currentpath style=overflow:hidden;padding-left:4px;padding-top:2px;color:#000><td style=text-align:right;padding-right:4px><select id=p13sortdropdown onchange=p13updateFiles()><option value=1 selected>名前順<option value=2>サイズで並べ替え<option value=3>日付けで並び替え<option value=4>名前で降順<option value=5>サイズで降順<option value=6>日付で降順</select></table></table><div id=p13FilesConsoleMsg style=display:none;cursor:pointer;position:absolute;left:30px;top:165px;color:#ff0;background-color:rgba(0,0,0,.6);padding:10px;border-radius:5px onclick=p13clearConsoleMsg()></div><div id=p13filetable style="width:100%;height:calc(100% - 133px);overflow:auto;-webkit-user-select:none"><span id=p13files></span></div><table id=p13toolbarBottom style=width:100%;height:22px;position:absolute;bottom:0 cellpadding=0 cellspacing=0><tr><td style=text-align:left;padding:3px;text-align:center;background-color:#d3d9d6;color:#000>&nbsp;<span id=p13bottomstatus></span></table></div><div id=p10details style=overflow-y:scroll;position:absolute;top:55px;bottom:0;width:100%><div id=p10detailshtml style=margin-left:-3px></div></div><div id=p10console style=overflow:hidden;position:absolute;top:55px;bottom:0;width:100%><table id=consoleTable cellpadding=0 cellspacing=0><tr style=height:28px><td class=areaHead><div class=toright2><div id=p15coreName></div><input type=button id=p15uploadCore value=エージェントアクション onclick=p15uploadCore(event)></div><div id=p15statetext></div><tr><td id=p15agentConsole style=position:relative><pre id=p15agentConsoleText></pre><tr style=height:28px><td class=areaFoot><table style=width:100%><tr><td style=width:99%><input id=p15consoleText style=width:100%;box-sizing:border-box onkeyup=p15consoleSend(event)><td id=p15outputselecttd><select id=p15outputselect onchange=setupConsole()><option id=p15outputselect1 value=1>エージェント<option id=p15outputselect3 value=3>押す<option id=p15outputselect2 value=2>MQTT</select><td style=width:1%><input id=id_p15consoleClear type=button class=bottombutton value=クリア onclick=p15consoleClear()></table></table></div></div><div id=p20 style=display:none;position:absolute;bottom:0;top:0;width:100%><table cellspacing=0 style=margin:0;padding:0;border-spacing:0;border:0;position:absolute;top:0><tr style=padding:0><td style=padding:0;color:#c8c8c8;text-align:center;cursor:pointer width=60px valign=top onclick=goBack()><div style=padding:0;background-color:#036;width:10px;height:10px;float:right;border:0><div class=menucurve></div></div><div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">◀</div><td onclick=p20editmesh(1)><img src=/images/meshicon50.png width=50 height=50><td onclick=p20editmesh(1)><div style=margin-left:5px><strong style=font-size:large><span id=p20meshName></span></strong><br></div></table><div style=overflow-y:auto;position:absolute;top:55px;bottom:0;left:0;right:0><div id=p20info style=margin-left:8px;margin-right:8px></div></div></div></div></div><div id=footer style=height:32px;width:100%;text-align:center;background-color:#113962;position:absolute;bottom:0><table id=footerMenu cellpadding=0 cellspacing=0 style=height:32px;width:100%;color:#fff;cursor:pointer;table-layout:fixed></table></div></div><div id=dialog style=display:none><div style="width:100%;background-color:#036;color:#fff;border-radius:5px 5px 0 0"><div id=id_dialogclose style=float:right;padding:5px;cursor:pointer onclick=setDialogMode()><b>X</b></div><div id=id_dialogtitle style=padding:5px></div><div style=width:100%;margin:6px></div></div><div style=margin-right:16px;margin-left:8px><div id=dialog1 style=margin:auto;text-align:center;margin:3px><div id=id_dialogMessage style=padding:10px></div></div><div id=dialog2 style=margin:auto;margin:3px><div id=id_dialogOptions></div></div><div id=dialog3 style=margin:auto;margin:3px><select id=deskkeys style=width:100%><option value=10>Ctrl + Alt + Del<option value=11>タブ<option value=5>Win<option value=0>Win+Down<option value=1>Win + Up<option value=2>Win+L<option value=3>Win+M<option value=4>Shift + Win + M<option value=6>Win+R<option value=7>Alt-F4<option value=8>Ctrl-W<option value=9>Alt-Tab<option value=12>Shift-F10</select></div><div id=dialog4 style=margin:auto;margin:3px><div id=d3upload><div>ファイル選択</div><select id=d3uploadMode onchange=d3modechange()><option value=1>ローカルファイルのアップロード<option value=2>サーバーファイルの選択</select></div><div id=d3localmode style=display:none><div>ファイルをアップロードする</div><form id=d3localmodeform method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input id=d3auth name=auth style=display:none> <input id=d3filter name=filter style=display:none> <input id=d3attrib name=attrib style=display:none> <input type=file id=d3localFile name=files onchange=d3setActions()> <input type=submit id=d3submit style=display:none></form></div><div id=d3servermode><div id=d3serveraction valign=bottom><input type=button id=p3FolderUp disabled onclick=d3folderup() value=アップ>&nbsp;<span id=p3CurrentFolder></span></div><div id=d3serverfiles></div></div></div><div id=dialog7 style=margin:auto;margin:3px><div id=d7meshkvm><h4 style="width:100%;border-bottom:1px solid gray">エージェントリモートデスクトップ</h4><table style=width:100%><tr><td>品質<td style=width:100px><select id=d7bitmapquality style=float:right;width:200px dir=rtl></select><tr><td>スケーリング<td style=width:100px><select id=d7bitmapscaling style=float:right;width:200px dir=rtl><option selected value=1024>100％<option value=896>87.5%<option value=768>75%<option value=640>62.5%<option value=512>50%<option value=384>37.5%<option value=256>25%<option value=128>12.5%</select><tr><td>レート<td style=width:100px><select id=d7framelimiter style=float:right;width:200px dir=rtl><option selected value=50>高速<option value=100>中<option value=400>スロー<option value=1000>非常に遅い</select><tr><td>エンコーディング<td style=width:100px><select id=d7encoding style=float:right;width:200px dir=rtl><option value=1>JPEG<option value=2>PNG<option value=3>TIFF<option selected value=4>WEBP</select><tr><td><td><label style=display:block id=d7deskAutoLockLabel><input type=checkbox id=d7deskAutoLock>ロックオン切断</label></table></div><div id=d7amtkvm><h4 style="width:100%;border-bottom:1px solid gray">Intel® AMTハードウェアKVM</h4><table style=width:100%><tr><td>エンコーディング<td style=width:100px><select id=d7desktopmode style=float:right;width:200px><option value=1>RLE8、最速<option value=2>RLE16、推奨<option value=3>RAW8、遅い<option value=4>RAW16、非常に遅い</select></table></div></div></div><div id=idx_dlgButtonBar style=padding:10px;margin-bottom:20px><input id=idx_dlgCancelButton type=button value=キャンセル style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)> <input id=idx_dlgOkButton type=button value=OK style=float:right;width:80px onclick=dialogclose(1)><div><input id=idx_dlgDeleteButton type=button value=削除 style=display:none onclick=dialogclose(2)></div></div></div><div id=topMenu style="z-index:1000;background-color:#eee;box-shadow:0 0 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:0 0 5px 5px;position:fixed;top:50px;right:5px;width:170px;display:none"><div style="padding:12px;border-top:1px solid gray;color:#000;cursor:pointer"onclick=topMenu(2)>私のファイル</div><div style="padding:12px;border-top:1px solid gray;color:#000;cursor:pointer"onclick=topMenu(1)>マイアカウント</div><div id=logoutMenuOption><a id=logoutMenuOptionRef href=/logout><div style="padding:12px;border-top:1px solid gray;color:#000;cursor:pointer">ログアウト</div></a></div></div><audio id=chimes><source src=sounds/chimes.mp3 type=audio/mp3></audio><iframe name=fileUploadFrame style=display:none></iframe><script>"use strict";var random="{{{randomlength}}}",webState="{{{webstate}}}";for(var i in""!=webState&&(webState=JSON.parse(decodeURIComponent(webState))),webState)try{localStorage.setItem(i,webState[i])}catch(e){}if(webState&&!webState.loctag)try{localStorage.removeItem("loctag")}catch(e){}var urlargs=parseUriArgs();null!=urlargs.key&&(urlargs.key=""+urlargs.key),urlargs.key&&0==isAlphaNumeric(urlargs.key)&&delete urlargs.key,urlargs.locale&&0==isAlphaNumeric(urlargs.locale)&&delete urlargs.locale,delete urlargs.user,delete urlargs.pass,delete urlargs.viewmode,delete urlargs.gotonode,delete urlargs.gotodevicename,delete urlargs.gotodevicername,delete urlargs.gotodeviceip,delete urlargs.gotomesh,delete urlargs.panel;var args=parseUriArgs();args.key&&0==isAlphaNumeric(args.key)&&delete args.key,args.locale&&0==isAlphaNumeric(args.locale)&&delete args.locale;var debugLevel=parseInt("{{{debuglevel}}}"),features=parseInt("{{{features}}}"),features2=parseInt("{{{features2}}}"),features3=parseInt("{{{features3}}}"),sessionTime=parseInt("{{{sessiontime}}}"),sessionRefreshTimer=null,domain="{{{domain}}}",domainUrl="{{{domainurl}}}",authCookie="{{{authCookie}}}",authRelayCookie="{{{authRelayCookie}}}",logoutControls=JSON.parse(decodeURIComponent("{{{logoutControls}}}")),authCookieRenewTimer=null,webRelayPort=parseInt("{{{webRelayPort}}}"),hidePowerTimeline="{{{hidePowerTimeline}}}",webRelayDns="{{{webRelayDns}}}",meshserver=null,xdr=null,usergroups=null,stars={},serverinfo=null,nodes=[],meshes={},filetree={},userinfo=null,users=(serverinfo=null,null),nodeShortIdent=0,serverPublicNamePort="{{{serverDnsName}}}:{{{serverPublicPort}}}",debugmode=!1,attemptWebRTC=!!(128&features),webrtcconfiguration="{{{webrtcconfig}}}";if(""==webrtcconfiguration)webrtcconfiguration=null;else try{webrtcconfiguration=JSON.parse(decodeURIComponent(webrtcconfiguration))}catch(e){console.log('Invalid WebRTC config: "'+webrtcconfiguration+'".'),webrtcconfiguration=null}var files,terminal,StatusStrs=["切断されました","接続しています...","セットアップ...","接続済み","Intel&reg;接続されたAMT"],agentsStr=["未知の","Windows 32ビットコンソール","Windows 64ビットコンソール","Windows 32ビットサービス","Windows 64ビットサービス","Linux 32ビット","Linux 64ビット","MIPS","XENx86","Android","Linux ARM","macOS x86-32ビット","Android x86","PogoPlug ARM","Android","Linux Poky x86-32bit","macOS x86-64ビット","ChromeOS","Linux Poky x86-64bit","Linux NoKVM x86-32bit","Linux NoKVM x86-64ビット","Windows MinCoreコンソール","Windows MinCoreサービス","NodeJS","ARM-Linaro","ARMv6l / ARMv7l","ARMv8 64ビット","ARMv6l / ARMv7l / NoKVM","MIPS24KC（OpenWRT）","Apple Silicon","FreeBSD x86-64","未知の","Linux ARM 64 bit","Alpine Linux x86 64 Bit (MUSL)","アシスタント（Windows）","Armada370-ARM32 / HF（libc / 2.26）","OpenWRT x86-64","OpenBSD x86-64","未知の","未知の","MIPSEL24KC（OpenWRT）","ARMADA/CORTEX-A53/MUSL (OpenWRT)","Windows ARM 64bit console","Windows ARM 64bit service","ARMVIRT32 (OpenWRT)","RISC-V x86-64"],domainStates=["なし","Azure AD","On-Premises AD","Hybrid AD","Microsoft Account"],passRequirements="{{{passRequirements}}}";""!=passRequirements&&(passRequirements=JSON.parse(decodeURIComponent(passRequirements)));var deskPinchZoom,sessionActivity=Date.now(),deskKeyboardShortcuts=[],nightMode=setNightMode(),xterm=null,xtermfit=null,xtermimage=null,xtermResizeTimer=null,devicePagingState=null,p11DeskConsoleMsgTimer=null,p12TermConsoleMsgTimer=null,p13FilesConsoleMsgTimer=null,webpSupport=!1;function startup(){if(!(32&features)){var e=null;try{e=top.location.toString().toLowerCase()}catch(e){}if(top!=self&&(null==e||0==top.active))return void(top.location=self.location)}if(!args.locale){var t=getstore("loctag",0);null!=t&&"*"!=t&&(args.locale=t)}window.onresize=center,center(),QV("changeEmailId",!(2097152&features)),QH("p1message","接続しています..."),go(1),document.onkeypress=ondeskkeypress,document.onkeydown=ondeskkeydown,document.onkeyup=ondeskkeyup,document.onclick=function(e){999==xxdialogMode&&"topMenuIcon"!=e.target.id&&(QV("topMenu",!1),xxdialogMode=0)},(meshserver=MeshServerCreateControl(domainUrl)).onStateChanged=onStateChanged,meshserver.onMessage=onMessage,meshserver.trace=args.trace,meshserver.Start();try{stars=JSON.parse(getstore("stars","{}"))}catch(e){}logoutControls&&logoutControls.logoutUrl&&(Q("logoutMenuOptionRef").href=logoutControls.logoutUrl);var n=localStorage.getItem("desktopsettings");null!=n&&(desktopsettings=JSON.parse(n)),applyDesktopSettings(),null!=args.webrtc&&(attemptWebRTC=1==args.webrtc),sessionTime>=10&&(sessionRefreshTimer=setTimeout(refreshCookieSession,Math.round(6e4*sessionTime*.8))),QV("setDarkModeLink",!(3145728&features2)),deskKeyboardShortcuts=[];var o=getstore("deskKeyShortcuts","0x0A002E,0x100000,0x100028,0x100026,0x10004C,0x10004D,0x11004D,0x100052,0x020073,0x080057,0x020009,0x100025,0x100027").split(",");for(var i in o)deskKeyboardShortcuts.push(parseInt(o[i]));updateDeskShortcutKeys(),updateTermShortcutKeys()}function refreshCookieSession(){var e=null;try{e=new XDomainRequest}catch(e){}e||(e=new XMLHttpRequest),e.open("GET",window.location.origin+domainUrl+"refresh.ashx"),e.timeout=15e3,e.onload=function(){sessionRefreshTimer=setTimeout(refreshCookieSession,Math.round(6e4*sessionTime*.8))},e.onerror=e.ontimeout=function(){sessionRefreshTimer=null},e.send()}function onStateChanged(e,t,n,o){if(0==t){if(setDialogMode(0),go(0),deleteAllNotifications(),"noauth"==o)return void QH("p0span","認証を実行できません");2==n?setTimeout(serverPoll,5e3):QH("p0span","Webソケットに接続できません"),null!=authCookieRenewTimer&&(clearInterval(authCookieRenewTimer),authCookieRenewTimer=null),devicePagingState=null,updateDevicePageState()}else 2==t&&(meshserver.send({action:"usergroups"}),meshserver.send({action:"meshes"}),meshserver.send({action:"nodes",skip:null==devicePagingState?0:devicePagingState.skip}),meshserver.send({action:"files"}),authCookieRenewTimer=setInterval(function(){meshserver.send({action:"authcookie"})},18e5));QV("topMenuIcon",2==t)}function serverPoll(){xdr=null;try{xdr=new XDomainRequest}catch(e){}xdr||(xdr=new XMLHttpRequest),xdr.open("HEAD",window.location.href),xdr.timeout=15e3,xdr.onload=function(){xdr.status<500?reload():setTimeout(serverPoll,1e4)},xdr.onerror=xdr.ontimeout=function(){setTimeout(serverPoll,1e4)},xdr.send()}function updateSelf(){var e=!!(256&features2);if(userinfo&&(e=4294967295!=userinfo.siteadmin&&!!(1024&userinfo.siteadmin)||!!(256&features2)),QV("p3AccountActions",!(4&features)&&0==serverinfo.domainauth&&0==e),QV("logoutMenuOption",!(4&features)&&0==serverinfo.domainauth),QV("p2AccountSecurity",!(4&features||0!=serverinfo.domainauth||!(4096&features)||0!=e)),QV("p2AccountImage",!e),QV("verifyEmailId",!0!==userinfo.emailVerified&&null!=userinfo.email&&1==serverinfo.emailcheck),QV("manageAuthApp",1!=serverinfo.lock2factor&&4096&features&&(1==userinfo.otpsecret||!(131072&features2))),QV("manageOtp",1!=serverinfo.lock2factor&&!(262144&features2)&&4096&features&&(1==userinfo.otpsecret||userinfo.otphkeys>0)),QV("authPhoneNumberCheck",null!=userinfo.phone),QV("authEmailSetupCheck",1==userinfo.otpekey&&null!=userinfo.email&&1==userinfo.emailVerified),QV("authAppSetupCheck",1==userinfo.otpsecret),QV("authCodesSetupCheck",userinfo.otpkeys>0),QV("p2AccountActions",!(4&features)&&0==serverinfo.domainauth&&null!=userinfo),QV("p2AccountPassActions",!(4&features)&&0==serverinfo.domainauth&&null!=userinfo&&0==userinfo._id.split("/")[2].startsWith("~")),QV("p3createMeshLink1",!1),QV("p3createMeshLink2",!1),null!=userinfo.flags&&1&userinfo.flags?(null==userinfo.accountImageRnd&&(userinfo.accountImageRnd=Math.floor(9999999999*Math.random())),Q("p2AccountImage").src="userimage.ashx?rnd="+userinfo.accountImageRnd):Q("p2AccountImage").src="images/user-256.png","number"==typeof userinfo.passchange)if(-1==userinfo.passchange)QH("p2nextPasswordUpdateTime"," - 次回ログイン時にリセットします。");else if(null!=passRequirements&&"number"==typeof passRequirements.reset){var t=userinfo.passchange+86400*passRequirements.reset-Math.floor(Date.now()/1e3);if(t<0)QH("p2nextPasswordUpdateTime"," - 次回ログイン時にリセットします。");else if(t<3600){var n=Math.floor(t/60);QH("p2nextPasswordUpdateTime",format(1==n?" - 1分でリセットします。":" - {0}分でリセットします。",n))}else if(t<86400){var o=Math.floor(t/3600);QH("p2nextPasswordUpdateTime",format(1==o?" - 1時間でリセットします。":" - {0}時間後にリセットします。",o))}else{var i=Math.floor(t/86400);QH("p2nextPasswordUpdateTime",format(1==o?" - 1日でリセットします。":" - {0}日後にリセットします。",i))}}}function setSessionActivity(){sessionActivity=Date.now()}function checkIdleSessionTimeout(){Date.now()-sessionActivity>serverinfo.timeout&&(null!=desktop&&(desktop.Stop(),desktopNode=desktop=null),null!=terminal&&(terminal.Stop(),terminal=null),null!=files&&(files.Stop(),files=null),serverinfo.logoutonidlesessiontimeout&&(urlargs.key?window.location.href="logout?key="+urlargs.key:window.location.href="logout"))}function onMessage(e,t){switch(t.action){case"serverinfo":if((serverinfo=t.serverinfo).timeout&&(setInterval(checkIdleSessionTimeout,1e4),checkIdleSessionTimeout()),null!=userinfo&&updateSelf(),null!=serverinfo.certExpire){var n=Math.floor((serverinfo.certExpire-Date.now())/864e5);n>=0&&n<20&&addNotification({text:format("証明書の有効期限は{0}日です",n)})}QV("manageEmail2FA",8388608&features&&1!=serverinfo.lock2factor),QV("managePhoneNumber1",33554432&features&&67108864&features&&1!=serverinfo.lock2factor),QV("managePhoneNumber2",33554432&features&&!(67108864&features)&&1!=serverinfo.lock2factor);break;case"authcookie":authCookie=t.cookie,authRelayCookie=t.rcookie;break;case"userinfo":userinfo=t.userinfo,QH("p3userName",userinfo.name),null!=serverinfo&&updateSelf();break;case"users":for(var o in users={},t.users)users[t.users[o]._id]=t.users[o];null!=currentUser&&(currentUser=users[currentUser._id]),updateUsers();break;case"wssessioncount":wssessions=t.wssessions,updateUsers();break;case"meshes":for(var o in meshes={},t.meshes)meshes[t.meshes[o]._id]=t.meshes[o];null!=currentMesh&&(currentMesh=meshes[currentMesh._id]),updateMeshes(),mainUpdate(4);break;case"usergroups":var i=0;if(Array.isArray(t.ugroups)){for(var a in usergroups={},t.ugroups)i++,usergroups[t.ugroups[a]._id]=t.ugroups[a];0==i&&(usergroups=null)}else{for(var a in usergroups=t.ugroups,t.ugroups)i++;0==i&&(usergroups=null)}break;case"files":filetree=setupBackPointers(t.filetree),updateFiles();break;case"nodes":for(var o in nodes=[],t.nodes)for(var s in t.nodes[o])t.nodes[o][s].namel=t.nodes[o][s].name.toLowerCase(),t.nodes[o][s].rname?t.nodes[o][s].rnamel=t.nodes[o][s].rname.toLowerCase():t.nodes[o][s].rnamel=t.nodes[o][s].namel,t.nodes[o][s].meshnamel=meshes[o]?meshes[o].name.toLowerCase():"*",t.nodes[o][s].meshid=o,t.nodes[o][s].state=t.nodes[o][s].state?t.nodes[o][s].state:0,t.nodes[o][s].desc=t.nodes[o][s].desc,t.nodes[o][s].icon||(t.nodes[o][s].icon=1),t.nodes[o][s].ident=++nodeShortIdent,nodes.push(t.nodes[o][s]);null!=currentNode&&0==IsNodeViewable(currentNode)&&(currentNode=null,go(2)),null!=currentNode&&(null!=(currentNode=getNodeFromId(currentNode._id))?gotoDevice(currentNode._id,xxcurrentView,!0):go(2)),devicePagingState=null==t.totalcount?null:{total:t.totalcount,skip:t.skip,limit:t.limit},updateDevicePageState(),mainUpdate(4),0==xxcurrentView&&go(parseInt("{{viewmode}}")),gotoDevice("{{currentNode}}",parseInt("{{viewmode}}"));break;case"powertimeline":if(t.nodeid!=powerTimelineReq)break;for(var a in powerTimelineNode=t.nodeid,powerTimeline=t.timeline,powerTimelineUpdate=Date.now()+3e5,powerTimeline)a%2==1&&(powerTimeline[a]=1e3*powerTimeline[a]);currentNode._id==t.nodeid&&drawDeviceTimeline();break;case"getsysinfo":if(t.nodeid!=powerTimelineReq)break;!0===t.noinfo?updateDeviceDetails(getNodeFromId(t.nodeid)):(t.hardware.time=t.time,updateDeviceDetails(getNodeFromId(t.nodeid),t.hardware));break;case"lastconnect":null!=(b=getNodeFromId(t.nodeid))&&(b.lastconnect=t.time,b.lastaddr=t.addr);break;case"msg":if(null!=t.nodeid){var l=-1;if(null!=nodes)for(var a in nodes)if(nodes[a]._id==t.nodeid){l=a;break}if(-1!=l)if("console"==t.type)p15consoleReceive(nodes[l],t.value,t.source);else if("notify"==t.type){if(!(8&(s=getstore("notifications",0)))&&null!=t.amtMessage)break;s={text:t.value,title:t.title,icon:t.icon,titleid:t.titleid,msgid:t.msgid,args:t.args};null!=t.id&&(s.id=t.id),null!=t.nodeid&&(s.nodeid=t.nodeid),null!=t.tag&&(s.tag=t.tag),null!=t.url&&(s.url=t.url),null!=t.username&&(s.username=t.username),"number"==typeof t.maxtime&&(s.maxtime=t.maxtime),addNotification(s)}else if("userSessions"==t.type&&null!=currentNode&&currentNode._id==t.nodeid&&null==desktop){var r=[];if(null!=t.data)for(var a in t.data)"Active"!=t.data[a].State&&"Console"!=t.data[a].StationName&&3!=debugmode||r.push(t.data[a]);if(0==r.length)connectDesktop(null,1,null,t.tag);else if(1==r.length)connectDesktop(null,1,r[0].SessionId,t.tag);else{var d="",u="{{{userSessionsSort}}}";for(var a in r.sort(function(e,t){return e[u]?t[u]?e[u]<t[u]?-1:e[u]>t[u]?1:0:1:-1}),r)d+='<div style="text-align:left;cursor:pointer;background-color:gray;margin:5px;padding:5px;border-radius:5px" onclick=connectDesktop(event,1,'+r[a].SessionId+","+t.tag+")>"+r[a].State+", "+r[a].StationName,r[a].Username&&(r[a].Domain?d+=" - "+r[a].Domain+"/"+r[a].Username:d+=" - "+r[a].Username),d+="</div>";QH("p11DeskSessionSelector",d),QV("p11DeskSessionSelector",!0)}}}else if("notify"==t.type){s={text:t.value,title:t.title,icon:t.icon,titleid:t.titleid,msgid:t.msgid,args:t.args};null!=t.id&&(s.id=t.id),null!=t.tag&&(s.tag=t.tag),null!=t.url&&(s.url=t.url),null!=t.username&&(s.username=t.username),"number"==typeof t.maxtime&&(s.maxtime=t.maxtime),addNotification(s)}break;case"getnetworkinfo":if(currentNode._id!=t.nodeid)return;updateDeviceDetails(getNodeFromId(t.nodeid),null,t);break;case"getNotes":if((s=Q("d2devNotes"))&&t.id==decodeURIComponent(s.attributes.noteid.value))t.notes?QH("d2devNotes",decodeURIComponent(t.notes)):QH("d2devNotes",""),0==("true"==s.attributes.ro.value)&&(s.removeAttribute("readonly"),QE("idx_dlgOkButton",!0),QV("idx_dlgOkButton",!0),focusTextBox("d2devNotes"));break;case"otpauth-request":if(2==xxdialogMode&&"otpauth-request"==xxdialogTag)if(null!=t.err){var c=["","2FAはロックされています。","バックアップコードはロックされています。","ログイントークンは使用済み","OTP 2FAは許可されていません","アカウントがロックされています","OTPLIBを読み込めません。"];t.err>0&&t.err<c.length?QH("d2optinfo",c[t.err]):QH("d2optinfo",format("エラー #{0}",t.err))}else{var p=t.secret;52==p.length?p=p.split(/(.............)/).filter(Boolean).join(" "):32==p.length&&(p=(p=p.split(/(....)/).filter(Boolean).join(" ")).substring(0,20)+"<br/>"+p.substring(20)),QH("d2optinfo",format('インストール <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2" rel="noreferrer noopener" target=_blank>Google Authenticator</a> または互換性のあるアプリケーションの場合、<a href="{0}" rel="noreferrer noopener" target=_blank>このリンク</a>を使用するか、下に秘密を入力します。次に、現在の6桁のトークンを入力して、2段階ログインを有効にします。',t.url)+'<br /><br /><div style=width:100%;text-align:center><tt id=d2optsecret secret="'+t.secret+'" style=font-size:15px>'+p+'</tt><br /><br />Token: <input type=text autocomplete="one-time-code" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" onkeyup=account_addOtpCheck(event) onkeydown=account_addOtpCheck() maxlength=6 id=d2otpauthinput type=text></div>'),QV("idx_dlgOkButton",!0),QE("idx_dlgOkButton",!1),Q("d2otpauthinput").focus()}break;case"otpauth-setup":if(xxdialogMode)return;setDialogMode(2,"認証アプリ",1,null,t.success?"<b style=color:green>認証アプリのアクティベーションが成功しました。</b> 再度ログインするには、有効なトークンが必要になります。":"<b style=color:red>2段階ログインのアクティベーションに失敗しました。</b> アプリケーションからシークレットをクリアして、再試行してください。適切なコードを入力するのに数分しかかかりません。");break;case"otpauth-clear":if(xxdialogMode)return;setDialogMode(2,"認証アプリ",1,null,t.success?"<b>認証アプリケーションが削除されました。</b> この機能はいつでも再アクティブ化できます。":"<b style=color:red>2段階ログインアクティベーションの削除に失敗しました。</b> 再試行する。");break;case"otpauth-getpasswords":if(xxdialogMode)return;d="ワンタイムトークンは、セカンダリ認証として使用できます。セットを生成して印刷し、安全な場所に保管してください。";if(d+="<div style='border-radius:6px;border: 2px dashed #888;width:100%;margin-top:8px'><div style='padding:8px;font-family:Arial, Helvetica, sans-serif;font-size:20px;font-weight:bold'><table style=width:100%;text-align:center>",t.passwords){var m=0;for(var a in t.passwords){++m%2&&(d+="<tr>");for(var g=""+t.passwords[a].p;g.length<8;)g="0"+g;!0===t.passwords[a].u?d+="<td>"+g.substring(0,4)+"&nbsp;"+g.substring(4):d+="<td><strike style=color:#BBB>"+g.substring(0,4)+"&nbsp;"+g.substring(4)}}else d+="<tr><td>アクティブなトークンがありません";d+="</table></div></div><br />",d+="<div><input type=button value='閉じる' onclick=setDialogMode(0) style=float:right></input>",d+="<input type=button value='新しいトークン' onclick='account_manageOtp(1);'></input>",null!=t.passwords&&(d+="<input type=button value='クリア' onclick='account_manageOtp(2);'></input>"),setDialogMode(2,"バックアップコードの管理",8,null,d+="</div><br />","otpauth-manage");break;case"verifyPhone":if(xxdialogMode&&"verifyPhone"!=xxdialogTag)return;d='<table><tr><td><img src="images/phone80.png" style=padding:8px>';d+="<td>Check your phone and enter the verification code.",setDialogMode(2,"電話通知",3,account_managePhoneConfirm,d+='<br /><br /><div style=width:100%;text-align:center>検証コード： <input type=tel pattern="[0-9]" inputmode="number" maxlength=6 id=d2phoneCodeInput onKeyUp=account_managePhoneCodeValidate() onkeypress="if (event.key==\'Enter\') account_managePhoneCodeValidate(1)"></div></table>',t.cookie),Q("d2phoneCodeInput").focus(),account_managePhoneCodeValidate();break;case"previousLogins":if(2==xxdialogMode&&"previousLogins"==xxdialogTag){d="";var f="BBB";if(0==t.events.length)d+="No previous login.";else{for(var a in d+="<div style=max-height:260px;overflow-y:scroll;overflow-x:hidden>",t.events){107==(o=t.events[a].m)?(o="有効なログイン",f="BBD1BB",""):108==o?(o="無効な2FA",f="DD9DC3","x"):109==o?(o="ロックされたアカウント",f="E1BBBB","x"):110==o&&(o="無効なパスワード",f="E1BBBB","x"),d+="<div style=width:260px;background-color:#"+f+";border-radius:6px;margin-bottom:4px;padding:4px><div><b>"+EscapeHtml(o)+"</b><br />"+printDateTime(new Date(t.events[a].t))+"</div><div style=font-size:x-small>"+EscapeHtml(t.events[a].a.join(", "))+"</div></div></tr>"}d+="</div>"}setDialogMode(2,"以前のログイン",1,null,d)}break;case"event":if(t.event.noact)break;switch(t.event.action){case"serverinfochange":null!=t.event.lock2factor&&(serverinfo.lock2factor=t.event.lock2factor,updateSelf());break;case"userWebState":if(null!=localStorage){var h=JSON.parse(t.event.state);for(var a in h)localStorage.setItem(a,h[a]);if(null!=h.stars&&(stars=JSON.parse(h.stars)),null!=h.loctag&&h.loctag!=oldLoctag?(null!=h.loctag?args.locale=h.loctag:delete args.locale,mainUpdate(132)):null!=h.stars&&(mainUpdate(4),"*"==Q("SearchInput").value&&onSearchInputChanged()),currentNode&&refreshDevice(currentNode._id),null!=h.deskKeyShortcuts){deskKeyboardShortcuts=[];var v=h.deskKeyShortcuts.split(",");for(var a in v)deskKeyboardShortcuts.push(parseInt(v[a]));updateDeskShortcutKeys()}}break;case"accountchange":if("object"!=typeof t.event.account||null==t.event.account)return void console.log(t.event);if(userinfo.name==t.event.account.name){t.event.account.siteadmin&&t.event.account.siteadmin,userinfo.siteadmin&&userinfo.siteadmin;(t.event.account.quota!=userinfo.quota||!(8&userinfo.siteadmin)&&8&t.event.account.siteadmin)&&meshserver.send({action:"files"}),userinfo=t.event.account,updateSelf(),t.event.nodeListChange==userinfo._id&&meshserver.send({action:"nodes",skip:null==devicePagingState?0:devicePagingState.skip})}break;case"createusergroup":case"usergroupchange":null==usergroups&&(usergroups={});var k=usergroups[t.event.ugrpid];null==k?usergroups[t.event.ugrpid]={_id:t.event.ugrpid,name:t.event.name,desc:t.event.desc,domain:t.event.domain,links:t.event.links}:(k.name=t.event.name,k.desc=t.event.desc,k.links=t.event.links,k.flags=t.event.flags),meshserver.send({action:"meshes"}),meshserver.send({action:"nodes",skip:null==devicePagingState?0:devicePagingState.skip});break;case"deleteusergroup":if(null!=usergroups&&null!=usergroups[t.event.ugrpid]){delete usergroups[t.event.ugrpid];f=0;for(var a in usergroups)f++;0==f&&(usergroups=null)}break;case"createmesh":null!=meshes[t.event.meshid]||!userinfo.manageAllDeviceGroups&&null==t.event.mesh.links[userinfo._id]||(meshes[t.event.meshid]=t.event.mesh,mainUpdate(132),meshserver.send({action:"files"}));break;case"meshchange":if(null==meshes[t.event.meshid]){var y=!1;for(var a in null!=t.event.links[userinfo._id]&&(y=!0),null!=userinfo.links[t.event.meshid]&&(y=!0),userinfo.links)a.startsWith("ugrp/")&&null!=t.event.links[a]&&(y=!0);y&&(meshes[t.event.meshid]={_id:t.event.meshid,name:t.event.name,mtype:t.event.mtype,desc:t.event.desc,links:t.event.links,relayid:t.event.relayid},meshserver.send({action:"nodes",skip:null==devicePagingState?0:devicePagingState.skip}))}else{if(meshes[t.event.meshid].name!=t.event.name)for(var a in meshes[t.event.meshid].name=t.event.name,nodes)nodes[a].meshid==t.event.meshid&&(nodes[a].meshnamel=t.event.name.toLowerCase());if(meshes[t.event.meshid].desc=t.event.desc,meshes[t.event.meshid].links=t.event.links,null!=t.event.relayid&&(meshes[t.event.meshid].relayid=t.event.relayid),0==IsMeshViewable(t.event.meshid)){20==xxcurrentView&&currentMesh==meshes[t.event.meshid]&&go(2),delete meshes[t.event.meshid];var x=[];for(var a in nodes)(nodes[a].meshid!=t.event.meshid||null!=userinfo.links&&null!=userinfo.links[nodes[a]._id])&&x.push(nodes[a]);nodes=x,xxcurrentView>=10&&xxcurrentView<20&&currentNode&&!IsNodeViewable(currentNode)&&(setDialogMode(0),go(2),currentNode=null)}}mainUpdate(132),meshserver.send({action:"files"}),20==xxcurrentView&&currentMesh._id==t.event.meshid&&p20updateMesh();break;case"deletemesh":meshes[t.event.meshid]&&(delete meshes[t.event.meshid],updateMeshes(),meshserver.send({action:"files"}));x=[];for(var a in nodes)nodes[a].meshid!=t.event.meshid&&x.push(nodes[a]);nodes=x,mainUpdate(4),xxcurrentView>=20&&xxcurrentView<30&&currentMesh._id==t.event.meshid&&(setDialogMode(0),go(2)),xxcurrentView>=10&&xxcurrentView<20&&currentNode&&!IsNodeViewable(currentNode)&&(setDialogMode(0),go(2));break;case"addnode":var b=t.event.node;if(!meshes[b.meshid])break;if(null!=getNodeFromId(b._id))break;b.namel=b.name.toLowerCase(),b.rname?b.rnamel=b.rname.toLowerCase():b.rnamel=b.namel,b.meshnamel=meshes[b.meshid]?meshes[b.meshid].name.toLowerCase():"*",b.state=0,b.icon||(b.icon=1),b.ident=++nodeShortIdent,nodes.push(b),mainUpdate(4);break;case"removenode":l=-1;for(var a in nodes)if(nodes[a]._id==t.event.nodeid){l=a;break}if(-1!=l){b=nodes[l];currentNode==b&&(xxcurrentView>=10&&xxcurrentView<20&&(setDialogMode(0),go(2)),currentNode=null),nodes.splice(l,1),mainUpdate(4)}break;case"changenode":l=-1;for(var a in nodes)if(nodes[a]._id==t.event.nodeid){l=a;break}if(-1!=l)(b=nodes[l]).name=t.event.node.name,b.rname=t.event.node.rname,b.lusers=t.event.node.lusers,b.users=t.event.node.users,b.host=t.event.node.host,b.desc=t.event.node.desc,b.publicip=t.event.node.publicip,b.iploc=t.event.node.iploc,b.wifiloc=t.event.node.wifiloc,b.gpsloc=t.event.node.gpsloc,b.tags=t.event.node.tags,b.ssh=t.event.node.ssh,b.rdp=t.event.node.rdp,b.userloc=t.event.node.userloc,b.rdpport=t.event.node.rdpport,b.rfbport=t.event.node.rfbport,b.sshport=t.event.node.sshport,b.httpport=t.event.node.httpport,b.httpsport=t.event.node.httpsport,b.consent=t.event.node.consent,b.pmt=t.event.node.pmt,null!=t.event.node.agent&&(null==b.agent&&(b.agent={}),null!=t.event.node.agent.ver&&(b.agent.ver=t.event.node.agent.ver),null!=t.event.node.agent.id&&(b.agent.id=t.event.node.agent.id),null!=t.event.node.agent.caps&&(b.agent.caps=t.event.node.agent.caps),null!=t.event.node.agent.root&&(b.agent.root=t.event.node.agent.root),null!=t.event.node.agent.core?b.agent.core=t.event.node.agent.core:b.agent.core&&delete b.agent.core,b.agent.tag=t.event.node.agent.tag),null!=t.event.node.intelamt&&(null==b.intelamt&&(b.intelamt={}),null!=t.event.node.intelamt.state&&(b.intelamt.state=t.event.node.intelamt.state),null!=t.event.node.intelamt.host&&(b.intelamt.user=t.event.node.intelamt.host),null!=t.event.node.intelamt.user&&(b.intelamt.user=t.event.node.intelamt.user),null!=t.event.node.intelamt.tls&&(b.intelamt.tls=t.event.node.intelamt.tls),null!=t.event.node.intelamt.ver&&(b.intelamt.ver=t.event.node.intelamt.ver),null!=t.event.node.intelamt.tag&&(b.intelamt.tag=t.event.node.intelamt.tag),null!=t.event.node.intelamt.uuid&&(b.intelamt.uuid=t.event.node.intelamt.uuid),null!=t.event.node.intelamt.realm&&(b.intelamt.realm=t.event.node.intelamt.realm),null!=t.event.node.intelamt.flags&&(b.intelamt.flags=t.event.node.intelamt.flags),null!=t.event.node.intelamt.warn?b.intelamt.warn=t.event.node.intelamt.warn:delete b.intelamt.warn),null!=t.event.node.av&&(b.av=t.event.node.av),null!=t.event.node.wsc&&(b.wsc=t.event.node.wsc),null!=t.event.node.defender&&(b.defender=t.event.node.defender),b.namel=b.name.toLowerCase(),b.rname?b.rnamel=b.rname.toLowerCase():b.rnamel=b.namel,t.event.node.icon&&(b.icon=t.event.node.icon),null!=t.event.node.lastbootuptime&&(b.lastbootuptime=t.event.node.lastbootuptime),null!=t.event.node.idletime&&(b.idletime=t.event.node.idletime),refreshDevice(b._id),updateDeviceViewDevice(b),currentNode==b&&updateDeviceDetails();break;case"nodemeshchange":l=-1;for(var a in nodes)if(nodes[a]._id==t.event.nodeid){l=a;break}if(-1!=l){b=nodes[l];null!=meshes[t.event.newMeshId]||null!=userinfo.links&&null!=userinfo.links[b._id]?(b.meshid=t.event.newMeshId,b.meshnamel=meshes[t.event.newMeshId]?meshes[t.event.newMeshId].name.toLowerCase():"*"):(xxcurrentView>=10&&xxcurrentView<20&&currentNode&&!IsNodeViewable(currentNode)&&(setDialogMode(0),go(2),currentNode=null),nodes.splice(l,1)),mainUpdate(4),refreshDevice(t.event.nodeid)}else{b=t.event.node;if(!meshes[b.meshid])break;b.namel=b.name.toLowerCase(),b.rname?b.rnamel=b.rname.toLowerCase():b.rnamel=b.namel,b.meshnamel=meshes[b.meshid]?meshes[b.meshid].name.toLowerCase():"*",b.state=0,b.icon||(b.icon=1),b.ident=++nodeShortIdent,nodes.push(b),mainUpdate(4)}break;case"nodeconnect":l=-1;for(var a in nodes)if(nodes[a]._id==t.event.nodeid){l=a;break}if(-1!=l)(b=nodes[l]).conn=t.event.conn,b.pwr=t.event.pwr,1&b.conn||delete b.sessions,refreshDevice(b._id),updateDeviceViewDevice(b);break;case"login":null!=users&&users["user/"+domain+"/"+t.event.username.toLowerCase()]&&(users["user/"+domain+"/"+t.event.username.toLowerCase()].login=t.event.time);break;case"notify":s={text:t.event.value,title:t.event.title,icon:t.event.icon,titleid:t.titleid,msgid:t.msgid,args:t.args};null!=t.id&&(s.id=t.id),null!=t.event.tag&&(s.tag=t.event.tag),"number"==typeof t.maxtime&&(s.maxtime=t.maxtime),addNotification(s);break;case"sysinfohash":null!=currentNode&&t.event.nodeid==powerTimelineReq&&meshserver.send({action:"getsysinfo",nodeid:t.event.nodeid});break;case"ifchange":null!=currentNode&&currentNode._id==t.event.nodeid&&meshserver.send({action:"getnetworkinfo",nodeid:currentNode._id});break;case"devicesessions":if(null==(b=getNodeFromId(t.event.nodeid)))break;if(b.sessions=t.event.sessions,null!=b.sessions){for(var a in b.sessions)0==Object.keys(b.sessions[a]).length&&delete b.sessions[a];0==Object.keys(b.sessions).length&&delete b.sessions}refreshDevice(t.event.nodeid),updateDeviceViewDevice(b),xxdialogTag=="SESSIONS-"+t.event.nodeid&&showDeviceSessions(t.event.nodeid,!0),xxdialogTag=="HELPREQ-"+t.event.nodeid&&showDeviceHelpRequests(t.event.nodeid,!0)}break;case"getcookie":if("novnc"==t.tag){var w=window.location.origin+domainUrl+"novnc/vnc.html?ws=wss%3A%2F%2F"+window.location.host+encodeURIComponentEx(domainUrl)+(t.localRelay?"local":"mesh")+"relay.ashx%3Fauth%3D"+t.cookie+"&show_dot=1"+(urlargs.key?"&key="+urlargs.key:"")+"&l={{{lang}}}";null!=(b=getNodeFromId(t.nodeid))&&(w+="&name="+encodeURIComponentEx(b.name)),safeNewWindow(w,"mcnovnc/"+t.nodeid)}else if("mstsc"==t.tag){var S=window.location.origin+domainUrl+"mstsc.html?ws="+t.cookie+(urlargs.key?"&key="+urlargs.key:"");null!=(b=getNodeFromId(t.nodeid))&&(S+="&name="+encodeURIComponentEx(b.name)),t.localRelay&&(S+="&local=1"),safeNewWindow(S,"mcmstsc/"+t.nodeid)}else if("ssh"==t.tag){var D=window.location.origin+domainUrl+"ssh.html?ws="+t.cookie+(urlargs.key?"&key="+urlargs.key:"");null!=(b=getNodeFromId(t.nodeid))&&(D+="&name="+encodeURIComponentEx(b.name)),t.localRelay&&(D+="&local=1"),safeNewWindow(D,"mcssh/"+t.nodeid)}}}check_webp_feature("lossy",function(e,t){webpSupport=t,t||(d7encoding.options[1].disabled=!0,d7encoding.value=1)});var updateNaggleTimer=null,updateNaggleFlags=0;function mainUpdate(e){updateNaggleFlags|=e,null==updateNaggleTimer&&(updateNaggleTimer=setTimeout(function(){1&updateNaggleFlags&&onSearchInputChanged(),4&updateNaggleFlags&&(updateDevices(),updateDeviceDetails()),128&updateNaggleFlags&&updateMeshes(),updateNaggleTimer=null,updateNaggleFlags=0,gotoStartViewPage()},150))}function gotoStartViewPage(){var e=parseInt("{{viewmode}}");if(!(xxcurrentView>1)){if(""!="{{currentNode}}".toLowerCase()){if(null==getNodeFromId("{{currentNode}}"))return;gotoDevice("{{currentNode}}",e)}else if(null!=args.gotonode){if(96==args.gotonode.length&&(args.gotonode=btoa(hex2rstr(args.gotonode)).split("+").join("@").split("/").join("$")),null==getNodeFromId("node/"+domain+"/"+args.gotonode))return;args.panel&&(currentDevicePanel=parseInt(args.panel)),gotoDevice("node/"+domain+"/"+args.gotonode,e)}else if(null!=args.gotodevicename){var t=null;if(null!=nodes)for(var n in nodes)nodes[n].name==args.gotodevicename&&(t=nodes[n]._id);t&&(gotoDevice(t,e),go(e))}else if(null!=args.gotodevicername){t=null;if(null!=nodes)for(var n in nodes)nodes[n].rname==args.gotodevicername&&(t=nodes[n]._id);t&&(gotoDevice(t,e),goBackStack.push(1))}else if(null!=args.gotodeviceip){t=null;if(null!=nodes)for(var n in nodes)nodes[n].ip==args.gotodeviceip&&(t=nodes[n]._id);t&&(gotoDevice(t,e),go(e))}else if(null!=args.gotomesh){if(null==meshes["mesh/"+domain+"/"+args.gotomesh])return;gotoMesh("mesh/"+domain+"/"+args.gotomesh),go(e)}else isNaN(e)?(setDialogMode(0),go(1)):go(e);delete args.gotonode,delete args.gotomesh,delete args.panel,xxcurrentView<2&&go(2)}}function topMenu(e){null!=xxdialogMode&&0!=xxdialogMode&&999!=xxdialogMode||(void 0===e?1==("none"==QS("topMenu").display)?0!=xxdialogMode&&null!=xxdialogMode||(QV("topMenu",!0),xxdialogMode=999):(QV("topMenu",!1),xxdialogMode=0):(QV("topMenu",!1),xxdialogMode=0,1==e&&3!=xxcurrentView&&goForward("account"),2==e&&5!=xxcurrentView&&goForward("files")))}var backStack=[];function goBack(){xxdialogMode||(backStack.length>0&&backStack.pop(),goStack())}function goForward(e){xxdialogMode||(backStack.push(e),goStack())}function goStack(){if(0!=backStack.length){var e=backStack[backStack.length-1],t=e.split("/")[0];if("node"==t&&(setupDeviceMenu(0),gotoDevice(e)),"mesh"==t&&gotoMesh(e),"account"==t&&go(3),"devices"==t&&go(2),"files"==t){if(262144&features&&!(1==userinfo.otpsecret||userinfo.otphkeys>0||userinfo.otpkeys>0||userinfo.otpduo>0||userinfo.otpdev>0||8388608&features&&1==userinfo.otpekey))return void setDialogMode(2,"アカウントのセキュリティ",1,null,'Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the "My Account" and look at the "Account Security" section.');go(5)}}else go(2)}function updateFooterMenu(e){for(;null!=e&&e.length<3;)e.push({n:""});var t="",n="";if(null!=e)for(var o in e)t+='<td style="cursor:pointer'+(""==n?"":";border-left:solid 1px white")+'" onclick="'+e[o].f+'">'+e[o].n,n=e[o].n;QH("footerMenu","<tr>"+t)}function account_viewPreviousLogins(){xxdialogMode||(setDialogMode(2,"以前のログイン",1,null,"読み込み中...","previousLogins"),meshserver.send({action:"previousLogins"}))}function account_manageImage(e){if(!xxdialogMode){var t=0==e?userinfo:currentUser;setDialogMode(2,"アカウント画像の管理",7,account_manageImageEx2,'<input id=p2file type=file style=width:100% accept="image/*" onchange=account_manageImageEx()><div style=width:100%><canvas id=p2canvas width=256 height=256 style="width:256px;height:256px;margin-left:12px;margin-top:8px;border-radius:16px;box-shadow: 0px 0px 15px #000" onclick=account_canvasClick() /></div>',t._id);var n=Q("p2canvas").getContext("2d");null==t.accountImageRnd&&(t.accountImageRnd=Math.floor(9999999999*Math.random()));var o="";1==e&&(o="&id="+t._id.split("/")[2]);var i=new Image;i.onload=function(){n.clearRect(0,0,256,256),n.drawImage(i,0,0)},i.src=null!=t.flags&&1&t.flags?"userimage.ashx?rnd="+t.accountImageRnd+o:"images/user-256.png",QE("idx_dlgDeleteButton",null!=t.flags&&1&t.flags),QE("idx_dlgOkButton",!1)}}function account_canvasClick(){Q("p2file").click()}function account_manageImageEx(){var e=Q("p2file").files[0],t=new Image;t.onload=function(){var e=0,n=0,o=Math.min(t.width,t.height);t.width>o&&(e=(t.width-o)/2),t.height>o&&(n=(t.height-o)/2);var i=Q("p2canvas").getContext("2d");i.imageSmoothingEnabled=!0,i.webkitImageSmoothingEnabled=!0,i.mozImageSmoothingEnabled=!0,i.clearRect(0,0,256,256),i.drawImage(t,e,n,o,o,0,0,256,256),QE("idx_dlgOkButton",!0)},t.src=URL.createObjectURL(e)}function account_manageImageEx2(e,t){meshserver.send({action:"updateUserImage",userid:t,image:2==e?0:Q("p2canvas").toDataURL("image/jpeg",.8)})}function toggleNightMode(){if(!xxdialogMode){var e=getstore("nightMode","0"),t="<input type=radio id=night0 name=nightmoderadio value=0 "+(0==e?"checked":"")+"><label for=night0>ブラウザのデフォルト</label><br>";t+="<input type=radio id=night2 name=nightmoderadio value=2 "+(2==e?"checked":"")+"><label for=night2>ライトモード</label><br>",setDialogMode(2,"ナイトモード",3,toggleNightModeEx,t+="<input type=radio id=night1 name=nightmoderadio value=1 "+(1==e?"checked":"")+"><label for=night1>ダークモード</label><br>"),QV("uiMenu",!1)}}function toggleNightModeEx(){var e="0";Q("night1").checked&&(e="1"),Q("night2").checked&&(e="2"),putstore("nightMode",e),setNightMode()}function setNightMode(){var e=getstore("nightMode","0");return nightMode=!1,1048576&features2&&(e="1"),2097152&features2&&(e="2"),"1"==e?nightMode=!0:"0"==e&&window.matchMedia&&(nightMode=window.matchMedia("(prefers-color-scheme: dark)").matches),nightMode?(QC("body").add("night"),QS("body")["background-color"]="#000",QS("body").color="lightgray"):(QC("body").remove("night"),QS("body")["background-color"]="#FFF",QS("body").color="black"),nightMode}function account_managePhone(){var e;!xxdialogMode&&33554432&features&&(null!=userinfo.phone?(e='<table style=width:100%><tr><td style=width:56px><img src="images/phone80.png" style=padding:8px>',e+="<td style=text-align:center><div style=padding:6px>確認済みの電話番号</div><div style=font-size:20px>"+userinfo.phone+"</div>",setDialogMode(2,"電話通知",3,account_managePhoneRemove,e+="<div style=margin:10px><label><input id=d2delPhone type=checkbox onclick=account_managePhoneRemoveValidate() />電話番号を削除</label></div>"),account_managePhoneRemoveValidate()):(e='<table style=width:100%><tr><td style=width:56px><img src="images/phone80.png" style=padding:8px>',e+="<td>Enter your SMS capable phone number. Once verified, the number may be used for login verification and other notifications.",setDialogMode(2,"電話通知",3,account_managePhoneAdd,e+='<br /><br /><div style=width:100%;text-align:center>電話番号： <input type=tel pattern="[0-9]" autocomplete="tel" inputmode="tel" maxlength=18 id=d2phoneinput onKeyUp=account_managePhoneValidate() onkeypress="if (event.key==\'Enter\') account_managePhoneValidate(1)"></div></table>',"verifyPhone"),Q("d2phoneinput").focus(),account_managePhoneValidate()))}function isPhoneNumber(e){return e.match(/^\(?([0-9]{3,4})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/)}function account_managePhoneValidate(e){var t=isPhoneNumber(Q("d2phoneinput").value);QE("idx_dlgOkButton",t),1==e&&t&&dialogclose(1)}function account_managePhoneCodeValidate(e){var t=6==Q("d2phoneCodeInput").value.length&&Q("d2phoneCodeInput").value.match(/[0-9]/);QE("idx_dlgOkButton",t),1==e&&t&&dialogclose(1)}function account_managePhoneConfirm(e,t){meshserver.send({action:"confirmPhone",code:Q("d2phoneCodeInput").value,cookie:t})}function account_managePhoneAdd(){0!=isPhoneNumber(Q("d2phoneinput").value)&&(QE("d2phoneinput",!1),meshserver.send({action:"verifyPhone",phone:Q("d2phoneinput").value}))}function account_managePhoneRemove(){Q("d2delPhone").checked&&meshserver.send({action:"removePhone"})}function account_managePhoneRemoveValidate(){QE("idx_dlgOkButton",Q("d2delPhone").checked)}function account_manageAuthEmail(){if(!xxdialogMode&&8388608&features){var e=1==userinfo.otpekey&&null!=userinfo.email&&1==userinfo.emailVerified;setDialogMode(2,"メール認証",1,function(){e!=Q("email2facheck").checked&&meshserver.send({action:"otpemail",enabled:Q("email2facheck").checked})},"有効にすると、ログインごとに、セキュリティを強化するためにメールアカウントにログイントークンを受け取るオプションが表示されます。<br /><br /><label><input id=email2facheck type=checkbox "+(e?"checked":"")+"/>メールの2要素認証を有効にします。</label>")}}var d3filetreelinkpath,loclist={af:"アフリカ語",sq:"アルバニア語",ar:"アラビア語（標準）","ar-dz":"アラビア語（アルジェリア）","ar-bh":"アラビア語（バーレーン）","ar-eg":"アラビア語（エジプト）","ar-iq":"アラビア語（イラク）","ar-jo":"アラビア語（ヨルダン）","ar-kw":"アラビア語（クウェート）","ar-lb":"アラビア語（レバノン）","ar-ly":"アラビア語（リビア）","ar-ma":"アラビア語（モロッコ）","ar-om":"アラビア語（オマーン）","ar-qa":"アラビア語（カタール）","ar-sa":"アラビア語（サウジアラビア）","ar-sy":"アラビア語（シリア）","ar-tn":"アラビア語（チュニジア）","ar-ae":"アラビア語（U.A.E.）","ar-ye":"アラビア語（イエメン）",an:"アラゴン語",hy:"アルメニア語",as:"アッサム語",ast:"アストゥリアス語",az:"アゼルバイジャン語",eu:"バスク語",bg:"ブルガリア語",be:"ベラルーシ語",bn:"ベンガル語",bs:"ボスニア語",br:"ブルトン語",my:"ビルマ語",ca:"カタロニア語",ch:"チャモロ語",ce:"チェチェン語",zh:"中国語","zh-hk":"中国語（香港）","zh-cn":"中国語（PRC）","zh-sg":"中国語（シンガポール）","zh-tw":"中国語（台湾）",cv:"チュヴァシュ語",co:"コルシカ語",cr:"クリー語",hr:"クロアチア語",cs:"チェコ語",da:"デンマーク語",nl:"オランダ語（標準）","nl-be":"オランダ語（ベルギー）",en:"英語","en-au":"英語（オーストラリア）","en-bz":"英語（ベリーズ）","en-ca":"英語（カナダ）","en-ie":"英語（アイルランド）","en-jm":"英語（ジャマイカ）","en-nz":"英語（ニュージーランド）","en-ph":"英語（フィリピン）","en-za":"英語（南アフリカ）","en-tt":"英語（トリニダードトバゴ）","en-gb":"英語（イギリス）","en-us":"英語（米国）","en-zw":"英語（ジンバブエ）",eo:"エスペラント語",et:"エストニア語",fo:"フェロー語",fa:"ペルシア語（ペルシャ語）",fj:"フィジー語",fi:"フィンランド語",fr:"フランス語（標準）","fr-be":"フランス語（ベルギー）","fr-ca":"フランス語（カナダ）","fr-fr":"フランス語（フランス）","fr-lu":"フランス語（ルクセンブルグ）","fr-mc":"フランス語（モナコ）","fr-ch":"フランス語（スイス）",fy:"フリジア語",fur:"フリウリ語",gd:"ゲール語（スコットランド）","gd-ie":"ゲール語（アイルランド語）",gl:"ガリシア語",ka:"グルジア語",de:"ドイツ語（標準）","de-at":"ドイツ語（オーストリア）","de-de":"ドイツ語（ドイツ）","de-li":"ドイツ語（リヒテンシュタイン）","de-lu":"ドイツ語（ルクセンブルグ）","de-ch":"ドイツ語（スイス）",el:"ギリシャ語",gu:"グジャラート語",ht:"ハイチ語",he:"ヘブライ語",hi:"ヒンディー語",hu:"ハンガリー語",is:"アイスランド語",id:"インドネシア語",iu:"イヌクティトゥット語",ga:"アイルランド語",it:"イタリア語（標準）","it-ch":"イタリア語（スイス）",ja:"日本語",kn:"カンナダ語",ks:"カシミール語",kk:"カザフ語",km:"クメール語",ky:"キルギス語",tlh:"クリンゴン語",ko:"韓国語","ko-kp":"韓国語（北朝鮮）","ko-kr":"韓国語（韓国）",la:"ラテン語",lv:"ラトビア語",lt:"リトアニア語",lb:"ルクセンブルク語",mk:"マケドニア語",ms:"マレー語",ml:"マラヤーラム語",mt:"マルタ語",mi:"マオリ語",mr:"マラーティー語",mo:"モルダヴィア語",nv:"ナバホ語",ng:"ンドンガ語",ne:"ネパール語",no:"ノルウェー語",nb:"ノルウェー語（ボクマル）",nn:"ノルウェー語（ニーノシュク）",oc:"オクシタン語",or:"オリヤ語",om:"オロモ語","fa-ir":"ペルシャ語/イラン",pl:"研磨",pt:"ポルトガル語","pt-br":"ポルトガル語（ブラジル）",pa:"パンジャブ語","pa-in":"パンジャブ語（インド）","pa-pk":"パンジャブ語（パキスタン）",qu:"ケチュア語",rm:"レートロマン語",ro:"ルーマニア語","ro-mo":"ルーマニア語（モルダビア）",ru:"ロシア語","ru-mo":"ロシア語（モルダビア）",sz:"サミ（ラップ語）",sg:"サンゴ語",sa:"サンスクリット語",sc:"サルデーニャ語",sd:"シンディ語",si:"シンハラ語",sr:"セルビア語",sk:"スロバキア語",sl:"スロベニア語",so:"ソマニ語",sb:"ソルブ語",es:"スペイン語","es-ar":"スペイン語（アルゼンチン）","es-bo":"スペイン語（ボリビア）","es-cl":"スペイン語（チリ）","es-co":"スペイン語（コロンビア）","es-cr":"スペイン語（コスタリカ）","es-do":"スペイン語（ドミニカ共和国）","es-ec":"スペイン語（エクアドル）","es-sv":"スペイン語（エルサルバドル）","es-gt":"スペイン語（グアテマラ）","es-hn":"スペイン語（ホンジュラス）","es-mx":"スペイン語（メキシコ）","es-ni":"スペイン語（ニカラグア）","es-pa":"スペイン語（パナマ）","es-py":"スペイン語（パラグアイ）","es-pe":"スペイン語（ペルー）","es-pr":"スペイン語（プエルトリコ）","es-es":"スペイン語（スペイン）","es-uy":"スペイン語（ウルグアイ）","es-ve":"スペイン語（ベネズエラ）",sx:"ストゥ",sw:"スワヒリ語",sv:"スウェーデン語","sv-fi":"スウェーデン語（フィンランド）","sv-sv":"スウェーデン語（スウェーデン）",ta:"タミル語",tt:"タタール語",te:"テルガ語",th:"タイ語",tig:"ティグレ語",ts:"ツォンガ語",tn:"ツワナ語",tr:"トルコ語",tk:"トルクメン語",uk:"ウクライナ語",hsb:"上ソルビア語",ur:"ウルドゥー語",ve:"ベンダー",vi:"ベトナム語",vo:"ヴォラプク語",wa:"ワロン語",cy:"ウェールズ語",xh:"コーサ語",ji:"イディッシュ語",zu:"ズールー語"},loclistex={"zh-chs":"中国語（簡体字）","zh-cht":"中国語（繁体字）"};function account_showLocalizationSettings(){if(xxdialogMode)return!1;var e=getstore("loctag",0),t="",n='<select id=d2locselect style=width:180px><option value="*">ユーザーブラウザーの値</option>';for(var o in loclist)n+='<option value="'+o+'"'+(e==o?" selected":"")+">"+o+" - "+loclist[o]+"</option>";if(n+="</select>",serverinfo.languages&&serverinfo.languages.length>0){t+="言語を変更するには、ページを更新する必要があります。<br /><br />";var i='<select id=d2langselect style=width:180px><option value="*">ユーザーブラウザーの値</option>';for(var o in serverinfo.languages){var a=serverinfo.languages[o];i+='<option value="'+a+'"'+(userinfo.lang==a?" selected":"")+">"+a+" - "+(loclist[a]?loclist[a]:loclistex[a])+"</option>"}t+=addHtmlValue("言語",i+="</select>")}return t+=addHtmlValue("日時",n),4294967295==userinfo.siteadmin&&""==domain&&(t+='<br /><a rel="noreferrer noopener" target="_blank" href="translator.htm">MeshCentralの翻訳を支援</a>'),setDialogMode(2,"ローカリゼーション設定",3,account_showLocalizationSettingsEx,t),!1}function account_showLocalizationSettingsEx(){var e=Q("d2langselect").value;"*"==e&&null==userinfo.lang&&(e=userinfo.lang),e!=userinfo.lang&&meshserver.send({action:"changelang",lang:e});var t=getstore("loctag",0),n=Q("d2locselect").value;t!=n&&("*"!=n?args.locale=n:delete args.locale,putstore("loctag",args.locale),mainUpdate(4294967295))}function account_manageAuthApp(){!xxdialogMode&&4096&features&&(1==userinfo.otpsecret?account_removeOtp():account_addOtp())}function account_addOtp(){!xxdialogMode&&1!=userinfo.otpsecret&&4096&features&&(setDialogMode(2,"認証アプリ",2,function(){meshserver.send({action:"otpauth-setup",secret:Q("d2optsecret").attributes.secret.value,token:Q("d2otpauthinput").value})},"<div id=d2optinfo>読み込み中...</div>","otpauth-request"),meshserver.send({action:"otpauth-request"}))}function account_addOtpCheck(e){var t=6==Q("d2otpauthinput").value.length;QE("idx_dlgOkButton",t),e&&13==e.keyCode&&t&&dialogclose(1)}function account_removeOtp(){!xxdialogMode&&1==userinfo.otpsecret&&4096&features&&setDialogMode(2,"認証アプリ",3,function(){meshserver.send({action:"otpauth-clear"})},"2段階ログインのアプリケーションを削除してよろしいですか？")}function account_manageOtp(e){2==xxdialogMode&&"otpauth-manage"==xxdialogTag&&dialogclose(0),xxdialogMode||!(4096&features)||1!=userinfo.otpsecret&&userinfo.otphkeys<1||meshserver.send({action:"otpauth-getpasswords",subaction:e})}function account_showVerifyEmail(){xxdialogMode||1==userinfo.emailVerified||1!=serverinfo.emailcheck||setDialogMode(2,"メール確認",3,account_showVerifyEmailEx,"[OK]をクリックして確認メールを送信します：<br /><div style=padding:8px><b>"+EscapeHtml(userinfo.email)+"</b></div>確認を受けるまで数分お待ちください。")}function account_showVerifyEmailEx(){meshserver.send({action:"verifyemail",email:userinfo.email})}function account_showChangeEmail(){xxdialogMode||(setDialogMode(2,"メールアドレスの変更",3,account_changeEmail,addHtmlValue("Eメール","<input id=dp3email style=width:170px maxlength=256 onchange=account_validateEmail() onkeyup=account_validateEmail(event) />")),null!=userinfo.email&&(Q("dp3email").value=userinfo.email),account_validateEmail(),Q("dp3email").focus())}function account_validateEmail(e,t){QE("idx_dlgOkButton",validateEmail(Q("dp3email").value)&&Q("dp3email").value!=userinfo.email),null!=e&&13==e.keyCode&&dialogclose(1)}function account_changeEmail(){meshserver.send({action:"changeemail",email:Q("dp3email").value})}function account_showDeleteAccount(){if(!xxdialogMode){var e="<form method=post><table style=margin-left:10px><input type=hidden name=action value=deleteaccount /><input type=hidden name=authcookie value="+authCookie+" /><tr>";e+="<td align=right>パスワード：</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>",e+="</tr><tr><td align=right>パスワード：</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>",e+="</tr></table><div style=padding:10px;margin-bottom:4px>",e+='<input id=account_dlgCancelButton type=button value="キャンセル" style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>',e+='<input id=account_dlgOkButton type=submit value="OK" style="float:right;width:80px" onclick=dialogclose(1)>',setDialogMode(2,"アカウントを削除",0,null,e+="</div><br /></form>"),account_validateDeleteAccount(),Q("apassword1").focus()}}function account_showChangePassword(){if(xxdialogMode)return!1;var e="<table style=margin-left:10px>";if(e+="<tr><td align=right>"+nobreak("以前のパスワード：")+"</td><td><input id=apassword0 type=password name=apassword0 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() onkeydown=account_validateNewPassword() /> <b></b></td></tr>",e+="<tr><td align=right>"+nobreak("新しいパスワード：")+"</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() onkeydown=account_validateNewPassword() /> <b><span id=dxPassWarn></span></b></td></tr>",e+="<tr><td align=right>"+nobreak("新しいパスワード：")+"</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() onkeydown=account_validateNewPassword() /></td></tr>",65536&features&&(e+="<tr><td align=right>パスワードのヒント：</td><td><input id=apasswordhint name=apasswordhint maxlength=250 type=text autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() onkeydown=account_validateNewPassword() /></td></tr>"),e+="</table>",passRequirements){var t=[],n=0;for(var o in passRequirements)"reset"!=o&&"hint"!=o&&(t.push(o+":"+passRequirements[o]),n++);n>0&&(e+="<br /><span style=font-size:x-small>"+format("要件：{0}。",t.join(", "))+"</span>")}return setDialogMode(2,"パスワードを変更する",3,account_showChangePasswordEx,e+="<br />"),Q("apassword0").focus(),account_validateNewPassword(),!1}function account_showChangePasswordEx(){if(Q("apassword1").value==Q("apassword2").value){var e={action:"changepassword",oldpass:Q("apassword0").value,newpass:Q("apassword1").value};65536&features&&(e.hint=Q("apasswordhint").value),meshserver.send(e)}}function account_createMesh(){if(!xxdialogMode)if(4294967295!=userinfo.siteadmin&&64&userinfo.siteadmin)setDialogMode(2,"新しいデバイスグループ",1,null,"このアカウントには、新しいデバイスグループを作成する権限がありません。");else if(!0===userinfo.emailVerified||1!=serverinfo.emailcheck||4294967295==userinfo.siteadmin)if(!(262144&features)||1==userinfo.otpsecret||userinfo.otphkeys>0||userinfo.otpkeys>0||userinfo.otpduo>0||userinfo.otpdev>0||8388608&features&&1==userinfo.otpekey){var e=addHtmlValue("名","<input id=dp3meshname style=width:170px maxlength=64 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate() />");e+=addHtmlValue("タイプ","<div style=width:170px;margin:0;padding:0><select id=dp3meshtype style=width:100% onchange=account_validateMeshCreate() ><option value=2>ソフトウェアエージェントグループ</option><option value=1>Intel&reg; AMTのみ</option></select></div>"),setDialogMode(2,"デバイスグループを作成する",3,account_createMeshEx,e+=addHtmlValue("説明","<div style=width:170px;margin:0;padding:0><textarea id=dp3meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>")),account_validateMeshCreate(),Q("dp3meshname").focus()}else setDialogMode(2,"アカウントのセキュリティ",1,null,"二要素認証が有効になるまでデバイスにアクセスできません。これは、追加のセキュリティのために必要です。 「マイアカウント」に移動して、「アカウントセキュリティ」セクションを確認します。");else setDialogMode(2,"アカウントのセキュリティ",1,null,"メールアドレスが確認されるまでデバイスにアクセスできません。これはパスワードの回復に必要です。 「マイアカウント」に移動して、メールアドレスを変更および確認します。")}function account_validateMeshCreate(){QE("idx_dlgOkButton",Q("dp3meshname").value.length>0)}function account_createMeshEx(e,t){meshserver.send({action:"createmesh",meshname:Q("dp3meshname").value,meshtype:parseInt(Q("dp3meshtype").value),desc:Q("dp3meshdesc").value})}function account_validateDeleteAccount(){QE("account_dlgOkButton",Q("apassword1").value.length>0&&Q("apassword1").value==Q("apassword2").value)}function account_validateNewPassword(){var e="",t=Q("apassword0").value.length>0&&Q("apassword1").value.length>0&&Q("apassword1").value==Q("apassword2").value&&Q("apassword0").value!=Q("apassword1").value;if(65536&features&&Q("apasswordhint").value==Q("apassword1").value&&(t=!1),""!=Q("apassword1").value)if(null==passRequirements||""==passRequirements){var n=checkPasswordStrength(Q("apassword1").value);e=n>=80?"<span style=color:green>Strong<span>":n>=60?"<span style=color:blue>&#9679;<span>":"<span style=color:red>&#9679;<span>"}else{0==checkPasswordRequirements(Q("apassword1").value,passRequirements)&&(t=!1,e="<span style=color:red>方針<span>")}QH("dxPassWarn",e),QE("idx_dlgOkButton",t)}function checkPasswordStrength(e){var t=0,n={},o=0,i={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e)return 0;for(var a=0;a<e.length;a++)n[e[a]]=(n[e[a]]||0)+1,t+=5/n[e[a]];for(var s in i)o+=1==i[s]?1:0;return parseInt(t+10*(o-1))}function checkPasswordRequirements(e,t){if(null==t||""==t||"object"!=typeof t)return!0;if(t.min&&e.length<t.min)return!1;if(t.max&&e.length>t.max)return!1;for(var n=0,o=0,i=0,a=0,s=0;s<e.length;s++)/\d/.test(e[s])&&n++,/[a-z]/.test(e[s])&&o++,/[A-Z]/.test(e[s])&&i++,/\W/.test(e[s])&&a++;return!(t.numeric&&n<t.numeric)&&(!(t.lower&&o<t.lower)&&(!(t.upper&&i<t.upper)&&!(t.nonalpha&&a<t.nonalpha)))}function updateMeshes(){var e="",t=0;for(i in meshes){t++;var n=GetMeshRights(meshes[i]),o="部分的権利";4294967295==n?o="完全な管理者":0==n&&(o="権利なし"),e+="<div style=cursor:pointer onclick=goForward('"+i+"')>",e+='<div style="float:left;margin-left:4px"><img src="/images/meshicon50.png" width=50 height=50 /></div>',e+="<div class=meshList>",e+="<div><div style=color:black;padding-left:12px;padding-top:2px><b>"+EscapeHtml(meshes[i].name)+"</b></div><div style=padding-left:12px;padding-top:3px;color:black>"+o+"</div></div>",e+="</div></div>"}QH("p3meshes",e),QV("p3noMeshFound",0==t)}function gotoMesh(e){!(262144&features)||1==userinfo.otpsecret||userinfo.otphkeys>0||userinfo.otpkeys>0||userinfo.otpduo>0||userinfo.otpdev>0||8388608&features&&1==userinfo.otpekey?(null==(currentMesh=meshes[e])&&goBack(),p20updateMesh(),go(20)):setDialogMode(2,"アカウントのセキュリティ",1,null,'Unable to access this feature until two-factor authentication is enabled. This is required for extra security. Go to the "My Account" and look at the "Account Security" section.')}function d3init(){d3fileoptions={dialog:1,filter:"d3filter",files:"d3serverfiles",folderup:"p3FolderUp",currentFolder:"p3CurrentFolder",func:d3setActions},Q("d3localFile").value="",Q("d3localFile").accept=Q("d3filter").value,d3modechange()}function d3modechange(){var e=Q("d3uploadMode").value;QV("d3localmode",1==e),QV("d3servermode",2==e),1==e?d3setActions():d3updatefiles()}var filetreelinkpath,d3filetreelocation=[],d3fileoptions=null;function d3updatefiles(){if(null!=d3fileoptions&&("d3filter"!=d3fileoptions.filter||1!=Q("d3uploadMode").value)){for(var e="",t="",n=filetree,o=1,i="",a=[],s=[],l=document.getElementsByName("fc"),r=0;r<l.length;r++)l[r].checked&&s.push(l[r].value);for(var r in d3filetreelinkpath="",d3filetreelocation){if(null==n.f||null==n.f[d3filetreelocation[r]])break;if(a.push(d3filetreelocation[r]),1==o){var d=d3filetreelocation[r].split("/");window.location.origin+domainUrl+d[0]+"files/"+d[2],d3filetreelocation[r]===userinfo._id?d3filetreelinkpath+="self":d3filetreelinkpath+=d[0]+"/"+d[2]}else""!=d3filetreelinkpath&&(d3filetreelinkpath+="/"+d3filetreelocation[r],o>2&&"/"+d3filetreelocation[r]);i=(n=n.f[d3filetreelocation[r]]).n,o++}d3filetreelocation=a;var u=p5sort_files(n.f),c="";for(var r in d3fileoptions.filter&&(c=Q(d3fileoptions.filter).value),u){var p,m=u[r],g=m.n;if(3!=m.t||""==c||0!=m.nx.toLowerCase().endsWith(c)){p=EscapeHtml(g);var f="";null!=m.s&&(f=getFileSizeStr(m.s));var h="";if(3!=m.t){h='<div class=filelist file=999><span style=float:right title=""></span><span title="'+p+'"><div class=fileIcon'+m.t+' onclick=d3folderset("'+encodeURIComponentEx(m.nx)+'")></div>&nbsp;<a href=# style=cursor:pointer onclick=\'return d3folderset("'+encodeURIComponentEx(m.nx)+"\")'>"+p+"</a></span></div>"}else{var v=p;h='<div class=filelist file=3><input style=float:left name=fcx class=fcb type=checkbox onchange=d3setActions() value="'+m.nx+'">&nbsp;<span style=float:right>'+EscapeHtml(f)+'</span><span title="'+p+'"><div class=fileIcon'+m.t+"></div>"+v+"</span></div>"}m.t<3?e+=h:t+=h}}d3fileoptions.currentFolder&&QH(d3fileoptions.currentFolder,i),QH(d3fileoptions.files,e+t),QE(d3fileoptions.folderup,d3filetreelocation.length>0),d3fileoptions.func&&d3fileoptions.func()}}function d3folderset(e){return d3filetreelocation.push(decodeURIComponent(e)),d3updatefiles(),!1}function d3folderup(e){if(null==e)d3filetreelocation.pop();else for(;d3filetreelocation.length>e;)d3filetreelocation.pop();d3updatefiles()}function d3getFileSel(){for(var e=[],t=document.getElementsByName("fcx"),n=0;n<t.length;n++)t[n].checked&&e.push(t[n].value);return e}function d3setActions(){1==d3fileoptions.dialog?1==Q("d3uploadMode").value?QE("idx_dlgOkButton",Q("d3localFile").value.length>0):QE("idx_dlgOkButton",1==d3getFileSel().length):2==d3fileoptions.dialog&&QE("idx_dlgOkButton",1==d3getFileSel().length)}var sortorder,filetreelocation=[];function p5refreshFiles(){meshserver.send({action:"files"})}function updateFiles(){if(QV("MainMenuMyFiles",!(8&features)),!(8&features)){for(var e,t="",n="",o="<a style=cursor:pointer;color:black onclick=p5folderup(0)>ルート</a>",i="Root",a=filetree,s=1,l=[],r=filetreelinkpath,d=[],u=document.getElementsByName("fc"),c=0;c<u.length;c++)u[c].checked&&d.push(u[c].value);for(var c in filetreelinkpath="",filetreelocation){if(null==a.f||null==a.f[filetreelocation[c]])break;if(l.push(filetreelocation[c]),i+=" / "+filetreelocation[c],1==s){var p=filetreelocation[c].split("/");e=window.location.origin+domainUrl+p[0]+"files/"+p[2],filetreelinkpath+=filetreelocation[c]}else""!=filetreelinkpath&&(filetreelinkpath+="/"+filetreelocation[c],s>2&&(e+="/"+filetreelocation[c]));a=a.f[filetreelocation[c]],o+=" / <a style=cursor:pointer;color:black onclick=p5folderup("+s+")>"+EscapeHtml(null!=a.n?a.n:filetreelocation[c])+"</a>",s++}filetreelocation=l;var m=i.toLowerCase().startsWith("root / "+userinfo._id+" / public"),g=p5sort_files(a.f);for(var c in g){var f,h=g[c],v=h.n;f=EscapeHtml(v);var k="";null!=h.s&&(k=getFileSizeStr(h.s));var y="";if(h.t<3||4==h.t){var x=1==h.t||4==h.t?p5getQuotabar(h):"";y="<div class=filelist file=999><input file=999 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+EscapeHtml(v)+"'>&nbsp;<span style=float:right;padding-right:4px>"+x+'</span><span title="'+f+'"><div class=fileIcon'+h.t+'></div><a style=cursor:pointer onclick=p5folderset("'+encodeURIComponent(h.nx)+'")>'+f+"</a></span></div>"}else{var b=f,w="";m&&(w=" (<a style=cursor:pointer onclick='p5showPublicLink(\""+e+"/"+h.nx+"\")'>リンク</a>)"),h.s>0&&(b='<a rel="noreferrer noopener" target="_blank" href="downloadfile.ashx?link='+encodeURIComponent(filetreelinkpath+"/"+h.nx)+'">'+f+"</a>"+w),y="<div class=filelist file=3><input file=3 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+h.nx+"'>&nbsp;<span style=float:right;padding-right:4px>"+EscapeHtml(k)+'</span><span title="'+f+'"><div class=fileIcon'+h.t+"></div>"+b+"</span></div>"}h.t<3?t+=y:n+=y}if(QH("p5rightOfButtons",p5getQuotabar(a)),QH("p5files",t+n),QH("p5currentpath",o),QE("p5FolderUp",0!=filetreelocation.length),QV("p5PublicShare",m),r==filetreelinkpath){u=document.getElementsByName("fc");for(c=0;c<u.length;c++)u[c].checked=d.indexOf(u[c].value)>=0}p5setActions()}}function getNiceSize(e){return e<=0?"ストレージを超えています":e<2048?format("{0} b残り",e):e<2097152?format("{0} k残り",Math.round(e/1024)):e<2147483648?format("残り{0} m",Math.round(e/1024/1024)):format("{0} g残り",Math.round(e/1024/1024/1024))}function getNetworkSpeed(e){return e<=0?"0 bps":e<1e3?format("{0} bps",e):e<1e6?format("{0} Kbps",Math.round(e/1e3)):e<1e9?format("{0} Mbps",Math.round(e/1e6)):format("{0} Gbps",(e/1e9).toFixed(1))}function p5getQuotabar(e){for(;e.t>1&&4!=e.t;)e=e.parent;return 1!=e.t&&4!=e.t||null==e.maxbytes?"":getNiceSize(e.maxbytes-e.s)+" <progress style=height:10px;width:100px value="+e.s+" max="+e.maxbytes+" />"}function p5showPublicLink(e){setDialogMode(2,"公開リンク",1,null,'<input type=text style=width:100% value="'+e+'" readonly />')}function p5sort_filename(e,t){return e.ln>t.ln?1*sortorder:e.ln<t.ln?-1*sortorder:0}function p5sort_timestamp(e,t){return e.d>t.d?1*sortorder:e.d<t.d?-1*sortorder:0}function p5sort_bysize(e,t){return e.s==t.s?p5sort_filename(e,t):(e.s-t.s)*sortorder}function p5sort_files(e){var t=[],n=Q("p5sortdropdown").value;for(var o in e)e[o].nx=o,null==e[o].n&&(e[o].n=o),e[o].ln=e[o].n.toLowerCase(),t.push(e[o]);return sortorder=1,n>3&&(sortorder=-1,n-=3),1==n?t.sort(p5sort_filename):2==n?t.sort(p5sort_bysize):3==n&&t.sort(p5sort_timestamp),t}function p5setActions(){var e=getFileSelCount(),t=getFileCount(),n=getFileSelCount(!1);QE("p5DeleteFileButton",e>0&&filetreelocation.length>0),QE("p5NewFolderButton",filetreelocation.length>0),QE("p5UploadButton",filetreelocation.length>0),QE("p5RenameFileButton",1==e&&filetreelocation.length>0),QE("p5SelectAllButton",t>0),Q("p5SelectAllButton").value=e>0?"なし":"すべて",QE("p5CutButton",n>0&&e==n),QE("p5CopyButton",n>0&&e==n),QE("p5PasteButton",null!=p5clipboard&&p5clipboard.length>0&&filetreelocation.length>0)}function getFileSelCount(e){for(var t=0,n=document.getElementsByName("fc"),o=0;o<n.length;o++)!n[o].checked||0==e&&"3"!=n[o].attributes.file.value||t++;return t}function getFileSelDirCount(){for(var e=0,t=document.getElementsByName("fc"),n=0;n<t.length;n++)t[n].checked&&"999"==t[n].attributes.file.value&&e++;return e}function getFileCount(){return document.getElementsByName("fc").length}function p5selectallfile(){for(var e=0==getFileSelCount(),t=document.getElementsByName("fc"),n=0;n<t.length;n++)t[n].checked=e;p5setActions()}function setupBackPointers(e){if(null!=e.f){var t=0,n=0;for(var o in e.f)setupBackPointers(e.f[o]),e.f[o].parent=e,e.f[o].s&&(t+=e.f[o].s),e.f[o].c&&(n+=e.f[o].c),3==e.f[o].t&&n++;e.s=t,e.c=n}return e}function getFileSizeStr(e){return 1==e?"1バイト":format("{0}バイト",e)}function p5folderup(e){if(null==e)filetreelocation.pop();else for(;filetreelocation.length>e;)filetreelocation.pop();return updateFiles(),!1}function p5folderset(e){return filetreelocation.push(decodeURIComponent(e)),updateFiles(),!1}function p5createfolder(){setDialogMode(2,"新しいフォルダ",3,p5createfolderEx,"<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% />"),focusTextBox("p5renameinput"),p5fileNameCheck()}function p5createfolderEx(){meshserver.send({action:"fileoperation",fileop:"createfolder",path:filetreelocation,newfolder:Q("p5renameinput").value})}function p5deletefile(){var e=getFileSelCount(),t=getFileSelDirCount()>0?"<br /><br /><label><input type=checkbox id=p5recdeleteinput>再帰削除</label><br>":"<input type=checkbox id=p5recdeleteinput style='display:none'>";setDialogMode(2,"削除",3,p5deletefileEx,e>1?format("選択したアイテム{0}を削除しますか？",e)+t:"選択したアイテムを削除しますか？"+t)}function p5deletefileEx(){for(var e=[],t=document.getElementsByName("fc"),n=0;n<t.length;n++)t[n].checked&&e.push(t[n].value);meshserver.send({action:"fileoperation",fileop:"delete",path:filetreelocation,delfiles:e,rec:Q("p5recdeleteinput").checked})}function p5renamefile(){for(var e,t=document.getElementsByName("fc"),n=0;n<t.length;n++)t[n].checked&&(e=t[n].value);setDialogMode(2,"リネーム",3,p5renamefileEx,'<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% value="'+e+'" />',{action:"fileoperation",fileop:"rename",path:filetreelocation,oldname:e}),focusTextBox("p5renameinput"),p5fileNameCheck()}function p5renamefileEx(e,t){t.newname=Q("p5renameinput").value,meshserver.send(t)}function p5fileNameCheck(e){var t=isFilenameValid(Q("p5renameinput").value);QE("idx_dlgOkButton",t),1==t&&e&&13==e.keyCode&&dialogclose(1)}var isFilenameValid=function(){var e=/^[^\\/:\*\?"<>\|]+$/,t=/^\./,n=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function(o){return e.test(o)&&!t.test(o)&&!n.test(o)&&"."!=o[0]}}();function p5uploadFile(){setDialogMode(2,"ファイルをアップロードする",3,p5uploadFileEx,'<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="'+encodeURIComponent(filetreelinkpath)+'" /><input type=file name=files id=p5uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p5uploadinput\')" /><input type=hidden name=authCookie value='+authCookie+" /><input type=submit id=p5loginSubmit style=display:none /></form>"),updateUploadDialogOk("p5uploadinput")}function p5uploadFileEx(){Q("p5loginSubmit").click()}function updateUploadDialogOk(e){QE("idx_dlgOkButton",""!=Q(e).value)}var p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;function p5copyFile(e){var t=document.getElementsByName("fc");p5clipboard=[],p5clipboardCut=e,p5clipboardFolder=Clone(filetreelocation);for(var n=0;n<t.length;n++)t[n].checked&&"3"==t[n].attributes.file.value&&p5clipboard.push(t[n].value);p5updateClipview()}function p5pasteFile(){var e="";null!=p5clipboard&&p5clipboard.length>0&&(e=format("この場所へのエントリ{1}のうち{0}の{2}を確定して宜しいですか？",0==p5clipboardCut?"copy":"move",p5clipboard.length,p5clipboard.length>1?"s":"")),setDialogMode(2,"ペースト",3,p5pasteFileEx,e)}function p5pasteFileEx(){meshserver.send({action:"fileoperation",fileop:0==p5clipboardCut?"copy":"move",scpath:p5clipboardFolder,path:filetreelocation,names:p5clipboard}),p5folderup(999),1==p5clipboardCut&&(p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0,p5updateClipview())}function p5updateClipview(){var e="";null!=p5clipboard&&p5clipboard.length>0&&(e=format("{2}の{0}エントリを保持しています{1}",p5clipboard.length,p5clipboard.length>1?"s":"",0==p5clipboardCut?"コピー":"動く")+', <a href=# onclick="return p5clearClip()" style=cursor:pointer>クリア</a>.'),QH("p5bottomstatus",e),p5setActions()}function p5clearClip(){return p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0,p5updateClipview(),!1}function p5fileDragDrop(e){if(haltEvent(e),QV("bigfail",!1),QV("bigok",!1),null!=e.dataTransfer&&0!=e.dataTransfer.files.length&&0!=filetreelocation.length)for(var t=[],n=[],o=[],i=[],a=e.dataTransfer.files.length,s=0;s<e.dataTransfer.files.length;s++){var l=new FileReader,r=e.dataTransfer.files[s];t.push(r.name),n.push(r.size),o.push(r.type),l.onload=function(e){i.push(e.target.result),0==--a&&(Q("p5fileDragName").value=t.join("*"),Q("p5fileDragSize").value=n.join("*"),Q("p5fileDragType").value=o.join("*"),Q("p5fileDragData").value=i.join("*"),Q("p5fileDragLink").value=encodeURIComponent(filetreelinkpath),Q("p5loginSubmit2").click())},l.readAsDataURL(r)}}var p5dragtimer=null;function p5fileDragOver(e){haltEvent(e),null!=p5dragtimer&&(clearTimeout(p5dragtimer),p5dragtimer=null);var t=!0;0==filetreelocation.length&&(t=!1),QV("bigok",t),QV("bigfail",!t)}function p5fileDragLeave(e){haltEvent(e),"p5filetable"!=e.target.id?(QV("bigfail",!1),QV("bigok",!1)):p5dragtimer=setTimeout("QV('bigfail',false);QV('bigok',false);p5dragtimer=null;",200)}function onRealNameCheckBox(){putstore("showRealNames",(showRealNames=Q("RealNameCheckBox").checked)?1:0),mainUpdate(5)}function onOnlineCheckBox(e){putstore("onlineOnly",Q("OnlineCheckBox").checked?1:0),onSearchInputChanged()}function updateDevicePageState(){if(null==devicePagingState||devicePagingState.total<=devicePagingState.limit)QV("devViewPageState",!1),QV("devViewPageButton2",!1),QV("devViewPageButton3",!1);else{var e=Math.floor((devicePagingState.skip+devicePagingState.limit)/devicePagingState.limit),t=Math.ceil(devicePagingState.total/devicePagingState.limit);QV("devViewPageState",!0),QV("devViewPageButton2",!0),QV("devViewPageButton3",!0),QH("devViewPageState",e+"/"+t)}}function onDeviceViewPageChange(e){if(null!=devicePagingState){var t=Math.floor((devicePagingState.skip+devicePagingState.limit)/devicePagingState.limit),n=Math.ceil(devicePagingState.total/devicePagingState.limit);switch(e){case 2:t>1&&meshserver.send({action:"nodes",skip:(t-2)*devicePagingState.limit});break;case 3:t<n&&meshserver.send({action:"nodes",skip:t*devicePagingState.limit})}}}function onDeviceSearchChanged(e){setTimeout(function(){onSearchInputChanged()},10)}function clearSearchInput(){Q("SearchInput").value="",Q("OnlineCheckBox").checked=!1,onSearchInputChanged()}function onSearchInputChanged(){var e=Q("SearchInput").value.toLowerCase().trim();putstore("_search",Q("SearchInput").value),QS("SearchInput")["background-color"]=""==e?"#FFFFFF":"#FDFFBE";var t=e.startsWith("!");t&&(e=e.substring(1));var n=Q("SearchInput").value.trim();t&&(n=n.substring(1));var o=null,i=null,a=null,s=null,l=null,r=null,d=null,u=null;if(e.startsWith("user:".toLowerCase())?o=e.substring(5):e.startsWith("u:".toLowerCase())?o=e.substring(2):e.startsWith("ip:".toLowerCase())?i=e.substring(3):e.startsWith("group:".toLowerCase())?a=e.substring(6):e.startsWith("g:".toLowerCase())?a=e.substring(2):e.startsWith("tag:".toLowerCase())?s=n.substring(4):e.startsWith("t:".toLowerCase())?s=n.substring(2):e.startsWith("atag:".toLowerCase())?l=n.substring(5).toLowerCase():e.startsWith("a:".toLowerCase())?l=n.substring(2).toLowerCase():e.startsWith("os:".toLowerCase())?d=n.substring(3).toLowerCase():e.startsWith("amt:".toLowerCase())?u=n.substring(4).toLowerCase():"wsc:ok"==e?r=1:"wsc:noav"==e?r=2:"wsc:noupdate"==e?r=3:"wsc:nofirewall"==e?r=4:"wsc:any"==e&&(r=5),""==e)for(var c in nodes)nodes[c].v=!0;else if(null!=i)for(var c in nodes)nodes[c].v=null!=nodes[c].ip&&nodes[c].ip.indexOf(i)>=0;else if(null!=a)for(var c in nodes)nodes[c].v=meshes[nodes[c].meshid].name.toLowerCase().indexOf(a)>=0;else if(null!=s)for(var c in nodes)nodes[c].v=null==nodes[c].tags&&""==s||null!=nodes[c].tags&&nodes[c].tags.indexOf(s)>=0;else if(null!=l)for(var c in nodes)nodes[c].v=null!=nodes[c].agent&&null==nodes[c].agent.tag&&""==l||null!=nodes[c].agent&&null!=nodes[c].agent.tag&&nodes[c].agent.tag.toLowerCase().indexOf(l)>=0;else if(null!=o){for(var c in nodes)if(nodes[c].v=!1,nodes[c].users&&nodes[c].users.length>0)for(var p in nodes[c].users)nodes[c].users[p].toLowerCase().indexOf(o)>=0&&(nodes[c].v=!0)}else if(null!=d)for(var c in nodes)nodes[c].v=null!=nodes[c].osdesc&&nodes[c].osdesc.toLowerCase().indexOf(d)>=0;else if(null!=u)for(var c in nodes)nodes[c].v=null!=nodes[c].intelamt&&(""==u||nodes[c].intelamt.state==u);else if(null!=r)for(var c in nodes)nodes[c].v=!1,nodes[c].wsc&&(1==r&&"OK"==nodes[c].wsc.antiVirus&&"OK"==nodes[c].wsc.autoUpdate&&"OK"==nodes[c].wsc.firewall?nodes[c].v=!0:(2!=r&&5!=r||"OK"==nodes[c].wsc.antiVirus)&&(3!=r&&5!=r||"OK"==nodes[c].wsc.autoUpdate)&&(4!=r&&5!=r||"OK"==nodes[c].wsc.firewall)||(nodes[c].v=!0));else if("*"==e)for(var c in nodes)nodes[c].v=1==stars[nodes[c]._id];else try{var m=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),g=new RegExp(m);for(var c in nodes)nodes[c].v=32768&features2?268435456&features2?g.test(nodes[c].name.toLowerCase())||g.test(meshes[nodes[c].meshid].name.toLowerCase())||null!=nodes[c].rnamel&&g.test(nodes[c].rnamel.toLowerCase()):g.test(nodes[c].name.toLowerCase())||null!=nodes[c].rnamel&&g.test(nodes[c].rnamel.toLowerCase()):268435456&features2?showRealNames?null!=nodes[c].rnamel&&g.test(nodes[c].rnamel.toLowerCase())||g.test(meshes[nodes[c].meshid].name.toLowerCase()):g.test(nodes[c].name.toLowerCase())||g.test(meshes[nodes[c].meshid].name.toLowerCase()):showRealNames?null!=nodes[c].rnamel&&g.test(nodes[c].rnamel.toLowerCase()):g.test(nodes[c].name.toLowerCase())}catch(e){for(var c in nodes)nodes[c].v=!0}if(t)for(var c in nodes)nodes[c].v=!nodes[c].v;if(Q("OnlineCheckBox").checked)for(var c in nodes)null!=nodes[c].conn&&0!=nodes[c].conn||(nodes[c].v=!1);mainUpdate(4)}var gotKeyPressEvent=!1;function ondeskkeypress(e,t){if(setSessionActivity(),desktop&&!xxdialogMode&&10==xxcurrentView&&1==currentDevicePanel){if(gotKeyPressEvent=!0,Q("softKeyboard").value="",null!=currentNode){var n=GetMeshRights(currentNode.meshid);if(0==!(8192&features2||4294967295!=n&&(!(8&n)||256&n)))return!1;if(1==!(4294967295==n||!(8&n)||256&n||!(4096&n))&&(1==e.altKey||1==e.ctrlKey||e.keyCode<32&&8!=e.keyCode&&13!=e.keyCode||e.keyCode>90))return!1}return desktop.m.handleKeys(e)}if(terminal&&!xxdialogMode&&10==xxcurrentView&&5==currentDevicePanel&&1!==t){if(1==e.altKey)return!0;gotKeyPressEvent=!0,Q("softKeyboard").value="";var o=0;return 0!=e.charCode?o=e.charCode:0!=e.keyCode&&(o=e.keyCode),0!=o&&("sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+String.fromCharCode(o)):terminal.sendText(String.fromCharCode(o))),!1}}function ondeskkeydown(e,t){if(setSessionActivity(),desktop&&!xxdialogMode&&10==xxcurrentView&&1==currentDevicePanel){if(gotKeyPressEvent=!1,Q("softKeyboard").value="",null!=currentNode){var n=GetMeshRights(currentNode.meshid);if(0==!(8192&features2||4294967295!=n&&(!(8&n)||256&n)))return!1;if(1==!(4294967295==n||!(8&n)||256&n||!(4096&n))&&(1==e.altKey||1==e.ctrlKey||e.keyCode<32&&8!=e.keyCode&&13!=e.keyCode||e.keyCode>90))return!1}return desktop.m.handleKeyDown(e)}if(terminal&&!xxdialogMode&&10==xxcurrentView&&5==currentDevicePanel&&1!==t){if(1==e.altKey)return!0;Q("softKeyboard").value="",gotKeyPressEvent=!1;var o=0;0!=e.charCode?o=e.charCode:0!=e.keyCode&&(o=e.keyCode),8==o?"sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+String.fromCharCode(o)):terminal.sendText(String.fromCharCode(o)):e.ctrlKey&&o>=64&&o<=95&&("sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+String.fromCharCode(o-64)):terminal.sendText(String.fromCharCode(o-64)))}}function ondeskkeyup(e,t){if(setSessionActivity(),desktop&&!xxdialogMode&&10==xxcurrentView&&1==currentDevicePanel){var n=Q("softKeyboard").value;if(Q("softKeyboard").value="",null!=currentNode){var o=GetMeshRights(currentNode.meshid);if(0==!(8192&features2||4294967295!=o&&(!(8&o)||256&o)))return!1;if(1==!(4294967295==o||!(8&o)||256&o||!(4096&o))&&(1==e.altKey||1==e.ctrlKey||e.keyCode<32&&8!=e.keyCode&&13!=e.keyCode||e.keyCode>90))return!1}if(!(0==gotKeyPressEvent&&n.length>0&&desktop.m.SendKeyUnicode))return desktop.m.handleKeyUp(e);var i=n[n.length-1].charCodeAt(0);desktop.m.SendKeyUnicode(desktop.m.KeyAction.DOWN,i),desktop.m.SendKeyUnicode(desktop.m.KeyAction.UP,i)}if(terminal&&!xxdialogMode&&10==xxcurrentView&&5==currentDevicePanel&&0==gotKeyPressEvent&&1!==t){if(1==e.altKey)return!0;n=Q("softKeyboard").value;return Q("softKeyboard").value="","sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+n):n&&terminal.sendText(n),!1}}var deviceHeaderCount,sort=0,deviceHeaderId=0,deviceHeaders={},showRealNames=!1,deviceHeaderTotal=0,deviceHeadersTitles=(deviceHeaders={},{});function updateDevices(){var e="",t=0,n=null,o=0,i={};for(var a in deviceHeaderId=0,deviceHeaderCount={},deviceHeaderTotal=0,deviceHeaders={},deviceHeadersTitles={},0==sort?nodes.sort(meshSort):1==sort?nodes.sort(powerSort):2==sort&&(1==showRealNames?nodes.sort(deviceHostSort):nodes.sort(deviceSort)),nodes)if(0!=nodes[a].v){if(0==sort){if(nodes.sort(meshSort),(meshes[nodes[a].meshid]?nodes[a].meshid:"*")!=n){deviceHeaderSet();var s="";null!=meshes[nodes[a].meshid]&&1==meshes[nodes[a].meshid].mtype&&(s="<span style=color:lightgray>、Intel&reg; AMTのみ</span>"),null!=n&&(2==t&&(e+="<td><div style=width:301px></div></td>"),""!=e&&(e+="</tr></table>")),e+="<div class=DevSt style=padding-top:4px><span style=float:right>",meshes[nodes[a].meshid]?(e+='</span><span id=MxMESH style=cursor:pointer onclick=goForward("'+nodes[a].meshid+'")>'+EscapeHtml(meshes[nodes[a].meshid].name)+"</span>"+s+"<span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>",n=nodes[a].meshid):(e+="</span><span id=MxMESH><i>個々のデバイス</i></span><span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>",n="*"),i[n]=1,t=0}}else 1==sort?nodes[a].pwr!==n&&(deviceHeaderSet(),null!==n&&(2==t&&(e+="<td><div style=width:301px></div></td>"),""!=e&&(e+="</tr></table>")),e+="<div class=DevSt style=width:100%;padding-top:4px><span>"+PowerStateStr2(nodes[a].pwr)+"</span><span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>",n=nodes[a].pwr,t=0):2==sort&&null==n&&(n="1");o++,e+="<div name=xxdevice onclick=goForward('"+nodes[a]._id+"') class=devList1 id='"+nodes[a]._id+"'></div>",deviceHeaderTotal++,void 0===deviceHeaderCount[nodes[a].state]?deviceHeaderCount[nodes[a].state]=1:deviceHeaderCount[nodes[a].state]++}if(""==e&&nodes.length>0&&""!=Q("SearchInput").value&&(e='<div style="margin:30px">この検索に一致するデバイスはありません。</div>'),0==sort&&""==Q("SearchInput").value)for(var a in meshes){var l=meshes[a];null==i[l._id]&&IsMeshViewable(l)&&(""!=n&&""!=e&&(e+="</tr></table>"),e+="<div><div colspan=3 class=DevSt><span style=float:right>",e+='</span><span id=MxMESH style=cursor:pointer onclick=goForward("'+l._id+'")>'+EscapeHtml(l.name)+"</span></div>",1==l.mtype&&(e+="<div style=padding:10px><i>Intel&reg;なしこのグループのAMTデバイス"),l.mtype>1&&(e+="<div style=padding:10px><i>このグループにデバイスはありません"),e+=".</i></div></div>",n=l._id,o++)}for(var a in 0==o?""!=Q("SearchInput").value||Q("OnlineCheckBox").checked?QH("xdevices",'<div style="margin-top:50px;text-align:center"><span style="font-size:30px">デバイスなし</span><br /><br />この検索に一致するデバイスはありません。 <a onclick=clearSearchInput() style=cursor:pointer>検索フィルターをクリア</a></div>'):QH("xdevices",'<div style="margin-top:50px;text-align:center"><span style="font-size:30px">デバイスなし</span><br /><br />このWebサイトのデスクトップバージョンを使用して、デバイスを追加します。</div>'):QH("xdevices",e),deviceHeaderSet(),deviceHeaders)QH(a,deviceHeaders[a]);for(var a in deviceHeadersTitles)Q(a).title=deviceHeadersTitles[a];onDevicesScrollEx()}var onDevicesTouchActive=!1,onDevicesScrollnagleTimer=null;function onDevicesScroll(){null==onDevicesScrollnagleTimer&&(onDevicesScrollnagleTimer=setTimeout(onDevicesScrollEx,250))}function onDeviceTouch(e){onDevicesTouchActive!=e&&(onDevicesTouchActive=e,0==e&&onDevicesScrollEx())}function onDevicesScrollEx(){var e=document.getElementsByName("xxdevice");onDevicesScrollnagleTimer=null;for(var t=0;t<e.length;t++){var n=getNodeFromId(e[t].id);if(null==n)break;updateDeviceViewHtml(e[t],n)}}function updateDeviceViewDevice(e){if(null!=e){var t=Q(e._id);null!=t&&""!=t.innerHTML&&updateDeviceViewHtml(t,e)}}function updateDeviceViewHtml(e,t){var n=Q("xdevices").scrollTop-250,o=Q("xdevices").scrollTop+Q("xdevices").clientHeight+250;if(e.offsetTop>=n&&e.offsetTop<o){var i=EscapeHtml(t.name);0==i.length&&(i="<i>なし</i>"),null!=t.rname&&t.rname.length>0&&(i+=" / "+EscapeHtml(t.rname));var a=EscapeHtml(t.name);1==showRealNames&&null!=t.rname&&(a=EscapeHtml(t.rname)),0==a.length&&(a="<i>なし</i>");var s="",l="";if(1==stars[t._id]&&(l+="<img class=deviceNotifyDotSub src=images/icon-star-notify-16.png width=16 height=16>"),null!=t.sessions&&(null!=t.sessions.msg&&(l+='<div style="width:16;height:16" class=deviceNotifyDotSub>'+Object.keys(t.sessions.msg).length+"</div>"),null==t.sessions.kvm&&null==t.sessions.terminal&&null==t.sessions.files&&null==t.sessions.tcp&&null==t.sessions.udp||(l+="<img class=deviceNotifyDotSub src=images/icon-relay-notify.png width=16 height=16>"),null!=t.sessions.help&&(l+="<img class=deviceNotifyDotSub src=images/icon-help-notify-16.png width=16 height=16>"),null!=t.sessions.battery)){var r=t.sessions.battery,d="";"ac"==r.state?d="デバイスが接続されています":"dc"==r.state&&(d="デバイスはバッテリー式です");var u="",c=-1;"number"==typeof r.level&&r.level>=0&&r.level<=100&&(u=r.level+"%",(c=Math.floor((r.level+10)/25)+1)>5&&(lvl=5),"ac"==r.state&&(100==r.level?c=11:c+=5)),c>0&&(s+='<div class="deviceBatterySmall deviceBatterySmall'+c+'" title="'+(null!=d?d+", "+u:u)+'"></div>')}""!=l&&(s+="<div class=deviceNotifyDot>"+l+"</div>");var p=t.icon,m=NodeStateStr(t);t.conn&&0!=t.conn||3==t.mtype||(p+=" gray"),e.innerHTML="<div>"+s+'<div class="i'+p+' devList2"></div><div class=devList3><div class=devList4><b>'+a+"</b></div><div class=devList5>"+m+"</div></div></div>"}else e.innerHTML=""}function showDeviceHelpRequests(e,t,n){if(n&&haltEvent(n),xxdialogMode&&!t)return!1;var o=null,i="";if(null==(o=null==e?currentNode:getNodeFromId(e))||null==o.sessions)return setDialogMode(0),!1;if(null!=o.sessions.help)for(var a in o.sessions.help)i+="<div style=margin-bottom:6px><b>"+EscapeHtml(a)+"</b></div><div style=margin-bottom:6px>"+EscapeHtml(o.sessions.help[a])+"</div>";return""!=i?setDialogMode(2,"ヘルプリクエスト - "+EscapeHtml(o.name),1,null,i,"HELPREQ-"+o._id):setDialogMode(0),!1}function showDeviceSessions(e,t,n){if(!(!0!==t&&xxdialogMode||null==currentNode)){var o=currentNode,i="";for(var a in o.sessions)if("kvm"==a&&null==o.sessions.multidesk)for(var s in i+="<u>リモートデスクトップ</u>",o.sessions.kvm)if(s.startsWith("user/")){var l="";s!=userinfo._id&&4294967295!=GetNodeRights(o)||(l=' <a href=# onclick=\'return endDeviceSession("kvm", "'+encodeURIComponentEx(o._id)+'", "'+encodeURIComponentEx(s)+'")\' title="このセッションを切断します" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),i+=addHtmlValue4(getUserName(s),(1==o.sessions.kvm[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.kvm[s])))+l)}else"busy"==s&&(i+=addHtmlValue2("デバイスがビジーです",1==o.sessions.kvm[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.kvm[s]))));else if("multidesk"==a)for(var s in i+="<u>リモートデスクトップ</u>",o.sessions.multidesk){l="";s!=userinfo._id&&4294967295!=GetNodeRights(o)||(l=' <a href=# onclick=\'return endDeviceSession("multidesk", "'+encodeURIComponentEx(o._id)+'", "'+encodeURIComponentEx(s)+'")\' title="このセッションを切断します" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),i+=addHtmlValue4(getUserName(s),(1==o.sessions.multidesk[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.multidesk[s])))+l)}else if("terminal"==a)for(var s in i+="<u>ターミナル</u>",o.sessions.terminal){l="";s!=userinfo._id&&4294967295!=GetNodeRights(o)||(l=' <a href=# onclick=\'return endDeviceSession("terminal", "'+encodeURIComponentEx(o._id)+'", "'+encodeURIComponentEx(s)+'")\' title="このセッションを切断します" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),i+=addHtmlValue4(getUserName(s),(1==o.sessions.terminal[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.terminal[s])))+l)}else if("files"==a)for(var s in i+="<u>ファイル</u>",o.sessions.files){l="";s!=userinfo._id&&4294967295!=GetNodeRights(o)||(l=' <a href=# onclick=\'return endDeviceSession("files", "'+encodeURIComponentEx(o._id)+'", "'+encodeURIComponentEx(s)+'")\' title="このセッションを切断します" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),i+=addHtmlValue4(getUserName(s),(1==o.sessions.files[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.files[s])))+l)}else if("tcp"==a)for(var s in i+="<u>TCPルーティング</u>",o.sessions.tcp){l="";s!=userinfo._id&&4294967295!=GetNodeRights(o)||(l=' <a href=# onclick=\'return endDeviceSession("tcp", "'+encodeURIComponentEx(o._id)+'", "'+encodeURIComponentEx(s)+'")\' title="このセッションを切断します" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),i+=addHtmlValue4(getUserName(s),(1==o.sessions.tcp[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.tcp[s])))+l)}else if("udp"==a)for(var s in i+="<u>UDPルーティング</u>",o.sessions.udp){l="";s!=userinfo._id&&4294967295!=GetNodeRights(o)||(l=' <a href=# onclick=\'return endDeviceSession("udp", "'+encodeURIComponentEx(o._id)+'", "'+encodeURIComponentEx(s)+'")\' title="このセッションを切断します" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),i+=addHtmlValue4(getUserName(s),(1==o.sessions.udp[s]?"1セッション":nobreak(format("{0}セッション",o.sessions.udp[s])))+l)}""!=i?setDialogMode(2,"セッション - "+EscapeHtml(o.name),1,null,i,"SESSIONS-"+o._id):setDialogMode(0)}}function endDeviceSession(e,t,n){var o=decodeURIComponent(n).split("/"),i=o[0]+"/"+o[1]+"/"+o[2],a=null;4==o.length&&o[3].startsWith("guest:")&&(a=atob(o[3].substring(6))),"multidesk"==e?meshserver.send({action:"endDesktopMultiplex",nodeid:decodeURIComponent(t),xuserid:i,guestname:a,guestname:a}):meshserver.send({action:"msg",type:"endtunnel",nodeid:decodeURIComponent(t),xuserid:i,guestname:a,guestname:a,protocol:e})}function showDeviceMessages(e,t,n){if(n&&haltEvent(n),xxdialogMode&&!t)return!1;var o=null,i="<div style=max-height:200px;width:100%;overflow-y:auto;overflow-x:hidden>",a=0;if(null==(o=null==e?currentNode:getNodeFromId(e))||null==o.sessions||null==o.sessions.msg)return setDialogMode(0),!1;for(var s in o.sessions.msg){var l=s,r=5;"string"==typeof o.sessions.msg[s].msg&&(l=o.sessions.msg[s].msg),"number"==typeof o.sessions.msg[s].icon&&(r=o.sessions.msg[s].icon),(r<1||r>9)&&(r=5),i+="<table style=width:100%><td style=width:24px><div class=NotifyIconSmall"+r+'></div><td><div style="border-radius:5px;background-color:#BBB;width:calc(100% - 18px);padding:8px">'+EscapeHtml(l)+"</div></table>",a++}return i+="</div>",a>0&&setDialogMode(2,"エージェントメッセージ - "+EscapeHtml(o.name),1,null,i,"MESSAGES-"+o._id),!1}var powerStatetable=["","起動済み","睡眠","睡眠","睡眠","ハイバネーション","電源を切る","プレゼント","オフ"],powerStateStrings=["","起動済み","睡眠","睡眠","深い眠り","ハイバネーション","ソフトオフ","プレゼント","オフ"],powerStateStrings2=["","デバイスに電源が入っています","デバイスはスリープ状態です（S1）","デバイスはスリープ状態です（S2）","デバイスはディープスリープ状態です（S3）","デバイスは休止状態です（S4）","デバイスはソフトオフ状態です（S5）","デバイスは存在しますが、電源状態を判別できません","デバイスの電源がオフになっています"],powerColorTable=["#00000000","black","blue","blue","lightblue","blueviolet","darkgreen","lightseagreen","lightseagreen"];function NodeStateStr(e){var t=[];return e.state>0&&e.state<powerStatetable.length&&state.push(powerStatetable[e.state]),e.conn&&(1&e.conn&&t.push("<span>"+(4==e.mtype?"PDU"==e.porttype?"スイッチ":"IP-KVM":"エージェント")+"</span>"),2&e.conn?t.push("<span>CIRA</span>"):4&e.conn&&t.push("<span>Intel&reg; AMT</span>"),8&e.conn&&t.push("<span>リレー</span>"),16&e.conn&&t.push("<span>MQTT</span>")),null!=e.pwr&&0!=e.pwr&&t.push(powerStateStrings[e.pwr]),t.join(", ")}function PowerStateStr(e){return e<powerStatetable.length?powerStatetable[e]:""}function PowerStateStr2(e){return 0!=e&&e<powerStatetable.length?powerStatetable[e]:"未知の"}function onSortSelectChange(e){sort=document.getElementById("sortselect").selectedIndex,e||putstore("sort",sort),mainUpdate(4)}function deviceHeaderSet(){if(0!=deviceHeaderId){deviceHeaders["DevxHeader"+deviceHeaderId]=", "+deviceHeaderTotal+" ノード";var e="";for(var t in deviceHeaderCount)e.length>0&&(e+=", "),e+=deviceHeaderCount[t]+" "+PowerStateStr2(t);deviceHeadersTitles["DevxHeader"+deviceHeaderId]=e,deviceHeaderId++,deviceHeaderCount={},deviceHeaderTotal=0}else deviceHeaderId=1}var sortCollator=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function meshSort(e,t){var n=sortCollator.compare(e.meshnamel,t.meshnamel);return 0!=n||0!=(n=sortCollator.compare(e.meshid,t.meshid))?n:1==showRealNames?sortCollator.compare(e.rnamel,t.rnamel):sortCollator.compare(e.namel,t.namel)}function powerSort(e,t){var n=e.pwr?e.pwr:0,o=t.pwr?t.pwr:0;return n>o?-1:n<o?1:n==o?1==showRealNames?sortCollator.compare(e.rnamel,t.rnamel):sortCollator.compare(e.namel,t.namel):void 0}function deviceSort(e,t){return sortCollator.compare(e.namel,t.namel)}function deviceHostSort(e,t){return sortCollator.compare(e.rnamel,t.rnamel)}function refreshDevice(e){currentNode&&currentNode._id==e&&gotoDevice(e,xxcurrentView,!0)}var currentNode,currentDevicePanel=0,powerTimelineNode=null,powerTimelineReq=null,powerTimelineUpdate=null,powerTimeline=null;function getCurrentNode(){return currentNode}function gotoDevice(e,t,n){if(!0===userinfo.emailVerified||1!=serverinfo.emailcheck||4294967295==userinfo.siteadmin)if(!(262144&features)||1==userinfo.otpsecret||userinfo.otphkeys>0||userinfo.otpkeys>0||userinfo.otpduo>0||userinfo.otpdev>0||8388608&features&&1==userinfo.otpekey){var o=getNodeFromId(e);if(null!=o){var i=meshes[o.meshid],a=GetNodeRights(o),s=null==currentNode||currentNode._id!=e;if(!currentNode||currentNode._id!=o._id||1==n){if(currentNode=o,QV("p10deviceNotify",null!=currentNode.sessions&&(null!=o.sessions.kvm||null!=o.sessions.terminal||null!=o.sessions.files||null!=o.sessions.tcp||null!=o.sessions.udp)),QV("p10deviceStar",1==stars[currentNode._id]),QV("p10deviceHelp",null!=currentNode.sessions&&null!=currentNode.sessions.help),null!=currentNode.sessions&&null!=currentNode.sessions.msg?(QV("p10deviceMsg",!0),QH("p10deviceMsg",Object.keys(currentNode.sessions.msg).length)):QV("p10deviceMsg",!1),QV("p10deviceBattery",!1),null!=currentNode.sessions&&null!=currentNode.sessions.battery){var l=currentNode.sessions.battery,r="";"ac"==l.state&&(r="デバイスが接続されています"),"dc"==l.state&&(r="デバイスはバッテリー式です");var d="",u=-1;"number"==typeof l.level&&l.level>=0&&l.level<=100&&(d=l.level+"%",(u=Math.floor((l.level+10)/25)+1)>5&&(lvl=5),"ac"==l.state&&(100==l.level?u=11:u+=5)),u>0&&(Q("p10deviceBattery").title=null!=r?r+", "+d:d,QV("p10deviceBattery",!0),Q("p10deviceBattery").className="deviceBatteryLarge deviceBatteryLarge"+u)}else QV("p10deviceBattery",!1);var c=EscapeHtml(o.name);0==c.length&&(c="<i>なし</i>"),4&a&&(c="<span onclick=showEditNodeValueDialog(0) style=cursor:pointer>"+c+"</span>"),QH("p10deviceName",c);var p="<table style=width:100%>";i&&(p+=addDeviceAttribute("<span>グループ</span>",'<a onclick=goForward("'+o.meshid+'") style=cursor:pointer>'+EscapeHtml(meshes[o.meshid].name)+"</a>")),null!=o.rname&&(p+=addDeviceAttribute("<span>名</span>","<span>"+EscapeHtml(o.rname)+"</span>")),(1&features||4==o.mtype)&&3!=o.mtype||(4&a?o.host?p+=addDeviceAttribute("ホスト名","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>"+EscapeHtml(o.host)+"</span>"):p+=addDeviceAttribute("ホスト名","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer><i>なし</i></span>"):p+=addDeviceAttribute("ホスト名",EscapeHtml(o.host)));var m=o.desc?EscapeHtml(o.desc):"<i>なし</i>";if(p+=addDeviceAttribute("説明",4&a?"<span onclick=showEditNodeValueDialog(2) style=cursor:pointer>"+m+"</span>":m),4==o.mtype&&(null!=o.portnum&&(p+=addDeviceAttribute("ポート番号",o.portnum)),null!=o.porttype&&(p+=addDeviceAttribute("ポートタイプ",o.porttype))),null!=o.agent&&null!=o.agent.id&&3==o.mtype)4==o.agent.id&&(p+=addDeviceAttribute("デバイスタイプ","Windows")),6==o.agent.id&&(p+=addDeviceAttribute("デバイスタイプ","Linux")),29==o.agent.id&&(p+=addDeviceAttribute("デバイスタイプ","マックOS"));else if(null!=o.agent&&null!=o.agent.id&&null!=o.agent.ver){var g="";g=o.agent.id<=agentsStr.length?agentsStr[o.agent.id]:agentsStr[0],0!=o.agent.ver&&(g+=" v"+o.agent.ver),14==o.agent.id&&(g=o.agent.core),!1===o.agent.root&&1&o.conn&&(g+=", 制限付き"),p+=addDeviceAttribute("メッシュエージェント",g)}if(null!=o.intelamt){g="";var f={0:nobreak("アクティブ化されていない（前）"),1:nobreak("アクティブ化されていない（イン）"),2:nobreak("有効化")};if(null!=o.intelamt.ver&&null==o.intelamt.state?g+="<i>"+nobreak("不明な状態")+"</i>, v"+EscapeHtml(o.intelamt.ver):null==o.intelamt.ver&&2==o.intelamt.state?g+="<i>有効化</i>":null==o.intelamt.ver||null==o.intelamt.state?g+="<i>不明なバージョンと状態</i>":(g+=f[o.intelamt.state],o.intelamt.flags&&(2&o.intelamt.flags?g=" <span>CCM</span>":4&o.intelamt.flags&&(g=" <span>ACM</span>")),g+=", v"+EscapeHtml(o.intelamt.ver)),2==o.intelamt.state){1==o.intelamt.tls&&(g+=', <span title="Intel&reg; AMTはTLSネットワークセキュリティでセットアップされています">TLS</span>');var h=!1;if(null==o.intelamt.user||""==o.intelamt.user)4&a?(g+=', <i style=color:#FF0000;cursor:pointer title="Intelを編集&reg; AMTクレデンシャル" onclick=editDeviceAmtSettings("'+o._id+'")>資格情報なし</i>',h=!0):g+=", <i style=color:#FF0000>資格情報なし</i>";else if(1&features2&&null!=o.intelamt.warn){var v=null;1&o.intelamt.warn&&(v="無効な資格情報"),8&o.intelamt.warn&&(v="クレデンシャルを試す"),null!=v&&(4&a?(g+=', <i style=color:#FF0000;cursor:pointer title="Intelを編集&reg; AMTクレデンシャル" onclick=editDeviceAmtSettings("'+o._id+'")>'+v+"</i>",h=!0):g+=", <i style=color:#FF0000>"+v+"</i>")}4&a&&!(1&features2)&&(h=!0),g+=" ",h&&(g+='<img src=images/link4.png height=10 width=10 title="Intelを編集&reg; AMTクレデンシャル" style=cursor:pointer onclick=editDeviceAmtSettings("'+o._id+'")>')}var k="Intel&reg;私";"number"==typeof o.intelamt.sku&&(8&o.intelamt.sku?k="Intel&reg; AMT":16&o.intelamt.sku&&(k="Intel&reg; SM")),p+=addDeviceAttribute(k,g)}if(null!=o.agent&&null!=o.agent.tag&&"mailto:"!=o.agent.tag){var y=EscapeHtml(o.agent.tag);y.startsWith("mailto:")&&(y='<a href="'+y+'">'+y.substring(7)+"</a>"),p+=addDeviceAttribute("エージェントタグ",y)}var x=o.conn;if(x&&x>1){var b=[];1&o.conn&&b.push("<span>"+(4==o.mtype?"PDU"==o.porttype?"スイッチ":"IP-KVM":"エージェント")+"</span>"),2&o.conn?b.push("<span>Intel&reg; AMT CIRA</span>"):4&o.conn&&b.push("<span>Intel&reg; AMT</span>"),8&o.conn&&b.push("<span>エージェントリレー</span>"),16&o.conn&&b.push("<span>MQTT</span>"),p+=addDeviceAttribute("接続性",b.join(", "))}var w="<i>なし</i>";if(null!=o.tags)for(var S in w="",o.tags)w+="<span class=tagSpan>"+EscapeHtml(o.tags[S])+"</span> ";if(p+=addDeviceAttribute("タグ",4&a?"<span onclick=showEditNodeValueDialog(3) style=cursor:pointer;color:black>"+w+"</span>":"<span style=line-height:26px;color:black>"+w+"</span>"),null!=o.ssh||null!=o.rdp){var D=[];4&a?(null!=o.ssh&&D.push("<span onclick=showClearSshDialog(3) style=cursor:pointer>"+(1==o.ssh?"SSH-User+Pass":2==o.ssh?"SSH-User+Key+Pass":"SSH-User+Key")+' <img class=hoverButton src="images/link5.png" width=10 height=10 /></span>'),null!=o.rdp&&D.push('<span onclick=showClearRdpDialog(3) style=cursor:pointer>RDP <img class=hoverButton src="images/link5.png" width=10 height=10 /></span>')):(null!=o.ssh&&D.push(1==o.ssh?"SSH-User+Pass":2==o.ssh?"SSH-User+Key+Pass":"SSH-User+Key"),null!=o.rdp&&D.push("RDP")),p+=addDeviceAttribute("資格情報",D.join(", "))}p+="</table><br />",262220&a&&o.mtype<3&&(p+='<input type=button value="行動" onclick=deviceActionFunction() />'),p+='<input type=button value="ノート" onclick=showNotes('+!(128&a)+',"'+encodeURIComponent(o._id)+'") />',4==o.mtype&&1&x&&("PDU"==o.porttype?1==o.pwr?262144&a&&(p+='<input type=button value="消す" title="消す" onclick=setIpPduState(0) />'):8==o.pwr&&64&a&&(p+='<input type=button value="オンにする" title="オンにする" onclick=setIpPduState(1) />'):8&a&&(p+='<input type=button value="リモコン" title="リモコン" onclick=openIpKvmRemoteControl("'+encodeURIComponentEx(o._id)+'") />')),QH("p10html",p),3==o.mtype&&null!=o.agent&&o.agent.id>4&&512&features2&&(o.agent.caps=6),setupTerminal(),setupFiles(),16&a&&setupConsole(),p="<div style=float:right;font-size:x-small;margin-right:10px>",32768&a&&(p+='<a style=cursor:pointer onclick=p10showDeleteNodeDialog("'+o._id+'")>デバイスを削除</a>'),p+="</div><div style=font-size:x-small>",0!=webRelayPort&&(p+='<a onclick=p10WebRouter("'+o._id+'",1,'+(o.httpport?o.httpport:80)+")>HTTP"+(o.httpport&&80!=o.httpport?"/"+o.httpport:"")+"</a>&nbsp;",p+='<a onclick=p10WebRouter("'+o._id+'",2,'+(o.httpsport?o.httpsport:443)+")>HTTPS"+(o.httpsport&&443!=o.httpsport?"/"+o.httpsport:"")+"</a>&nbsp;"),(1&x||3==o.mtype)&&o.agent&&8&a&&!(536870912&features)&&(p+='<a id=rfbLink onclick=p10rfb("'+o._id+'")>Web-VNC</a>&nbsp;'),(1&x||3==o.mtype)&&o.agent&&8&a&&!(1073741824&features)&&(p+='<a id=mstscLink onclick=p10mstsc("'+o._id+'")>Web-RDP</a>&nbsp;'),512&features2&&(1&x||3==o.mtype)&&o.agent&&8&a&&(p+='<a id=sshLink onclick=p10ssh("'+o._id+'")>Web-SSH</a>&nbsp;'),p+="</div><br>",QH("p10html3",p);var M=PowerStateStr(o.state);1&x&&(M.length>0&&(M+=", "),M+=4==o.mtype?"PDU"==o.porttype?"スイッチ":"IP-KVM":"メッシュエージェント"),2&x?(M.length>0&&(M+=", "),M+="Intel&reg;接続されたAMT"):4&x&&(M.length>0&&(M+=", "),M+="Intel&reg; AMTが検出されました"),16&x&&(M.length>0&&(M+=", "),M+="MQTTチャネルが接続されました"),("PDU"==o.porttype||o.pwr>1&&7!=o.pwr)&&(M.length>0&&(M+=", "),M+=powerStateStrings[o.pwr]),QH("MainComputerState","<span style=font-size:12px>"+M+"</span>");var C=o.icon;o.conn&&0!=o.conn||3==o.mtype||(C+=" gray"),QH("MainComputerImage",'<div class="i'+C+'"></div>'),powerTimelineNode!=currentNode._id&&powerTimelineReq!=currentNode._id&&(QH("p10html2",""),powerTimelineReq=currentNode._id,meshserver.send({action:"powertimeline",nodeid:currentNode._id}),meshserver.send({action:"lastconnect",nodeid:currentNode._id}),meshserver.send({action:"getsysinfo",nodeid:currentNode._id}),meshserver.send({action:"getnetworkinfo",nodeid:currentNode._id}),QH("p10detailshtml","")),s&&(p11clearConsoleMsg(),p13clearConsoleMsg()),QV("p11DeskSessionSelector",!1),QH("p11DeskSessionSelector","")}setupDesktop(),t||(t=10),go(t),10==xxcurrentView&&setupDeviceMenu()}else goBack()}else setDialogMode(2,"アカウントのセキュリティ",1,null,"二要素認証が有効になるまでデバイスにアクセスできません。これは、追加のセキュリティのために必要です。 「マイアカウント」に移動して、「アカウントセキュリティ」セクションを確認します。");else setDialogMode(2,"アカウントのセキュリティ",1,null,"メールアドレスが確認されるまでデバイスにアクセスできません。これはパスワードの回復に必要です。 「マイアカウント」に移動して、メールアドレスを変更および確認します。")}function setIpPduState(e){0==e?setDialogMode(2,"電源操作",3,function(){meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:2})},"電源オフを実行しますか？"):setDialogMode(2,"電源操作",3,function(){meshserver.send({action:"wakedevices",nodeids:[currentNode._id]})},"電源を入れますか？")}function openIpKvmRemoteControl(e){if(!xxdialogMode){var t=decodeURIComponent(e).split("/")[2];safeNewWindow("/ipkvm.ashx/"+t+"/","ipkvm:"+t)}}function deviceToastFunction(){xxdialogMode||setDialogMode(2,"デバイストースト",3,deviceToastFunctionEx,"<textarea id=d2devToast style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>")}function deviceToastFunctionEx(){meshserver.send({action:"toast",nodeids:[currentNode._id],title:"MeshCentral",msg:Q("d2devToast").value})}function setupDeviceMenu(e,t){var n=GetNodeRights(currentNode);null!=e&&(currentDevicePanel=e),QV("p10general",0==currentDevicePanel),QV("p10desktop",1==currentDevicePanel),QV("p10files",2==currentDevicePanel),QV("p10details",3==currentDevicePanel),QV("p10console",4==currentDevicePanel),QV("p10terminal",5==currentDevicePanel);var o=[];0!=currentDevicePanel&&o.push({n:"全般",f:"setupDeviceMenu(0)"}),1==currentDevicePanel||null==currentNode||!(8&n||256&n)||4294967295!=n&&65536&n||!(null==currentNode.agent&&currentNode.intelamt&&("number"!=typeof currentNode.intelamt.sku||8&currentNode.intelamt.sku)||currentNode.agent&&1&currentNode.agent.caps)||o.push({n:"デスクトップ",f:"setupDeviceMenu(1)"}),5==currentDevicePanel||null==currentNode||!(8&n||256&n)||4294967295!=n&&512&n||!(null==currentNode.agent&&currentNode.intelamt&&("number"!=typeof currentNode.intelamt.sku||8&currentNode.intelamt.sku)||currentNode.agent&&2&currentNode.agent.caps)||o.push({n:"ターミナル",f:"setupDeviceMenu(5)"}),2!=currentDevicePanel&&null!=currentNode&&8&n&&(4294967295==n||!(1024&n))&&1!=currentNode.mtype&&currentNode.agent&&4&currentNode.agent.caps&&o.push({n:"ファイル",f:"setupDeviceMenu(2)"}),3!=currentDevicePanel&&null!=currentNode&&currentNode.mtype<3&&1048576&n&&o.push({n:"詳細",f:"setupDeviceMenu(3)"}),4!=currentDevicePanel&&null!=currentNode&&16&n&&2==currentNode.mtype&&o.push({n:"コンソール",f:"setupDeviceMenu(4)"}),updateFooterMenu(o),updateCurrentUrl(),1==currentDevicePanel&&deskAdjust()}function deviceActionFunction(){if(!xxdialogMode){var e=GetNodeRights(currentNode),t=0,n="このデバイスで実行する操作を選択します。<br /><br />",o="<select id=d2deviceop style=float:right;width:170px onchange=deviceActionFunctionValidate()>",i="";null!=currentNode.agent&&14==currentNode.agent.id?1&currentNode.conn&&8&e&&(t++,o+="<option value=400>フラッシュ</option>",o+="<option value=401>バイブレーション</option>",i+="<div id=d2devicetimediv>"+addHtmlValue("時間","<select id=d2devicetime style=float:right;width:170px><option value=1000>1秒</option><option value=5000>5秒</option><option value=10000>10秒</option></select>")+"</div>"):(64&e&&(t++,o+="<option value=100>目を覚ます</option>"),0!=currentNode.conn&&262144&e&&(t++,o+="<option value=4>睡眠</option><option value=3>リセットする</option><option value=2>電源を切る</option>"),null!=currentNode.intelamt&&2==currentNode.intelamt.state&&6&currentNode.conn&&262144&e&&(t++,o+="<option value=310>インテル&reg;AMTリセット</option>",o+="<option value=308>インテル&reg;AMTの電源オフ</option>"),null!=currentNode.intelamt&&2==currentNode.intelamt.state&&6&currentNode.conn&&64&e&&(t++,o+="<option value=302>インテル&reg;AMTパワーオン</option>")),n+=addHtmlValue("操作",o+="</select>"),0==t&&(n="現在、このデバイスで使用できるアクションはありません。"),setDialogMode(2,"デバイスアクション",0==t?2:3,deviceActionFunctionEx,n+i),t>0&&deviceActionFunctionValidate()}}function deviceActionFunctionValidate(){var e=Q("d2deviceop").value;try{QV("d2devicetimediv",400==e||401==e)}catch(e){}}function deviceActionFunctionEx(){var e=Q("d2deviceop").value;100==e?meshserver.send({action:"wakedevices",nodeids:[currentNode._id]}):103==e||104==e||106==e||107==e||(302==e?setDialogMode(2,"インテル&reg;AMTの電源操作",3,function(){meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:parseInt(e)})},"インテル&reg;AMTの電源をオンにしますか？"):308==e?setDialogMode(2,"インテル&reg;AMTの電源操作",3,function(){meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:parseInt(e)})},"Perform Intel&reg; AMT power off?<br><br><b>NOTE: If there is an active AMT session, then power off command will be rejected, so you must disconnect from the AMT session first!</b>"):310==e?setDialogMode(2,"インテル&reg;AMTの電源操作",3,function(){meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:parseInt(e)})},"インテル&reg;AMTリセットを実行しますか？"):400==e||401==e?meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:parseInt(e),time:parseInt(Q("d2devicetime").value)}):meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:parseInt(e)}))}function showNotes(e,t){if(!xxdialogMode){null==t&&(t=encodeURIComponentEx("p"+userinfo._id));var n="<textarea id=d2devNotes ro="+e+" noteid="+t+" readonly style=background-color:#fcf3cf;width:100%;height:200px;resize:none;overflow-y:scroll></textarea>";t.startsWith("node%2F%2F")&&(n+="<span style=font-size:10px>デバイスグループのメモは、他のデバイスグループ管理者が表示および変更できます。<span>"),setDialogMode(2,"ノート",3,showNotesEx,n,t),meshserver.send({action:"getNotes",id:decodeURIComponent(t)})}}function showNotesEx(e,t){meshserver.send({action:"setNotes",id:decodeURIComponent(t),notes:encodeURIComponentEx(Q("d2devNotes").value)})}function deviceLockFunction(){null==xxdialogMode&&0!=xxdialogMode||null==desktop||1!=desktop.contype||setDialogMode(2,"デスクトップをロックする",3,function(){null!=desktop&&1==desktop.contype&&desktop.sendCtrlMsg('{"ctrlChannel":"102938","type":"lock"}')},"ユーザーデスクトップをロックしますか？")}function deviceChat(e){xxdialogMode||setDialogMode(2,"デバイスアクション",3,function(){var t="/messenger?id=meshmessenger/"+encodeURIComponentEx(currentNode._id)+"/"+encodeURIComponentEx(userinfo._id)+"&title="+currentNode.name;""!=serverinfo.domainsuffix&&(t="/"+serverinfo.domainsuffix+t),null!=authCookie&&""!=authCookie&&(t+="&auth="+authCookie),e&&1==e.shiftKey?safeNewWindow(t,"meshmessenger:"+currentNode._id):safeNewWindow(t,"meshmessenger:"+currentNode._id,"directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=400,height=560"),meshserver.send({action:"meshmessenger",nodeid:decodeURIComponent(currentNode._id)})},"チャットセッションを開始しますか？")}function deviceUrlFunction(){xxdialogMode||(setDialogMode(2,"デバイスでページを開く",3,deviceUrlFunctionEx,'<input id=d2devurl placeholder="http://server.com" style=width:100%;overflow-y:scroll onkeyup=deviceUrlFunctionValidate() onchange=deviceUrlFunctionValidate()></input>'),Q("d2devurl").focus(),deviceUrlFunctionValidate())}function deviceUrlFunctionValidate(){var e=Q("d2devurl").value.toLowerCase();QE("idx_dlgOkButton",e.startsWith("http://")&&e.length>7||e.startsWith("https://")&&e.length>8)}function deviceUrlFunctionEx(){meshserver.send({action:"msg",type:"openUrl",nodeid:currentNode._id,url:Q("d2devurl").value})}function runDeviceCmd(e){xxdialogMode||d2runCommandDialog({nodeids:[e?decodeURIComponent(e):currentNode._id]})}function d2runCommandDialog(e){var t=!1,n=!1,o=!1;for(var i in e.nodeids){var a=getNodeFromId(e.nodeids[i]);a.agent&&(24&~GetNodeRights(a)||(o=!0),isWindowsNode(a)?t=!0:n=!0)}if(1==t||1==n||1==o){var s={type:1,runAs:0,source:1,cmd:""};try{s=JSON.parse(getstore("runopt",s))}catch(e){}if(e.selectedFile){var l=e.selectedFile.name.toLowerCase();console.log("filename",l),l.endsWith(".bat")&&(s.type=1),l.endsWith(".ps1")&&(s.type=2),l.endsWith(".sh")&&(s.type=3),l.endsWith(".agentconsole")&&(s.type=4)}var r="";e.title&&(r+=e.title+"<br />"),r+="<select id=d2cmdtype onclick=d2runCommandValidate() style=width:100%;margin-bottom:4px;margin-top:4px>",1==t&&(r+="<option value=1"+(1==s.type?" selected":"")+">Windowsコマンドプロンプト</option><option value=2"+(2==s.type?" selected":"")+">Windows PowerShell</option>"),1==n&&(r+="<option value=3"+(3==s.type?" selected":"")+">Linux / BSD / macOSコマンドシェル</option>"),1==o&&(r+="<option value=4"+(4==s.type?" selected":"")+">エージェントコンソール</option>"),r+="</select>",r+="<select id=d2cmduser style=width:100%;margin-bottom:4px><option value=0"+(0==s.runAs?" selected":"")+">エージェントとして実行</option><option value=1"+(1==s.runAs?" selected":"")+">ユーザーとして実行、ユーザーがいない場合はエージェント</option><option value=2"+(2==s.runAs?" selected":"")+">ユーザーとして実行する必要があります</option></select>",null==e.selectedFile&&(r+="<select id=d2cmdsource onclick=d2runCommandValidate() style=width:100%;margin-bottom:4px><option value=0"+(0==s.source?" selected":"")+">Commands from text box</option><option value=1"+(1==s.source?" selected":"")+">Commands from file</option>",8&userinfo.siteadmin&&(r+="<option value=2"+(2==s.source?" selected":"")+">Commands from file on server</option>"),r+="</select><textarea id=d2runcmd onkeyup=d2runCommandValidate() style=background-color:#fcf3cf;width:100%;height:200px;resize:none;overflow-y:scroll>"+(s.cmd?EscapeHtml(decodeURIComponent(s.cmd)):"")+"</textarea>",r+="<div id=d2runfile style=display:none><input id=d2runfileex type=file onchange=d2runCommandValidate() id=d2localFile name=files onchange=d2runCommandValidate() /></div>",8&userinfo.siteadmin&&(r+='<div id=d2runsfile style=display:none><div id=d2serveraction valign=bottom><input type=button id=p2FolderUp disabled="disabled" onclick=d3folderup() value="Up" />&nbsp;<span id=p2CurrentFolder></span></div><div id=d2serverfiles></div></div>')),setDialogMode(2,"コマンドを実行する",3,d2groupActionFunctionRunCommands,r,e),null==e.selectedFile&&(Q("d2runcmd").focus(),8&userinfo.siteadmin&&(d3fileoptions={dialog:2,files:"d2serverfiles",folderup:"p2FolderUp",currentFolder:"p2CurrentFolder",func:null},d3updatefiles())),d2runCommandValidate()}}function d2runCommandValidate(){if(QV("d2cmduser",Q("d2cmdtype").value<4),null==xxdialogTag.selectedFile){QV("d2runcmd",0==Q("d2cmdsource").value),QV("d2runfile",1==Q("d2cmdsource").value),QV("d2runsfile",2==Q("d2cmdsource").value);var e=!1;0==Q("d2cmdsource").value&&Q("d2runcmd").value.length>0&&(e=!0),1==Q("d2cmdsource").value&&1==Q("d2runfileex").files.length&&(e=!0),2==Q("d2cmdsource").value&&(e=!1),QE("idx_dlgOkButton",e)}else QE("idx_dlgOkButton",!0)}function d2groupActionFunctionRunCommands(e,t){var n=3;try{n=parseInt(Q("d2cmdtype").value)}catch(e){}null==t.selectedFile&&putstore("runopt",JSON.stringify({type:n,runAs:parseInt(Q("d2cmduser").value),source:parseInt(Q("d2cmdsource").value),cmd:encodeURIComponent(Q("d2runcmd").value)}));var o={action:"runcommands",nodeids:t.nodeids,type:n,runAsUser:parseInt(Q("d2cmduser").value)};if(t.selectedFile)(i=new FileReader).onload=function(e){o.cmds=e.target.result,meshserver.send(o),t.func&&t.func()},i.readAsText(t.selectedFile);else if(0==Q("d2cmdsource").value)o.cmds=Q("d2runcmd").value,meshserver.send(o),t.func&&t.func();else if(1==Q("d2cmdsource").value){var i;(i=new FileReader).onload=function(e){o.cmds=e.target.result,meshserver.send(o),t.func&&t.func()},i.readAsText(Q("d2runfileex").files[0])}else if(2==Q("d2cmdsource").value){var a=d3getFileSel();if(1!=a.length)return;o.cmdpath=d3filetreelocation.join("/")+"/"+a[0],meshserver.send(o),t.func&&t.func()}}function updateDeviceTimeline(){2==meshserver.State&&null!=powerTimelineNode&&null!=powerTimelineUpdate&&null!=currentNode&&3!=currentNode.mtype&&powerTimelineNode==powerTimelineReq&&currentNode._id==powerTimelineNode&&powerTimelineUpdate<Date.now()&&(powerTimelineUpdate=null,meshserver.send({action:"powertimeline",nodeid:currentNode._id}))}function drawDeviceTimeline(){if(3!=currentNode.mtype&&"true"!==hidePowerTimeline){var e=null,t=Date.now();currentNode._id==powerTimelineNode&&(e=powerTimeline);var n=new Date;n.setHours(0,0,0,0);(n=new Date(n.getTime()-5184e5)).getTime();var o=[];if(null!=e&&e.length>1){o.push([0,e[1],e[0]]);for(var i=e[1],a=2;a<e.length;a+=2){var s=e[a],l=t;e.length>a+1&&(l=e[a+1]),o.push([i,i+l,s]),i+=l}}var r="",d=1,u=new Date,c=Q("masthead").offsetWidth-122;u.setHours(0,0,0,0);for(a=0;a<7;a++){var p="",m=u.getTime(),g=m+864e5;for(var f in o){var h=o[f];if(1==isTimeBlockInside(m,g,h[0],h[1])){var v=Math.max(m,h[0]),k=Math.min(Math.min(g,h[1]),t),y=Math.round((k-v)*c/864e5);y>0&&(p+="<div style=display:table-cell;width:"+y+"px;background-color:"+powerColor(h[2])+";height:16px></div>")}}r+="<tr style="+(d%2==0?"background-color:#DDD":"")+"><td><div>&nbsp;"+printDate(u)+"<div></div></div></td><td><div>"+p+"</div></td></tr>",++d,u=new Date(u.getFullYear(),u.getMonth(),u.getDate()-1)}QH("p10html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse;width:calc(100% - 18px);margin:9px" border=0 cellpadding=2 cellspacing=0><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:90px>日</th><th scope=col style=text-align:center>電源状態</th></tr>'+r+"</tbody></table>")}else QH("p10html2","<br />")}function powerColor(e){return e<powerColorTable.length?powerColorTable[e]:"yellow"}function isTimeBlockInside(e,t,n,o){return n<e&&o>t||(n>e&&n<t||o>e&&o<t)}function addDeviceAttribute(e,t){return"<tr><td style=width:100px;color:gray>"+e+"</td><td style=overflow:hidden>"+t+"</td></tr>"}function editDeviceAmtSettings(e,t){if(!xxdialogMode){var n="",o=getNodeFromId(e),i=3;4&GetNodeRights(o)&&(n+=addHtmlValue("ユーザー名",'<input id=dp10username style=width:170px maxlength=32 autocomplete=nope placeholder="admin" onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />'),n+=addHtmlValue("パスワード","<input id=dp10password type=password style=width:170px autocomplete=nope maxlength=32 onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />"),1&features2||(n+=addHtmlValue("セキュリティ","<select id=dp10tls style=width:176px><option value=0>TLSセキュリティなし</option><option value=1>TLSセキュリティが必要</option></select>")),null!=o.intelamt.user&&""!=o.intelamt.user&&(i=7),setDialogMode(2,"Intelを編集&reg; AMTクレデンシャル",i,editDeviceAmtSettingsEx,n,{node:o,func:t}),null!=o.intelamt.user&&""!=o.intelamt.user?Q("dp10username").value=o.intelamt.user:Q("dp10username").value="admin",1&features2||(Q("dp10tls").value=o.intelamt.tls),validateDeviceAmtSettings())}}function validateDeviceAmtSettings(){QE("idx_dlgOkButton",passwordcheck(Q("dp10password").value))}function editDeviceAmtSettingsEx(e,t){if(2==e)meshserver.send({action:"changedevice",nodeid:t.node._id,intelamt:{user:"",pass:""}});else{var n=Q("dp10username").value;""==n&&(n="admin");var o=Q("dp10password").value;""==o&&(n="");var i={action:"changedevice",nodeid:t.node._id,intelamt:{user:n,pass:o}};1&features2||(i.intelamt.tls=parseInt(Q("dp10tls").value)),meshserver.send(i),t.func&&setTimeout(t.func,1e3)}}function p10showDeleteNodeDialog(e){xxdialogMode||(setDialogMode(2,"ノードを削除",3,p10showDeleteNodeDialogEx,format("{0}を削除しますか？",EscapeHtml(currentNode.name))+"<br /><br /><label><input id=p10check type=checkbox onchange=p10validateDeleteNodeDialog() />承認する</label>",e),p10validateDeleteNodeDialog())}function p10validateDeleteNodeDialog(){QE("idx_dlgOkButton",Q("p10check").checked)}function p10showDeleteNodeDialogEx(e,t){meshserver.send({action:"removedevices",nodeids:[t]})}function p10WebRouter(e,t,n,o){var i=null,a=getNodeFromId(e);if(3==a.mtype){var s=meshes[a.meshid];s&&s.relayid&&(i=s.relayid,o=a.host)}var l=serverinfo.name;(-1==l.indexOf(".")||2&features)&&(l=window.location.hostname),""!=webRelayDns&&(l=webRelayDns);var r="https://"+l+":"+webRelayPort+"/control-redirect.ashx?n="+e+"&p="+n+"&appid="+t+"&c="+authRelayCookie;return null!=o&&(r+="&addr="+o),null!=i&&(r+="&relayid="+i),safeNewWindow(r,"WebRelay"),!1}function p10rfb(e,t){var n=getNodeFromId(e),o=null,i=meshes[n.meshid];null==t&&(t=null!=n.rfbport?n.rfbport:5900),3==n.mtype&&i&&i.relayid&&(e=i.relayid,o=n.host),meshserver.send({action:"getcookie",nodeid:e,tcpport:t,tcpaddr:o,tag:"novnc",name:i?i.name:null})}function p10mstsc(e,t){var n=getNodeFromId(e),o=meshes[n.meshid];null==t&&(t=null!=n.rdpport?n.rdpport:3389),meshserver.send({action:"getcookie",nodeid:e,tcpport:t,tag:"mstsc",name:o?o.name:null})}function p10ssh(e,t){var n=getNodeFromId(e),o=meshes[n.meshid];null==t&&(t=null!=n.sshport?n.sshport:22),meshserver.send({action:"getcookie",nodeid:e,tcpport:t,tag:"ssh",name:o?o.name:null})}function p10showiconselector(){if(!xxdialogMode&&4&GetNodeRights(currentNode)){setDialogMode(2,"アイコンの選択",0,null,"<table align=center><td style=text-align:center><div style=display:inline-block class=i1 onclick=p10setIcon(1)></div><div style=display:inline-block class=i2 onclick=p10setIcon(2)></div><div style=display:inline-block class=i3 onclick=p10setIcon(3)></div><div style=display:inline-block class=i4 onclick=p10setIcon(4)></div><br /><div style=display:inline-block class=i5 onclick=p10setIcon(5)></div><div style=display:inline-block class=i6 onclick=p10setIcon(6)></div><div style=display:inline-block class=i7 onclick=p10setIcon(7)></div><div style=display:inline-block class=i8 onclick=p10setIcon(8)></div></table>"),QV("id_dialogclose",!0)}}function p10setIcon(e){setDialogMode(0),meshserver.send({action:"changedevice",nodeid:currentNode._id,icon:e})}function showClearSshDialog(){setDialogMode(2,"デバイスを編集",3,showClearSshDialogEx,"SSHクレデンシャルをクリアしますか？")}function showClearSshDialogEx(e,t){meshserver.send({action:"changedevice",nodeid:currentNode._id,ssh:0})}function showClearRdpDialog(){setDialogMode(2,"デバイスを編集",3,showClearRdpDialogEx,"RDPクレデンシャルをクリアしますか？")}function showClearRdpDialogEx(e,t){meshserver.send({action:"changedevice",nodeid:currentNode._id,rdp:0})}var desktop,desktopNode,showEditNodeValueDialog_modes=["装置名","ホスト名","説明","タグ"],showEditNodeValueDialog_modes2=["name","host","desc","tags"],showEditNodeValueDialog_modes3=["","","","Group1、Group2、Group3"];function showEditNodeValueDialog(e){if(!xxdialogMode){var t=addHtmlValue(showEditNodeValueDialog_modes[e],'<input id=dp10devicevalue style=width:170px maxlength=64 placeholder="'+showEditNodeValueDialog_modes3[e]+'" onchange=p10editdevicevalueValidate('+e+",event) onkeyup=p10editdevicevalueValidate("+e+",event) />");if(3==e){var n=[],o="";for(var i in nodes)if(nodes[i].tags)for(var a in nodes[i].tags)-1==n.indexOf(nodes[i].tags[a])&&n.push(nodes[i].tags[a]);if(n.length>0){for(var i in n.sort(),n)o+='<span style=padding:4px;background-color:#BBB;border-radius:3px;cursor:pointer onclick=showEditNodeValueDialogAddTag("'+encodeURIComponentEx(n[i])+'")>'+EscapeHtml(n[i])+"</span> ";t+="<div style=margin-top:8px;width:280px;line-height:26px;max-height:160px;overflow-y:auto>"+o+"</div>"}}setDialogMode(2,"デバイスを編集",3,showEditNodeValueDialogEx,t,e);var s=currentNode[showEditNodeValueDialog_modes2[e]];null==s&&(s=""),Array.isArray(s)&&(s=s.join(", ")),Q("dp10devicevalue").value=s,p10editdevicevalueValidate(),Q("dp10devicevalue").focus()}}function showEditNodeValueDialogAddTag(e){var t=Q("dp10devicevalue").value.split(","),n=[];for(var o in t)n.push(t[o].trim());n.indexOf(e)>=0||(Q("dp10devicevalue").value+=(0==Q("dp10devicevalue").value.length?"":", ")+decodeURIComponent(e),setTimeout(function(){Q("dp10devicevalue").selectionStart=Q("dp10devicevalue").selectionEnd=9e4},0),p10editdevicevalueValidate())}function showEditNodeValueDialogEx(e,t){var n={action:"changedevice",nodeid:currentNode._id};n[showEditNodeValueDialog_modes2[t]]=Q("dp10devicevalue").value,meshserver.send(n)}function p10editdevicevalueValidate(e,t){var n=e>1||Q("dp10devicevalue").value.length>0;QE("idx_dlgOkButton",n),null!=t&&1==n&&13==t.keyCode&&dialogclose(1)}var desktopsettings={encoding:2,showfocus:!1,showmouse:!0,showcad:!0,quality:40,scaling:1024,framerate:50,autolock:!1,agentencoding:4};function setupDesktop(){desktopNode!=currentNode&&null!=desktop&&(desktop.Stop(),desktopNode=null,desktop=null),desktopNode==currentNode&&null!=desktop||(desktopNode=currentNode,Q("Desk").addEventListener("DOMMouseScroll",function(e){return dmousewheel(e)}),Q("Desk").addEventListener("mousewheel",function(e){return dmousewheel(e)})),desktopNode=currentNode,updateDesktopButtons(),Q("Desk").toBlob||QV("deskSaveBtn",!1)}function updateDesktopButtons(){meshes[currentNode.meshid];var e=0;null!=desktop&&(e=desktop.State);var t=GetNodeRights(currentNode);QV("disconnectbutton1",0!=e),QE("deskFullScreen",0!=e),QV("connectbutton1",0==e&&(8&t||256&t)&&null!=currentNode.agent&&1&currentNode.agent.caps),QV("connectbutton1h",0==e&&8&t&&null!=currentNode.intelamt&&2==currentNode.intelamt.state&&null!=currentNode.intelamt.ver&&(null==currentNode.intelamt.sku||"number"==typeof currentNode.intelamt.sku&&!!(8&currentNode.intelamt.sku))),QV("d7amtkvm",!(null==currentNode.intelamt||"number"==typeof currentNode.intelamt.sku&&16&currentNode.intelamt.sku||null==currentNode.intelamt.ver&&null!=currentNode.agent||0!=e&&2!=desktop.contype)),QV("d7meshkvm",null!=currentNode.agent&&1&currentNode.agent.caps&&(0==e||1==desktop.contype));var n=!!(1&currentNode.conn);QE("connectbutton1",n);var o=!!(6&currentNode.conn);QE("connectbutton1h",o),QV("DeskToastButton",!!(16384&t)&&currentNode.agent&&currentNode.agent.id<5&&8&t),QV("deskActionsBtn",8&t),Q("DeskControl").checked=!!(8&t),0==n&&QV("DeskTools",!1)}var agentConsoleMessages=["","ユーザーがアクセスを許可するのを待っています...","拒否されました","リモートターミナルセッションの開始に失敗しました、{0}（{1}）","タイムアウト","無効なネットワークデータを受信しました"];function formatAgentConsoleMessage(e,t,n){for(null==n&&(n=[]);n.length<3;)n.push("");return(t&&t<agentConsoleMessages.length?EscapeHtml(format(agentConsoleMessages[t],n[0],n[1],n[2])):EscapeHtml(e)).split("\n").join("<br />")+"<br /><br />"}function connectDesktop(e,t,n,o){if(setSessionActivity(),QV("p11DeskSessionSelector",!1),p11clearConsoleMsg(),null==desktop)if(desktopNode=currentNode,2==t){if(null==desktopNode.intelamt.user||""==desktopNode.intelamt.user)return void editDeviceAmtSettings(desktopNode._id,connectDesktop);(desktop=CreateAmtRedirect(CreateAmtRemoteDesktop("Desk"),authCookie)).debugmode=debugmode,desktop.onStateChanged=onDesktopStateChange,desktop.m.bpp=1==desktopsettings.encoding||3==desktopsettings.encoding?1:2,desktop.m.useZRLE=desktopsettings.encoding<3,desktop.m.showmouse=!0,desktop.m.onScreenSizeChange=function(e,t,n){fullscreen&&(QS("deskarea3").width=t*fullscreenzoom+"px",QS("deskarea3").height=n*fullscreenzoom+"px"),deskAdjust()},4==desktopNode.conn&&null!=desktopNode.intelamt&&1==desktopNode.intelamt.tls?desktop.Start(desktopNode._id,16995,"*","*",1):desktop.Start(desktopNode._id,16994,"*","*",0),desktop.contype=2}else null==t||1==t||3==t&&currentNode.agent.id>4?((desktop=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("Desk"),serverPublicNamePort,authCookie,authRelayCookie,domainUrl)).debugmode=debugmode,desktop.m.debugmode=debugmode,desktop.attemptWebRTC=attemptWebRTC,desktop.webrtcconfig=webrtcconfiguration,desktop.options={},null!=n&&(desktop.options.tsid=n),null!=o&&(desktop.options.consent=o),1==desktopsettings.autolock&&(desktop.options.autolock=!0),desktop.onStateChanged=onDesktopStateChange,8192&features2&&(desktop.m.stopInput=!0),desktop.onConsoleMessageChange=function(){desktop.consoleMessage?(Q("p11DeskConsoleMsg").innerHTML+=formatAgentConsoleMessage(desktop.consoleMessage,desktop.consoleMessageId,desktop.consoleMessageArgs),QV("p11DeskConsoleMsg",!0),null!=p11DeskConsoleMsgTimer&&clearTimeout(p11DeskConsoleMsgTimer),desktop.consoleMessageTimeout&&(p11DeskConsoleMsgTimer=setTimeout(p11clearConsoleMsg,1e3*desktop.consoleMessageTimeout))):p11clearConsoleMsg()},desktop.m.ImageType=desktopsettings.agentencoding,desktop.m.CompressionLevel=desktopsettings.quality,desktop.m.ScalingLevel=desktopsettings.scaling,desktop.m.FrameRateTimer=desktopsettings.framerate,desktop.m.onDisplayinfo=deskDisplayInfo,desktop.m.onScreenSizeChange=function(e,t,n){fullscreen&&(QS("deskarea3").width=t*fullscreenzoom+"px",QS("deskarea3").height=n*fullscreenzoom+"px"),deskAdjust()},desktop.Start(desktopNode._id),desktop.contype=1):3==t&&meshserver.send({action:"msg",type:"userSessions",nodeid:currentNode._id,tag:o});else desktop.Stop(),desktopNode=desktop=null}function p11clearConsoleMsg(){QH("p11DeskConsoleMsg",""),QV("p11DeskConsoleMsg",!1),p11DeskConsoleMsgTimer&&(clearTimeout(p11DeskConsoleMsgTimer),p11DeskConsoleMsgTimer=null)}function p12clearConsoleMsg(){QH("p12TermConsoleMsg",""),QV("p12TermConsoleMsg",!1),p12TermConsoleMsgTimer&&(clearTimeout(p12TermConsoleMsgTimer),p12TermConsoleMsgTimer=null)}function p13clearConsoleMsg(){QH("p13FilesConsoleMsg",""),QV("p13FilesConsoleMsg",!1),p13FilesConsoleMsgTimer&&(clearTimeout(p13FilesConsoleMsgTimer),p13FilesConsoleMsgTimer=null)}function p12setConsoleMsg(e,t){e?(Q("p12TermConsoleMsg").innerHTML+=e,QV("p12TermConsoleMsg",!0),null!=p12TermConsoleMsgTimer&&clearTimeout(p12TermConsoleMsgTimer),t&&(p12TermConsoleMsgTimer=setTimeout(p12clearConsoleMsg,t))):p12clearConsoleMsg()}function p13setConsoleMsg(e,t){e?(Q("p13FilesConsoleMsg").innerHTML+=e,QV("p13FilesConsoleMsg",!0),null!=p13FilesConsoleMsgTimer&&clearTimeout(p13FilesConsoleMsgTimer),t&&(p13FilesConsoleMsgTimer=setTimeout(p13clearConsoleMsg,t))):p13clearConsoleMsg()}function onDesktopStateChange(e,t){var n=t;3==n&&2==e.contype&&n++;var o=StatusStrs[n];if(null!=desktop&&1==desktop.webRtcActive&&(o+="、WebRTC"),QH("deskstatus",o),0===t)desktop.Stop(),desktopNode=desktop=null,QV("DeskScreens",!1),1==fullscreen&&deskToggleFull();updateDesktopButtons(),deskAdjust(),setTimeout(deskAdjust,50)}function showDesktopSettings(){xxdialogMode||(applyDesktopSettings(),updateDesktopButtons(),setDialogMode(7,"リモートデスクトップ設定",3,showDesktopSettingsChanged))}function showDesktopSettingsChanged(){desktopsettings.encoding=d7desktopmode.value,desktopsettings.quality=d7bitmapquality.value,desktopsettings.scaling=d7bitmapscaling.value,desktopsettings.framerate=d7framelimiter.value,desktopsettings.autolock=d7deskAutoLock.checked,desktopsettings.agentencoding=d7encoding.value,localStorage.setItem("desktopsettings",JSON.stringify(desktopsettings)),applyDesktopSettings(),desktop&&(1==desktop.contype&&(0!=desktop.State&&desktop.m.SendCompressionLevel(desktopsettings.agentencoding,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate),desktop.sendCtrlMsg('{"ctrlChannel":"102938","type":"autolock","value":'+desktopsettings.autolock+"}"),desktop.m.SendRefresh()),2==desktop.contype&&0!=desktop.State&&(desktop.Stop(),setTimeout(function(){connectDesktop(null,2)},50)))}function applyDesktopSettings(){var e="",t=512&features?[100,90,70,50,40,30,20,10,5,1]:[50,40,30,20,10,5,1];for(var n in t)e+="<option value="+t[n]+">"+t[n]+"%</option>";QH("d7bitmapquality",e),d7desktopmode.value=desktopsettings.encoding,d7bitmapquality.value=40,desktopsettings.agentencoding?d7encoding.value=desktopsettings.agentencoding:desktopsettings.agentencoding=4,t.indexOf(parseInt(desktopsettings.quality))>=0&&(d7bitmapquality.value=desktopsettings.quality),d7bitmapscaling.value=desktopsettings.scaling,desktopsettings.framerate&&(d7framelimiter.value=desktopsettings.framerate),null!=desktopsettings.autolock&&(d7deskAutoLock.checked=desktopsettings.autolock)}var keyboardShown=!1,keyboardShownTimer=null,fullScreenMode=!1;function toggleKeyboard(){xxdialogMode||(null!=keyboardShownTimer&&clearTimeout(keyboardShownTimer),keyboardShown?(Q("softKeyboard").blur(),keyboardShown=!1):(Q("softKeyboard").focus(),keyboardShown=!0),QV("deskkeybutton2a",fullscreen&&!keyboardShown),QV("deskkeybutton2b",fullscreen&&keyboardShown))}function keyboardFocusChange(){keyboardShownTimer=setTimeout(function(){keyboardShownTimer=null,keyboardShown=Q("softKeyboard")==document.activeElement,QV("deskkeybutton2a",fullscreen&&!keyboardShown),QV("deskkeybutton2b",fullscreen&&keyboardShown)},10)}function exitButton(){xxdialogMode||(QV("deskButtonMenu",!1),QV("termButtonMenu",!1),deskToggleFull())}function deskMenuButton(e){toggleMenu(!0),deskSendKeys(e)}function updateDeskShortcutKeys(){var e='<div class="menuButton" onclick="deskMenuButton(-1)">カスタマイズ</div>';for(var t in deskKeyboardShortcuts)e+='<div class="menuButton" onclick="deskMenuButton('+deskKeyboardShortcuts[t]+')">'+keyShortcutTotext(deskKeyboardShortcuts[t])+"</div>";QH("deskButtonMenu",e)}var keyStrings={8:"BackSpace",9:"タブ",13:"入る",27:"エスケープ",32:"Space",44:"印刷画面",45:"入れる",46:"Del",36:"ホーム",35:"終わり",32:"Espace",33:"ページアップ",34:"ページダウン",37:"左",38:"アップ",39:"右",40:"下",0:"なし"};function keyShortcutTotext(e){var t=[];return 65536&e&&t.push("シフト"),131072&e&&t.push("Alt"),524288&e&&t.push("Ctrl"),1048576&e&&t.push("Win"),(e&=65535)>=112&&e<=123?t.push("F"+(e-111)):0!=e&&keyStrings[e]?t.push(keyStrings[e]):0!=e&&t.push(String.fromCharCode(e)),t.join(" + ")}function deskCustomizeKeys(){if(!xxdialogMode){var e='<div id=d2shortcuts style="width:100%;height:180px;padding:4px;overflow-y:auto;border:1px solid gray"></div><div style=width:100%;padding:5px>';for(var t in e+="<label><input id=d1kshift type=checkbox /> シフト</label><label> <input id=d1kalt type=checkbox /> Alt</label><label> <input id=d1kctrl type=checkbox /> Ctrl</label> <input id=d1kwin type=checkbox /> Win</label>",e+=" <select id=d2keySelect>",keyStrings)e+="<option value="+t+">"+keyStrings[t]+"</option>";for(t=1;t<=12;t++)e+="<option value="+(t+111)+">F"+t+"</option>";for(t=0;t<10;t++)e+="<option value="+(t+48)+">"+t+"</option>";for(t=0;t<26;t++)e+="<option value="+(t+65)+">"+String.fromCharCode(t+65)+"</option>";e+="</select> <input type=button value=追加 onclick=addDeskCustomizeKey() /></div>",QH("p10dialog2",e),xxdialogMode=2,QV("p10dialog",!0),deskUpdateShortcutList()}}function deskCustomizeKeysEx(){QV("p10dialog",!1),xxdialogMode=0,putstore("deskKeyShortcuts",deskKeyboardShortcuts.join(",")),updateDeskShortcutKeys()}function restoreDeskCustomizeKey(){deskKeyboardShortcuts=[],putstore("deskKeyShortcuts",null);var e=getstore("deskKeyShortcuts","0x0A002E,0x100000,0x100028,0x100026,0x10004C,0x10004D,0x11004D,0x100052,0x020073,0x080057,0x020009,0x100025,0x100027").split(",");for(var t in e)""!=e[t]&&deskKeyboardShortcuts.push(parseInt(e[t]));updateDeskShortcutKeys(),deskUpdateShortcutList()}function deskUpdateShortcutList(){var e="";for(var t in deskKeyboardShortcuts){var n=keyShortcutTotext(deskKeyboardShortcuts[t]),o="";t!=deskKeyboardShortcuts.length-1&&(o+='<img width=8 height=8 style=float:right;cursor:pointer;padding:3px src="images/c2.png" onclick=deskCustomizeKeyDown('+deskKeyboardShortcuts[t]+")>"),0!=t&&(o+='<img width=8 height=8 style=float:right;cursor:pointer;padding:3px src="images/c3.png" onclick=deskCustomizeKeyUp('+deskKeyboardShortcuts[t]+")>"),e+='<div style="width:100%;background-color:#AAA;border-radius:4px;margin-bottom:4px;padding:4px;text-align:left;box-sizing:border-box" value='+deskKeyboardShortcuts[t]+">"+n+'<img width=10 height=10 style=float:right;cursor:pointer;padding:2px;margin-left:8px src="images/trash.png" onclick=removeDeskCustomizeKey('+deskKeyboardShortcuts[t]+")>"+o+"</div>"}""==e&&(e="<i>キーボードショートカットが定義されていません</i>"),QH("d2shortcuts",e)}function deskCustomizeKeyDown(e){var t=deskKeyboardShortcuts.indexOf(e),n=deskKeyboardShortcuts[t+1];deskKeyboardShortcuts[t+1]=deskKeyboardShortcuts[t],deskKeyboardShortcuts[t]=n,deskUpdateShortcutList()}function deskCustomizeKeyUp(e){var t=deskKeyboardShortcuts.indexOf(e),n=deskKeyboardShortcuts[t];deskKeyboardShortcuts[t]=deskKeyboardShortcuts[t-1],deskKeyboardShortcuts[t-1]=n,deskUpdateShortcutList()}function removeDeskCustomizeKey(e){var t=[];for(var n in deskKeyboardShortcuts)deskKeyboardShortcuts[n]!=e&&t.push(deskKeyboardShortcuts[n]);deskKeyboardShortcuts=t,deskUpdateShortcutList()}function addDeskCustomizeKey(){var e=parseInt(Q("d2keySelect").value);Q("d1kshift").checked&&(e|=65536),Q("d1kalt").checked&&(e|=131072),Q("d1kctrl").checked&&(e|=524288),Q("d1kwin").checked&&(e|=1048576),e>0&&-1==deskKeyboardShortcuts.indexOf(e)&&(deskKeyboardShortcuts.push(e),deskUpdateShortcutList())}function deskSendKeys(e){if(!xxdialogMode&&null!=desktop&&3==desktop.State)if(-1!=e)if(655406!=e){var t=(16711680&e)>>16,n=65535&e,o=[],i=[],a={8:65288,9:65289,13:65293,27:65307,45:65379,46:65535,36:65360,35:65367,33:65365,34:65366,37:65361,38:65362,39:65363,40:65364,112:65470,113:65471,114:65472,115:65473,116:65474,117:65475,118:65476,119:65477,120:65478,121:65479,122:65480,123:65481};if(2==desktop.contype){1&t&&(o.push([65505,1]),i.push([65505,0])),2&t&&(o.push([65513,1]),i.push([65513,0])),8&t&&(o.push([65507,1]),i.push([65507,0])),16&t&&(o.push([65511,1]),i.push([65511,0])),a[n]&&(n=a[n]),n>=65&&n<=90&&(n+=32),0!=n&&(o.push([n,1]),i.push([n,0])),i.reverse();for(var s=0;s<i.length;s++)o.push(i[s]);desktop.m.sendkey(o)}else{1&t&&(o.push([desktop.m.KeyAction.DOWN,16]),i.push([desktop.m.KeyAction.UP,16])),2&t&&(o.push([desktop.m.KeyAction.EXDOWN,18]),i.push([desktop.m.KeyAction.EXUP,18])),8&t&&(o.push([desktop.m.KeyAction.EXDOWN,17]),i.push([desktop.m.KeyAction.EXUP,17])),16&t&&(o.push([desktop.m.KeyAction.EXDOWN,91]),i.push([desktop.m.KeyAction.EXUP,91])),0!=n&&(o.push([desktop.m.KeyAction.DOWN,n]),i.push([desktop.m.KeyAction.UP,n])),i.reverse();for(s=0;s<i.length;s++)o.push(i[s]);desktop.m.SendKeyMsgKC(o)}}else desktop.m.sendcad();else deskCustomizeKeys()}function toggleMenu(e){xxdialogMode||(QV("deskButtonMenu",fullscreen&&!e&&1==currentDevicePanel),QV("termButtonMenu",fullscreen&&!e&&5==currentDevicePanel),QV("deskkeybutton3a",fullscreen&&e),QV("deskkeybutton3b",fullscreen&&!e))}function deskChangeMouseButton(e){xxdialogMode||null!=desktop&&(desktop.m.SwapMouse=!desktop.m.SwapMouse,QV("deskkeybutton4a",fullscreen&&!desktop.m.SwapMouse),QV("deskkeybutton4b",fullscreen&&desktop.m.SwapMouse))}function deskChangeFullscreenZoom(){if(!xxdialogMode){if(1==currentDevicePanel){if(null==desktop)return;fullscreenzoom=1==fullscreenzoom?.5:1,QV("deskkeybutton5a",fullscreen&&1==fullscreenzoom),QV("deskkeybutton5b",fullscreen&&1!=fullscreenzoom),QS("deskarea3").width=desktop.m.ScreenWidth*fullscreenzoom+"px",QS("deskarea3").height=desktop.m.ScreenHeight*fullscreenzoom+"px",deskAdjust()}if(5==currentDevicePanel){if(null==terminal)return;xterm.setOption("fontSize",15==xterm.getOption("fontSize")?10:15)}}}var terminalNode,filesNode,fullscreen=!1,fullscreenzoom=1;function deskToggleFull(){fullscreen=!fullscreen,QV("mastheadx",!fullscreen),QV("masthead",!fullscreen),QV("topbar",!fullscreen),QV("p11deviceNameHeader",!fullscreen),QV("footer",!fullscreen),QV("column_l_bottomgap",!fullscreen),QV("idx_deskFullBtn2",fullscreen),QV("deskFullBtn",!fullscreen),QV("p10deskTopTable",!fullscreen),QV("deskarea1",!fullscreen),QV("deskarea4",!fullscreen),QV("termarea1",!fullscreen),QV("termarea4",!fullscreen);var e=GetNodeRights(currentNode),t=!(8192&features2||14==currentNode.agent.id||4294967295!=e&&(!(8&e)||256&e||4096&e));QV("deskkeybutton1",fullscreen),1==currentDevicePanel&&(QS("deskkeybutton2a").top=QS("deskkeybutton2b").top="210px",QS("deskkeybutton5a").top=QS("deskkeybutton5b").top=t?"160px":"60px",QV("deskkeybutton2a",fullscreen&&t),QV("deskkeybutton2b",!1),QV("deskkeybutton3a",fullscreen&&t),QV("deskkeybutton3b",!1),QV("deskkeybutton4a",fullscreen&&t&&!desktop.m.SwapMouse),QV("deskkeybutton4b",fullscreen&&t&&desktop.m.SwapMouse),QV("deskkeybutton5a",fullscreen&&1==fullscreenzoom),QV("deskkeybutton5b",fullscreen&&1!=fullscreenzoom)),5==currentDevicePanel&&(QS("deskkeybutton2a").top=QS("deskkeybutton2b").top="110px",QV("deskkeybutton2a",fullscreen),QV("deskkeybutton2b",!1),QV("deskkeybutton3a",fullscreen),QV("deskkeybutton3b",!1),QV("deskkeybutton4a",!1),QV("deskkeybutton4b",!1),QV("deskkeybutton5a",!1),QV("deskkeybutton5a",!1)),fullscreen?(QS("DeskParent").height=null,QS("page_content").top="0px",QS("page_content").bottom="0px",1==currentDevicePanel&&(QS("p10desktop").top="0px",QS("p10desktop").overflow="scroll",QS("deskarea3").top="0px",QS("deskarea3").width=desktop.m.ScreenWidth*fullscreenzoom+"px",QS("deskarea3").height=desktop.m.ScreenHeight*fullscreenzoom+"px",QS("deskarea3")["padding-right"]="55px"),5==currentDevicePanel&&(QS("p10terminal").top="0px",QS("p10terminal").overflow="scroll",QS("termarea3").top="0px",QS("termarea3").bottom=null,QS("termarea3").right=null,QS("termarea3")["padding-right"]="55px",QS("termarea3").height="100%"),QS("body")["background-color"]="#000",QS("p10")["background-color"]="#000"):(QS("DeskParent").height="100%",QS("page_content").top="50px",QS("page_content").bottom="32px",1==currentDevicePanel&&(QS("p10desktop").top="55px",QS("p10desktop").overflow="hidden",QS("deskarea3").top="32px",QS("deskarea3").left=null,QS("deskarea3").width="100%",QS("deskarea3").height="calc(100% - 64px)",QS("deskarea3")["padding-right"]="",QS("DeskParent")["margin-top"]=null,QS("DeskParent")["margin-left"]=null),5==currentDevicePanel&&(QS("p10terminal").top="55px",QS("p10terminal").overflow="hidden",Q("p10terminal").scrollTop=0,Q("p10terminal").scrollLeft=0,QS("termarea3").top="32px",QS("termarea3").bottom="32px",QS("termarea3")["padding-right"]=null,QS("termarea3").height="calc(100% - 60px)"),QS("body")["background-color"]=nightMode?"#000":"#FFF",QS("p10")["background-color"]=null),1==currentDevicePanel&&deskAdjust()}function deskAdjust(){if(1==currentDevicePanel)if(fullscreen){QS("Desk")["margin-top"]=null,QS("Desk")["margin-bottom"]=null,QS("Desk").width="100%",QS("Desk").height="100%";var e=Q("p10desktop").clientHeight,t=Q("p10desktop").clientWidth,n=Q("deskarea3").clientHeight,o=Q("deskarea3").clientWidth-55;QS("deskarea3").top=e>n?(e-n)/2+"px":null,QS("deskarea3").left=t>o?(t-o)/2+"px":null}else{if((e=Q("DeskParent").clientHeight)/(t=Q("DeskParent").clientWidth)>(n=Q("Desk").height)/(o=Q("Desk").width)){var i=n*t/o+"px";QS("Desk").height=i,QS("Desk").width="100%"}else{var a=o*e/n+"px";QS("Desk").width=a,QS("Desk").height="100%"}QS("DeskParent").overflow="hidden";var s=(Q("DeskParent").clientHeight-Q("Desk").clientHeight)/2;QS("Desk")["margin-top"]=s+"px",QS("Desk")["margin-bottom"]=s+"px"}}function sendSpecialKeys(){xxdialogMode||null==desktop||3!=desktop.State||setDialogMode(3,"特別なキー",3,deskSendKeys)}function deskSaveImage(){if(setSessionActivity(),!xxdialogMode&&null!=desktop&&3==desktop.State){var e=new Date,t="Desktop-"+currentNode.name+"-"+e.getFullYear()+"-"+("0"+(e.getMonth()+1)).slice(-2)+"-"+("0"+e.getDate()).slice(-2)+"-"+("0"+e.getHours()).slice(-2)+"-"+("0"+e.getMinutes()).slice(-2);Q("Desk").toBlob(function(e){saveAs(e,t+".png")})}}function deskSelectScreens(){if(!xxdialogMode&&null!=desktop&&3==desktop.State){var e="",t=desktop.m.displays;for(var n in t)e+="<option value="+n+" "+(desktop.m.selectedDisplay==n?" selected":"")+">"+t[n]+"</option>";setDialogMode(2,"画面選択",3,deskSelectScreensEx,e=addHtmlValue4("画面","<select style=width:100% id=deskdisplays>"+e+"</select>"))}}function deskSelectScreensEx(){null!=desktop&&3==desktop.State&&desktop.m.SetDisplay(parseInt(Q("deskdisplays").value))}function deskDisplayInfo(e,t,n,o){var i=0;for(var a in t)i++;QV("DeskScreens",i>1)}function dmousedown(e){setSessionActivity(),xxdialogMode||null==desktop||(fullscreen&&(e.addx=Q("p10desktop").scrollLeft*(1/fullscreenzoom),e.addy=Q("p10desktop").scrollTop*(1/fullscreenzoom)),desktop.m.mousedown(e))}function dmouseup(e){setSessionActivity(),xxdialogMode||null==desktop||(fullscreen&&(e.addx=Q("p10desktop").scrollLeft*(1/fullscreenzoom),e.addy=Q("p10desktop").scrollTop*(1/fullscreenzoom)),desktop.m.mouseup(e))}function dmousemove(e){setSessionActivity(),xxdialogMode||null==desktop||(fullscreen&&(e.addx=Q("p10desktop").scrollLeft*(1/fullscreenzoom),e.addy=Q("p10desktop").scrollTop*(1/fullscreenzoom)),desktop.m.mousemove(e))}function dmousewheel(e){return setSessionActivity(),!(xxdialogMode||null==desktop||!desktop.m.mousewheel)&&(fullscreen&&(e.addx=Q("p10desktop").scrollLeft*(1/fullscreenzoom),e.addy=Q("p10desktop").scrollTop*(1/fullscreenzoom)),desktop.m.mousewheel(e),haltEvent(e),!0)}function drotate(e){xxdialogMode||null==desktop||(desktop.m.setRotation(desktop.m.rotation+e),deskAdjust())}function setupTerminal(){terminalNode!=currentNode&&null!=terminal&&(terminal.Stop(),terminal=null),terminalNode=currentNode,updateTerminalButtons()}function updateTerminalButtons(){currentNode.agent;var e=null!=terminal&&0!=terminal.state;QE("termFullScreen",0!=e),3==terminalNode.mtype&&null!=terminalNode.agent&&terminalNode.agent.id>4&&512&features2&&(terminalNode.agent.caps=6),QV("disconnectbutton2span",1==e),QV("connectbutton2span",0==e&&null!=terminalNode.agent&&2&terminalNode.agent.caps&&3!=terminalNode.mtype),QV("connectbutton2sspan",0==e&&null!=terminalNode.agent&&2&terminalNode.agent.caps&&3!=terminalNode.agent.id);var t=!!(1&terminalNode.conn)||3==terminalNode.mtype;QE("connectbutton2",t),QE("connectbutton2s",t),QV("termActionsBtn",3!=terminalNode.mtype),QE("ctrlcbutton",e),QE("ctrlxbutton",e),QE("escbutton",e),1==e&&3!=terminal.contype||null==terminalNode.agent||3==terminalNode.agent.id||4==terminalNode.agent.id?QH("terminalCustomUpperRight",""):QH("terminalCustomUpperRight","<a style=cursor:pointer onclick=cmsshportaction(1,event)>"+format("SSHポート{0}",terminalNode.sshport?terminalNode.sshport:22)+"</a>")}function cmsshportaction(e){if(!xxdialogMode){setDialogMode(2,"SSH接続",3,function(){var e=Q("d10sshport").value.length>0?parseInt(Q("d10sshport").value):22;meshserver.send({action:"changedevice",nodeid:currentNode._id,sshport:e})},'SSHリモート接続ポート：<br /><br /><input type=text placeholder="22" inputmode="numeric" pattern="[0-9]*" onkeypress="return (event.keyCode == 8) || (event.charCode >= 48 && event.charCode <= 57)" maxlength=5 id=d10sshport type=text>',currentNode),Q("d10sshport").focus(),null!=currentNode.sshport&&(Q("d10sshport").value=currentNode.sshport)}}function onTerminalStateChange(e,t){var n=t;3==n&&2==e.contype&&n++;var o=StatusStrs[n];switch(1==terminal.webRtcActive&&(o+="、WebRTC"),QH("termstatus",o),t){case 0:xterm.dispose(),xterm=xtermfit=xtermimage=null,null!=terminal&&(terminal.Stop(),terminal=null);break;case 3:xterm.focus()}updateTerminalButtons()}function CreateRemoteTunnel(e,t){var n={protocol:1};return null!=t&&"number"==typeof t.protocol&&(n.protocol=t.protocol),n.onTunnelUpdate=e,n.xxStateChange=function(e){},n.ProcessBinaryData=function(e){n.onTunnelUpdate(e)},n.ProcessData=function(e){n.onTunnelUpdate(e)},n.terminalEmulation=1,n.fxEmulation=0,n.lineFeed="\r\n",n}function tunnelUpdate(e){null!=xterm&&(xterm.writeUtf8?"string"==typeof e?xterm.writeUtf8(e):xterm.writeUtf8(new Uint8Array(e)):"string"==typeof e?xterm.write(e):xterm.write(new Uint8Array(e)))}function sshTunnelAuthDialog(e,t){var n="";e.askkeypass?n+=addHtmlValue("認証","<select id=dp2authmethod style=width:150px onchange=sshAuthUpdate(event)><option value=3 selected>ストアされた鍵</option><option value=1>ユーザー名パスワード</option><option value=2>ユーザー名とキー</option></select>"):n+=addHtmlValue("認証","<select id=dp2authmethod style=width:150px onchange=sshAuthUpdate(event)><option value=1 selected>ユーザー名パスワード</option><option value=2>ユーザー名とキー</option></select>"),n+="<div id=d2userauth style=display:none>",n+=addHtmlValue("ユーザー名","<input id=dp2user style=width:150px maxlength=64 autocomplete=off onkeyup=sshAuthUpdate(event) />"),n+="</div>",n+="<div id=d2passauth style=display:none>",n+=addHtmlValue("パスワード","<input type=password id=dp2pass style=width:150px maxlength=64 autocomplete=off onkeyup=sshAuthUpdate(event) />"),4194304&features2||(n+="<label><input id=dp2keep type=checkbox>クレデンシャルを記憶</label>"),n+="</div><div id=d2keyauth style=display:none>",n+=addHtmlValue("キーファイル","<input type=file id=dp2key style=width:150px maxlength=64 autocomplete=off onchange=sshAuthUpdate(event) /><div id=d2badkey style=font-size:x-small>キーファイルはOpenSSH形式である必要があります。</div>"),n+=addHtmlValue("キーパスワード","<input type=password id=dp2keypass style=width:150px maxlength=64 autocomplete=off onkeyup=sshAuthUpdate(event) />"),4194304&features2||(n+="<label><input id=dp2keep1 type=checkbox onchange=sshAuthUpdate(event)>ユーザーと鍵を記憶</label><br/>",n+="<label><input id=dp2keep2 type=checkbox>パスワードを記憶</label>"),n+="</div>",e.askkeypass&&(n+="<div id=d2keyauth2 style=display:none>",n+=addHtmlValue("パスワード","<input type=password id=dp2keypass2 style=width:150px maxlength=64 autocomplete=off onkeyup=sshAuthUpdate(event) />"),n+="</div>"),setDialogMode(2,"認証",11,t,n,"ssh"),Q("dp2user").focus(),sshAuthUpdate(),setTimeout(sshAuthUpdate,50)}function sshTunnelUpdate(e){if("string"==typeof e)if("{"==e[0]){var t=JSON.parse(e);switch(t.action){case"sshauth":sshTunnelAuthDialog(t,sshConnectEx);break;case"sshautoauth":terminal.socket.send(JSON.stringify({action:"sshautoauth",cols:xterm.cols,rows:xterm.rows,width:Q("termarea3xdiv").offsetWidth,height:Q("termarea3xdiv").offsetHeight}));break;case"autherror":p12setConsoleMsg("認証エラー",5e3);break;case"sessionerror":p12setConsoleMsg("セッションの有効期限が切れ",5e3);break;case"sessiontimeout":p12setConsoleMsg("セッションタイムアウト",5e3)}}else"~"==e[0]&&(xterm.writeUtf8?xterm.writeUtf8(e.substring(1)):xterm.write(e.substring(1)))}function sshAuthUpdate(e){if(QV("d2userauth",3!=Q("dp2authmethod").value),QV("d2passauth",1==Q("dp2authmethod").value),QV("d2keyauth",2==Q("dp2authmethod").value),QV("d2keyauth2",3==Q("dp2authmethod").value),1==Q("dp2authmethod").value)QE("idx_dlgOkButton",Q("dp2user").value.length>0&&Q("dp2pass").value.length>0);else if(3==Q("dp2authmethod").value)QE("idx_dlgOkButton",Q("dp2keypass2").value.length>0);else{if(QE("idx_dlgOkButton",!1),4194304&features2||QE("dp2keep2",Q("dp2keep1").checked),1==(Q("dp2user").value.length>0&&null!=Q("dp2key").files&&1==Q("dp2key").files.length&&Q("dp2key").files[0].size<8e3)){var t=new FileReader;t.onload=function(e){var t=e.target.result.indexOf("-----BEGIN OPENSSH PRIVATE KEY-----")>=0&&e.target.result.indexOf("-----END OPENSSH PRIVATE KEY-----")>=0||e.target.result.indexOf("-----BEGIN RSA PRIVATE KEY-----")>=0&&e.target.result.indexOf("-----END RSA PRIVATE KEY-----")>=0;QE("idx_dlgOkButton",t),QS("d2badkey").color=t?"#000":"#F00"},t.readAsText(Q("dp2key").files[0])}}e&&13==e.keyCode&&e.target&&1==Q("dp2authmethod").value&&("dp2user"==e.target.id&&Q("dp2pass").focus(),"dp2pass"==e.target.id&&dialogclose(1))}function sshConnectEx(e){if(0==e)null!=terminal&&connectTerminal();else{var t=0;if(1==Q("dp2authmethod").value)4194304&features2||(t=Q("dp2keep").checked?1:0),terminal.socket.send(JSON.stringify({action:"sshauth",username:Q("dp2user").value,password:Q("dp2pass").value,keep:t,cols:xterm.cols,rows:xterm.rows,width:Q("termarea3xdiv").offsetWidth,height:Q("termarea3xdiv").offsetHeight}));else if(3==Q("dp2authmethod").value)terminal.socket.send(JSON.stringify({action:"sshkeyauth",keypass:Q("dp2keypass2").value,cols:xterm.cols,rows:xterm.rows,width:Q("termarea3xdiv").offsetWidth,height:Q("termarea3xdiv").offsetHeight}));else{4194304&features2||1==(t=Q("dp2keep1").checked?1:0)&&(t+=Q("dp2keep2").checked?1:0);var n=new FileReader,o=Q("dp2user").value,i=Q("dp2keypass").value;n.onload=function(e){terminal.socket.send(JSON.stringify({action:"sshauth",username:o,keypass:i,key:e.target.result,keep:t,cols:xterm.cols,rows:xterm.rows,width:Q("termarea3xdiv").offsetWidth,height:Q("termarea3xdiv").offsetHeight}))},n.readAsText(Q("dp2key").files[0])}}}function xTermSendResize(){xtermResizeTimer=null,null!=xterm&&null!=terminal&&null!=terminal.sendCtrlMsg&&("sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send(JSON.stringify({action:"resize",cols:xterm.cols,rows:xterm.rows,width:Q("termarea3xdiv").offsetWidth,height:Q("termarea3xdiv").offsetHeight})):terminal.sendCtrlMsg(JSON.stringify({ctrlChannel:"102938",type:"termsize",cols:xterm.cols,rows:xterm.rows})))}function connectTerminal(e,t,n){if(p12clearConsoleMsg(),terminal)terminal.Stop(),terminal=null,fullscreen&&deskToggleFull();else{var o={protocol:null!=n&&"number"==typeof n.protocol?n.protocol:1};n&&n.requireLogin&&(o.requireLogin=!0),null!=serverinfo.linuxshell&&currentNode.agent.id>4&&("root"==serverinfo.linuxshell&&(o.protocol=1,delete o.requireLogin),"user"==serverinfo.linuxshell&&(o.protocol=8,delete o.requireLogin),"login"==serverinfo.linuxshell&&(o.protocol=1,o.requireLogin=!0)),QV("termarea3xdiv",!0),null!=xterm&&xterm.dispose(),xterm=new Terminal({allowProposedApi:!0}),xtermfit=new FitAddon.FitAddon,xtermimage=new ImageAddon.ImageAddon,xtermfit&&xterm.loadAddon(xtermfit),xterm.loadAddon(xtermimage),xterm.open(Q("termarea3xdiv")),xterm.onData(function(e){"sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+e):terminal.sendText(e)}),xtermfit&&xtermfit.fit(),xterm.onResize(function(e){xtermResizeTimer&&clearTimeout(xtermResizeTimer),xtermResizeTimer=setTimeout(xTermSendResize,200)}),document.getElementsByClassName("xterm-helper-textarea")[0].onfocus=()=>{xterm.blur(),fullscreen||toggleKeyboard()},document.getElementsByClassName("xterm-viewport")[0].style.overflow="hidden",terminal=CreateAgentRedirect(meshserver,CreateRemoteTunnel(3==t?sshTunnelUpdate:tunnelUpdate,o),serverPublicNamePort,authCookie,authRelayCookie,domainUrl),3==t&&(terminal.urlname="sshterminalrelay.ashx"),terminal.debugmode=debugmode,terminal.m.debugmode=debugmode,terminal.options=o,terminal.options={cols:xterm.cols,rows:xterm.rows},o.requireLogin&&(terminal.options.requireLogin=!0),terminal.Start(terminalNode._id),terminal.onStateChanged=onTerminalStateChange,terminal.contype=t,terminal.attemptWebRTC=!1,terminal.onConsoleMessageChange=function(){p12setConsoleMsg(terminal.consoleMessage?formatAgentConsoleMessage(terminal.consoleMessage,terminal.consoleMessageId,terminal.consoleMessageArgs):null,terminal.consoleMessageTimeout)}}Q("connectbutton2").blur()}function termSendKey(e,t){terminal&&!xxdialogMode&&(null!=xterm?("sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+String.fromCharCode(e)):terminal.sendText?terminal.sendText(String.fromCharCode(e)):terminal.send(String.fromCharCode(e)),xterm.focus()):null!=terminal&&(terminal.m.TermSendKey(e),Q(t).blur()))}function updateTermShortcutKeys(){for(var e="",t=64;t<=95;t++)e+='<div class="menuButton" style="width:70px" onclick="termMenuButton('+t+')">Ctrl +'+String.fromCharCode(t)+"</div>";QH("termButtonMenu",e)}function termMenuButton(e){toggleMenu(!0),"sshterminalrelay.ashx"==terminal.urlname?terminal.socket.send("~"+String.fromCharCode(e-64)):terminal.sendText(String.fromCharCode(e-64))}function setupFiles(){var e=filesNode==currentNode,t=!!(1&(filesNode=currentNode).conn)||3==filesNode.mtype;QE("p13Connect",t),QE("p13Connects",t),QV("p13Connect",null==files&&2==filesNode.mtype),QV("p13Connects",null==files&&null!=filesNode.agent&&3!=filesNode.agent.id&&4!=filesNode.agent.id),QV("p13Disconnect",null!=files),0!=e&&0!=t||!files||(files.Stop(),files=null),p13setActions()}function onFilesStateChange(e,t){setSessionActivity(),QV("p13Connect",0==t&&2==filesNode.mtype),QV("p13Connects",0==t&&null!=filesNode.agent&&3!=filesNode.agent.id&&4!=filesNode.agent.id),QV("p13Disconnect",0!=t);var n=StatusStrs[t];switch(3==t&&(2==files.contype&&(n+=", SFTP"),1==files.webRtcActive&&(n+="、WebRTC")),Q("p13Status").textContent=n,t){case 0:QH("p13files",""),p13filetree=null,p13filetreelocation=[],QH("p13currentpath",""),QE("p13FolderUp",!1),p13setActions(),null!=files&&(files.Stop(),files=null),null!=uploadFile&&(p13uploadFileTransferDone(),uploadFile=null);break;case 3:if(p13filetreelocation=[],p13targetpath="",files){var o=[];try{o=JSON.parse(getstore("_devFilePaths","[]"))}catch(e){}for(var i=0;i<o.length;i++)o[i].n==currentNode._id&&(p13targetpath=o[i].p);p13filetreelocation=p13targetpath.split("/"),files.sendText({action:"ls",reqid:1,path:p13targetpath})}}}function CreateRemoteFiles(e){var t={protocol:5};return t.onFileUpdate=e,t.xxStateChange=function(e){},t.ProcessData=function(e){t.onFileUpdate(e)},t}var autoConnectFilesTimer=null;function autoConnectFiles(e){null==autoConnectFilesTimer?autoConnectFilesTimer=setInterval(connectFiles,100):(clearInterval(autoConnectFilesTimer),autoConnectFilesTimer=null)}function connectFiles(e,t){p13clearConsoleMsg(),files?(files.Stop(),files=null):(files=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotFiles),serverPublicNamePort,authCookie,authRelayCookie,domainUrl),2==t&&(files.urlname="sshfilesrelay.ashx"),files.contype=t,files.attemptWebRTC=attemptWebRTC,files.webrtcconfig=webrtcconfiguration,files.onStateChanged=onFilesStateChange,files.onConsoleMessageChange=function(){files.consoleMessage?(Q("p13FilesConsoleMsg").innerHTML+=formatAgentConsoleMessage(files.consoleMessage,files.consoleMessageId,files.consoleMessageArgs),QV("p13FilesConsoleMsg",!0),null!=p13FilesConsoleMsgTimer&&clearTimeout(p13FilesConsoleMsgTimer),files.consoleMessageTimeout&&(p13FilesConsoleMsgTimer=setTimeout(p13clearConsoleMsg,1e3*files.consoleMessageTimeout))):p13clearConsoleMsg()},files.Start(filesNode._id)),p13clipboard=p13clipboardFolder=null,p13clipboardCut=0,p13updateClipview()}var p13sortorder,p13filetree=null,p13targetpath=null,p13filetreelocation=[];function p13gotFiles(e){if(e.length>0&&123!=e.charCodeAt(0))p13gotDownloadBinaryData(e);else{try{e=JSON.parse(decode_utf8(e))}catch(t){e=JSON.parse(e)}if("download"!=e.action){switch(e.action){case"sshauth":sshTunnelAuthDialog(e,p13sshConnectEx);break;case"autherror":return void p13setConsoleMsg("認証エラー",5e3);case"connectionerror":return void p13setConsoleMsg("接続エラー",5e3);case"sessionerror":return void p13setConsoleMsg("セッションの有効期限が切れ",5e3);case"sessiontimeout":return void p13setConsoleMsg("セッションタイムアウト",5e3)}if(null!=e.action&&e.action.startsWith("upload"))p13gotUploadData(e);else if(null!=e.path)if(null==e.dir)""!=p13targetpath&&p13folderup();else if(e.path=e.path.replace(/\//g,"\\"),null!=p13filetree&&e.path==p13filetree.path){var t=p13getCheckedNames();p13filetree=e,p13updateFiles(t)}else{for(var n=e.path.replace(/\//g,"\\"),o=p13targetpath.replace(/\//g,"\\");n.length>0&&"\\"==n[0];)n=n.substring(1);for(;o.length>0&&"\\"==o[0];)o=o.substring(1);(n==o||"\\"==e.path&&""==p13targetpath)&&(p13filetree=e,p13updateFiles())}}else p13gotDownloadCommand(e)}}function p13sshConnectEx(e){if(0==e)null!=files&&connectFiles();else{var t=0;if(1==Q("dp2authmethod").value)4194304&features2||(t=Q("dp2keep").checked?1:0),files.socket.send(JSON.stringify({action:"sshauth",username:Q("dp2user").value,password:Q("dp2pass").value,keep:t}));else if(3==Q("dp2authmethod").value)files.socket.send(JSON.stringify({action:"sshkeyauth",keypass:Q("dp2keypass2").value}));else{4194304&features2||1==(t=Q("dp2keep1").checked?1:0)&&(t+=Q("dp2keep2").checked?1:0);var n=new FileReader,o=Q("dp2user").value,i=Q("dp2keypass").value;n.onload=function(e){files.socket.send(JSON.stringify({action:"sshauth",username:o,keypass:i,key:e.target.result,keep:t}))},n.readAsText(Q("dp2key").files[0])}}}function p13getCheckedNames(){for(var e=[],t=document.getElementsByName("fd"),n=0;n<t.length;n++)t[n].checked&&e.push(p13filetree.dir[t[n].value].n);return e}function p13updateFiles(e){var t="",n="",o="<a style=cursor:pointer;color:black onclick=p13folderup(0)>ルート</a>",i=p13filetree.path.split("\\");for(var a in p13filetreelocation=[],i)""!=i[a]&&p13filetreelocation.push(i[a]);for(var a in p13filetreelocation)o+=" / <a style=cursor:pointer;color:black onclick=p13folderup("+(parseInt(a)+1)+")>"+EscapeHtml(p13filetreelocation[a])+"</a>";var s=p13filetreelocation.join("/"),l=p13sort_files(p13filetree.dir);for(var a in l){var r,d=l[a],u=d.n;r=EscapeHtml(u);var c="";null!=d.s&&(c=getFileSizeStr(d.s));var p="";if(d.t<3){p="<div class=filelist file=999><input file=999 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'>&nbsp;<span style=float:right></span><span title=\""+r+'"><div class=fileIcon'+d.t+'></div><a style=cursor:pointer onclick=p13folderset("'+encodeURIComponent(d.nx)+'")>'+r+"</a></span></div>"}else{var m=r;d.s>0&&(m='<a rel="noreferrer noopener" target="_blank" style=cursor:pointer onclick="p13downloadfile(\''+encodeURIComponent(s+"/"+u)+"','"+encodeURIComponent(u)+"',"+d.s+')">'+r+"</a>"),p="<div class=filelist file=3><input file=3 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'>&nbsp;<span style=float:right;padding-right:4px>"+c+'</span><span title="'+r+'"><div class=fileIcon'+d.t+"></div>"+m+"</span></div>"}d.t<3?t+=p:n+=p}if(QH("p13files",t+n),QH("p13currentpath",o),QE("p13FolderUp",0!=p13filetreelocation.length),null!=e){var g=document.getElementsByName("fd");for(a=0;a<g.length;a++)e.indexOf(p13filetree.dir[g[a].value].n)>=0&&(g[a].checked=!0)}p13setActions()}function p13folderset(e){p13targetpath=joinPaths(p13filetree.path,p13filetree.dir[e].n).split("\\").join("/"),files&&(p13storeCurrentPath(p13targetpath),files.sendText({action:"ls",reqid:1,path:p13targetpath}))}function p13folderup(e){if(null==e)p13filetreelocation.pop();else for(;p13filetreelocation.length>e;)p13filetreelocation.pop();p13targetpath=p13filetreelocation.join("/"),files&&(p13storeCurrentPath(p13targetpath),files.sendText({action:"ls",reqid:1,path:p13targetpath}))}function p13storeCurrentPath(e){var t=[],n=-1;try{t=JSON.parse(getstore("_devFilePaths","[]"))}catch(e){}for(var o=0;o<t.length;o++)t[o].n==currentNode._id&&(n=o);for(n>=0&&t.splice(n,1),t.push({n:currentNode._id,p:e});t.length>40;)t.shift();putstore("_devFilePaths",JSON.stringify(t))}function p13sort_filename(e,t){return e.ln>t.ln?1*p13sortorder:e.ln<t.ln?-1*p13sortorder:0}function p13sort_timestamp(e,t){return e.d>t.d?1*p13sortorder:e.d<t.d?-1*p13sortorder:0}function p13sort_bysize(e,t){return e.s==t.s?p13sort_filename(e,t):(e.s-t.s)*p13sortorder}function p13sort_files(e){var t=[],n=Q("p13sortdropdown").value;for(var o in e)e[o].nx=o,null==e[o].s&&(e[o].s=0),null==e[o].n&&(e[o].n=o),e[o].ln=e[o].n.toLowerCase(),t.push(e[o]);return p13sortorder=1,n>3&&(p13sortorder=-1,n-=3),1==n?t.sort(p13sort_filename):2==n?t.sort(p13sort_bysize):3==n&&t.sort(p13sort_timestamp),t}function p13setActions(){var e=currentNode.agent&&14!=currentNode.agent.id;if(null==p13filetree)QE("p13DeleteFileButton",!1),QE("p13NewFolderButton",!1),QE("p13UploadButton",!1),QE("p13RenameFileButton",!1),QE("p13SelectAllButton",!1),Q("p13SelectAllButton").value="すべて",QE("p13RefreshButton",!1),QE("p13CutButton",!1),QE("p13CopyButton",!1),QE("p13PasteButton",!1);else{var t=p13getFileSelCount(),n=p13getFileCount(),o=p13getFileSelCount(!1),i=isWindowsNode(currentNode);QE("p13DeleteFileButton",e&&t>0&&(p13filetreelocation.length>0||0==i)),QE("p13NewFolderButton",e&&(p13filetreelocation.length>0||0==i)),QE("p13UploadButton",e&&(p13filetreelocation.length>0||0==i)),QE("p13RenameFileButton",e&&1==t&&(p13filetreelocation.length>0||0==i)),QE("p13SelectAllButton",n>0),Q("p13SelectAllButton").value=t>0?"なし":"すべて",QE("p13RefreshButton",!0),QE("p13CutButton",e&&t>0&&t==o&&3!=currentNode.mtype&&(p13filetreelocation.length>0||0==i)),QE("p13CopyButton",e&&t>0&&t==o&&3!=currentNode.mtype&&(p13filetreelocation.length>0||0==i)),QE("p13PasteButton",e&&3!=currentNode.mtype&&(p13filetreelocation.length>0||0==i)&&null!=p13clipboard&&p13clipboard.length>0)}1==(null!=files&&0!=files.state)&&2!=files.contype||null==filesNode.agent||3==filesNode.agent.id||4==filesNode.agent.id?QH("filesCustomUpperRight",""):QH("filesCustomUpperRight","<a style=cursor:pointer onclick=cmsshportaction(1,event)>"+format("SSHポート{0}",filesNode.sshport?filesNode.sshport:22)+"</a>"),QV("filesActionsBtn",3!=filesNode.mtype)}function p13getFileSelCount(e){for(var t=0,n=document.getElementsByName("fd"),o=0;o<n.length;o++)!n[o].checked||0==e&&"3"!=n[o].attributes.file.value||t++;return t}function p13getFileSelDirCount(){for(var e=0,t=document.getElementsByName("fd"),n=0;n<t.length;n++)t[n].checked&&"999"==t[n].attributes.file.value&&e++;return e}function p13getFileCount(){return document.getElementsByName("fd").length}function p13selectallfile(){for(var e=0==p13getFileSelCount(),t=document.getElementsByName("fd"),n=0;n<t.length;n++)t[n].checked=e;p13setActions()}function p13createfolder(){setDialogMode(2,"新しいフォルダ",3,p13createfolderEx,"<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />"),focusTextBox("p13renameinput"),p13fileNameCheck()}function p13createfolderEx(){files.sendText({action:"mkdir",reqid:1,path:p13filetreelocation.join("/")+"/"+Q("p13renameinput").value}),p13folderup(999)}function p13deletefile(){var e=p13getFileSelCount(),t=p13getFileSelDirCount()>0?"<br /><br /><label><input type=checkbox id=p13recdeleteinput>再帰削除</label><br>":"<input type=checkbox id=p13recdeleteinput style='display:none'>";setDialogMode(2,"削除",3,p13deletefileEx,e>1?format("選択したアイテム{0}を削除しますか？",e)+t:"選択したアイテムを削除しますか？"+t)}function p13deletefileEx(){for(var e=[],t=document.getElementsByName("fd"),n=0;n<t.length;n++)t[n].checked&&e.push(p13filetree.dir[t[n].value].n);files.sendText({action:"rm",reqid:1,path:p13filetreelocation.join("/"),delfiles:e,rec:Q("p13recdeleteinput").checked}),p13folderup(999)}function p13renamefile(){for(var e,t=document.getElementsByName("fd"),n=0;n<t.length;n++)t[n].checked&&(e=p13filetree.dir[t[n].value].n);setDialogMode(2,"リネーム",3,p13renamefileEx,'<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="'+e+'" />',{action:"rename",path:p13filetreelocation.join("/"),oldname:e}),focusTextBox("p13renameinput"),p13fileNameCheck()}function p13renamefileEx(e,t){t.newname=Q("p13renameinput").value,files.sendText(t),p13folderup(999)}function p13fileNameCheck(e){var t=isFilenameValid(Q("p13renameinput").value);QE("idx_dlgOkButton",t),1==t&&null!=e&&13==e.keyCode&&dialogclose(1)}function p13uploadFile(){setDialogMode(2,"ファイルをアップロードする",3,p13uploadFileEx,"<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange=\"updateUploadDialogOk('p13uploadinput')\" />"),updateUploadDialogOk("p13uploadinput")}function p13uploadFileEx(){p13doUploadFiles(Q("p13uploadinput").files)}function p13viewfile(){for(var e=document.getElementsByName("fd"),t=0;t<e.length;t++)if(e[t].checked){p13filetree.dir[e[t].value].s<=204800?p13downloadfile(encodeURIComponent(p13filetreelocation.join("/")+"/"+p13filetree.dir[e[t].value].n),encodeURIComponent(p13filetree.dir[e[t].value].n),p13filetree.dir[e[t].value].s,"viewer"):messagebox("ファイルエディター","編集できるのは200k未満のファイルのみです。");break}}var downloadFile,uploadFile,p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;function p13copyFile(e){var t=document.getElementsByName("fd");p13clipboard=[],p13clipboardCut=e,p13clipboardFolder=p13targetpath;for(var n=0;n<t.length;n++)t[n].checked&&"3"==t[n].attributes.file.value&&p13clipboard.push(p13filetree.dir[t[n].value].n);p13updateClipview()}function p13pasteFile(){var e="";null!=p13clipboard&&p13clipboard.length>0&&(e=0==p13clipboardCut?p13clipboard.length>1?format("この場所へ{0}エントリをコピーして宜しいですか？",p13clipboard.length):format("この場所へ1つのエントリをコピーして宜しいですか？"):p13clipboard.length>1?format("この場所へ{0}エントリを移動して宜しいですか？",p13clipboard.length):format("1エントリをこの場所へ移動して宜しいですか？")),setDialogMode(2,"ペースト",3,p13pasteFileEx,e)}function p13pasteFileEx(){files.sendText({action:0==p13clipboardCut?"copy":"move",reqid:1,scpath:p13clipboardFolder,dspath:p13targetpath,names:p13clipboard}),p13folderup(999),1==p13clipboardCut&&(p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0,p13updateClipview())}function p13updateClipview(){var e="";null!=p13clipboard&&p13clipboard.length>0&&(e=0==p13clipboardCut?p13clipboard.length>1?format('コピー用に{0}エントリを保持しています, <a href=# onclick="return p13clearClip()" style=cursor:pointer>クリア</a>.',p13clipboard.length):format('コピー用に1つのエントリを保持, <a href=# onclick="return p13clearClip()" style=cursor:pointer>クリア</a>.'):p13clipboard.length>1?format('移動のために{0}エントリを保持しています, <a href=# onclick="return p13clearClip()" style=cursor:pointer>クリア</a>.',p13clipboard.length):format('移動のために1つのエントリを保持, <a href=# onclick="return p13clearClip()" style=cursor:pointer>クリア</a>.')),QH("p13bottomstatus",e),p13setActions()}function p13clearClip(){return p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0,p13updateClipview(),!1}function updateUploadDialogOk(e){QE("idx_dlgOkButton",""!=Q(e).value)}function getFileSelCount(e){for(var t=0,n=document.getElementsByName("fc"),o=0;o<n.length;o++)!n[o].checked||0==e&&"3"!=n[o].attributes.file.value||t++;return t}function getFileCount(){return document.getElementsByName("fc").length}function p13downloadfile(e,t,n){xxdialogMode||downloadFile||!files||(downloadFile={path:decodeURIComponent(e),file:decodeURIComponent(t),size:n,tsize:0,data:"",state:0,id:Math.random()},files.sendText({action:"download",sub:"start",id:downloadFile.id,path:downloadFile.path}),setDialogMode(2,"ダウンロードファイル",10,p13downloadFileCancel,"<div>"+EscapeHtml(downloadFile.file)+"</div><br /><progress id=d2progressBar style=width:100% value=0 max="+n+" />"))}function p13downloadFileCancel(){setDialogMode(0),files.sendText({action:"download",sub:"cancel",id:downloadFile.id}),downloadFile=null}function p13gotDownloadCommand(e){null!=downloadFile&&e.id==downloadFile.id&&("start"==e.sub?(downloadFile.state=1,files.sendText({action:"download",sub:"startack",id:downloadFile.id})):"cancel"==e.sub&&(downloadFile=null,setDialogMode(0)))}function p13gotDownloadBinaryData(e){downloadFile&&0!=downloadFile.state&&(e.length>4&&(downloadFile.tsize+=e.length-4,downloadFile.data+=e.substring(4),Q("d2progressBar").value=downloadFile.tsize),1&ReadInt(e,0)?(saveAs(data2blob(downloadFile.data),downloadFile.file),downloadFile=null,setDialogMode(0)):files.sendText({action:"download",sub:"ack",id:downloadFile.id}))}function p13doUploadFiles(e){if(!xxdialogMode){var t=isWindowsNode(currentNode),n=[],o=0;for(var i in p13filetree.dir)t?n.push(p13filetree.dir[i].n.toLowerCase()):n.push(p13filetree.dir[i].n);for(i=0;i<e.length;i++)t?n.indexOf(e[i].name.toLowerCase())>=0&&o++:n.indexOf(e[i].name)>=0&&o++;0==o?p13uploadFileContinue(1,e):setDialogMode(2,"ファイルをアップロードする",3,p13uploadFileContinue,format(1==o?"アップロードにより1つのファイルが上書きされます。継続する？":"アップロードは{0}ファイルを上書きします。継続する？",o),e)}}function p13uploadFileContinue(e,t){(uploadFile={}).xpath=p13filetreelocation.join("/"),uploadFile.xfiles=t,uploadFile.xfilePtr=-1,setDialogMode(2,"ファイルをアップロードする",10,p13uploadFileCancel,"<div id=p13dfileName>接続しています...</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />"),p13uploadNextFile()}const byteToHex=[];for(var n=0;n<=255;++n){var hexOctet=n.toString(16).padStart(2,"0");byteToHex.push(hexOctet)}function arrayBufferToHex(e){return Array.prototype.map.call(new Uint8Array(e),e=>byteToHex[e]).join("")}function performHash(e,t){window.crypto.subtle.digest("SHA-384",e).then(function(e){t(arrayBufferToHex(e))},function(){t(null)})}function performHashOnFile(e,t){var n=new FileReader;n.onerror=function(e){t(null)},n.onload=function(){window.crypto.subtle.digest("SHA-384",n.result).then(function(e){t(arrayBufferToHex(e))},function(){t(null)})},n.readAsArrayBuffer(e)}function p13uploadNextFile(){if(uploadFile.xfilePtr++,uploadFile.xfiles.length>uploadFile.xfilePtr){uploadFile.xptr=0;var e=uploadFile.xfiles[uploadFile.xfilePtr];if(QH("p13dfileName",EscapeHtml(e.name)),Q("d2progressBar").max=e.size,Q("d2progressBar").value=0,null==e.xdata){uploadFile.xfile=e;var t=null;for(var n in p13filetree.dir)p13filetree.dir[n].n==e.name&&(t=p13filetree.dir[n]);null!=t&&t.s<=uploadFile.xfile.size?performHashOnFile(uploadFile.xfile,function(n){files.sendText(JSON.stringify({action:"uploadhash",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:e.name,tag:{h:n.toUpperCase(),s:t.s,skip:t.s==uploadFile.xfile.size}}))}):files.sendText(JSON.stringify({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:e.name,size:uploadFile.xfile.size}))}else uploadFile.xdata=e.xdata,files.sendText(JSON.stringify({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:e.name,size:uploadFile.xdata.byteLength}))}else p13uploadFileTransferDone()}function p13uploadFileCancel(e,t){null!=uploadFile&&(files.sendText(JSON.stringify({action:"uploadcancel",reqid:uploadFile.xfilePtr})),uploadFile=null),p13uploadFileTransferDone()}function p13uploadFileTransferDone(){uploadFile=null,setDialogMode(0),p13folderup(9999)}function p13gotUploadData(e){if(null!=uploadFile&&parseInt(uploadFile.xfilePtr)==parseInt(e.reqid))switch(e.action){case"uploadstart":uploadFile.xdataPriming=8,p13uploadNextPart(!1);break;case"uploadack":p13uploadNextPart(!1);break;case"uploaddone":uploadFile.xfiles.length>uploadFile.xfilePtr+1?p13uploadNextFile():p13uploadFileTransferDone();break;case"uploaderror":p13uploadFileCancel();break;case"uploadhash":var t=uploadFile.xfiles[uploadFile.xfilePtr];t&&(e.tag.h===e.hash?e.tag.skip?p13uploadNextFile():(uploadFile.xptr=e.tag.s,files.sendText(JSON.stringify({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:t.name,size:uploadFile.xfile.size,append:!0}))):files.sendText(JSON.stringify({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:t.name,size:uploadFile.xfile.size,append:!1})))}}function p13uploadNextPart(e){if(uploadFile.xdata){var t=uploadFile.xdata,n=uploadFile.xptr;if(n>=t.byteLength)files.sendText(JSON.stringify({action:"uploaddone",reqid:uploadFile.xfilePtr}));else{if((a=uploadFile.xptr+(attemptWebRTC?16384:65536))>t.byteLength){if(1==e)return;a=t.byteLength}var o=new Uint8Array(t.slice(n,a));if(123==o[0]||0==o[0]){var i=new Uint8Array(a-n+1);i.set(o,1),files.send(i)}else files.send(o);uploadFile.xptr=a,Q("d2progressBar").value=a}}else if(uploadFile.xfile){if(null!=uploadFile.xreader)return;if(uploadFile.xptr>=uploadFile.xfile.size)return;var a;if((a=uploadFile.xptr+(attemptWebRTC?16384:65536))>uploadFile.xfile.size){if(1==e)return;a=uploadFile.xfile.size}uploadFile.xreader=new FileReader,uploadFile.xreader.onerror=function(e){console.log(e)},uploadFile.xreader.onload=function(){var e=uploadFile.xreader.result;if(delete uploadFile.xreader,null!=e){var t=new Uint8Array(e);if(123==t[0]||0==t[0]){var n=new Uint8Array(e.byteLength+1);n.set(t,1),files.send(n)}else files.send(t);uploadFile.xptr=a,Q("d2progressBar").value=a,uploadFile.xptr>=uploadFile.xfile.size?files.sendText(JSON.stringify({action:"uploaddone",reqid:uploadFile.xfilePtr})):uploadFile.xdataPriming>0&&(uploadFile.xdataPriming--,p13uploadNextPart(!0))}},uploadFile.xreader.readAsArrayBuffer(uploadFile.xfile.slice(uploadFile.xptr,a))}}var consoleNode,DeviceDetailsHardware=null,DeviceDetailsNetwork=null,DeviceDetailsNodeId=null;function updateDeviceDetails(e,t,n){if(null!=currentNode&&(null==e&&(e=currentNode),currentNode._id==e._id)){DeviceDetailsNodeId!=e._id&&(DeviceDetailsHardware=null,DeviceDetailsNetwork=null,DeviceDetailsNodeId=e._id),null!=t&&(DeviceDetailsHardware=t),null!=n&&(DeviceDetailsNetwork=n),null==(t=DeviceDetailsHardware)&&(t={}),null==(n=DeviceDetailsNetwork)&&(n={});var o=[],i={},a="";if(e.rname&&(a+=addDetailItem("名",EscapeHtml(e.rname),i)),t.windows&&t.windows.osinfo&&t.windows.osinfo.Description&&(a+=addDetailItem("説明",EscapeHtml(t.windows.osinfo.Description),i)),e.osdesc&&(a+=addDetailItem("バージョン",EscapeHtml(e.osdesc),i)),t.windows&&t.windows.osinfo){if((f=t.windows.osinfo).BuildRevision&&(a+=addDetailItem("ビルド番号",EscapeHtml(f.BuildRevision),i)),f.OSArchitecture&&(f.OSArchitecture.startsWith("32")?a+=addDetailItem("アーキテクチャ","32ビット",i):f.OSArchitecture.startsWith("64")?a+=addDetailItem("アーキテクチャ","64ビット",i):a+=addDetailItem("アーキテクチャ",EscapeHtml(f.OSArchitecture),i)),f.LastBootUpTime){var s={year:parseInt(f.LastBootUpTime.substring(0,4)),month:parseInt(f.LastBootUpTime.substring(4,6))-1,day:parseInt(f.LastBootUpTime.substring(6,8)),hours:parseInt(f.LastBootUpTime.substring(8,10)),minutes:parseInt(f.LastBootUpTime.substring(10,12)),seconds:parseInt(f.LastBootUpTime.substring(12,14))};a+=addDetailItem("Last Boot Up Time",printDateTime(new Date(s.year,s.month,s.day,s.hours,s.minutes,s.seconds)))}f.Domain&&(a+=addDetailItem(f.PartOfDomain?"ドメイン":"ワークグループ",EscapeHtml(f.Domain),i)),f.DomainState>0&&(a+=addDetailItem("ドメインの状態",domainStates[f.DomainState]?domainStates[f.DomainState]:"未知の",i))}if(t.linux&&t.linux.LastBootUpTime){s={year:(l=new Date(t.linux.LastBootUpTime)).getFullYear(),month:l.getMonth(),day:l.getDate(),hours:l.getHours(),minutes:l.getMinutes(),seconds:l.getSeconds()};a+=addDetailItem("Last Boot Up Time",printDateTime(new Date(s.year,s.month,s.day,s.hours,s.minutes,s.seconds)))}if(t.darwin&&t.darwin.LastBootUpTime){var l;s={year:(l=new Date(1e3*t.darwin.LastBootUpTime)).getFullYear(),month:l.getMonth(),day:l.getDate(),hours:l.getHours(),minutes:l.getMinutes(),seconds:l.getSeconds()};a+=addDetailItem("Last Boot Up Time",printDateTime(new Date(s.year,s.month,s.day,s.hours,s.minutes,s.seconds)))}if(e.wsc){var r=[];null!=e.wsc.antiVirus&&("OK"==e.wsc.antiVirus?r.push("AV - <span style=color:green>OK</span>"):r.push("AV - <span style=color:red>悪い</span>")),null!=e.wsc.autoUpdate&&("OK"==e.wsc.autoUpdate?r.push("更新 - <span style=color:green>OK</span>"):r.push("更新 - <span style=color:red>悪い</span>")),null!=e.wsc.firewall&&("OK"==e.wsc.firewall?r.push("ファイアウォール - <span style=color:green>OK</span>"):r.push("ファイアウォール - <span style=color:red>悪い</span>")),a+=addDetailItem("Windowsセキュリティ",r.join(", "))}if(e.defender){r=[];null!=e.defender.RealTimeProtection&&(1==e.defender.RealTimeProtection?r.push("RealTimeProtection - <span style=color:green>On</span>"):r.push("RealTimeProtection - <span style=color:red>オフ</span>")),null!=e.defender.TamperProtected&&(1==e.defender.TamperProtected?r.push("TamperProtection - <span style=color:green>On</span>"):r.push("TamperProtection - <span style=color:red>オフ</span>")),null!=e.defender.AntivirusSignatureVersion&&r.push("署名バージョン - <span style=color:green>"+EscapeHtml(e.defender.AntivirusSignatureVersion)+"</span>"),r.length>0&&(a+=addDetailItem("Windows Defender",r.join(", ")))}if(e.av&&e.av.length>0){r=[];for(var d in e.av)if(e.av[d].product){var u=EscapeHtml(e.av[d].product);!0!==e.av[d].enabled&&(u+=" - <span style=color:red>無効</span>"),!0!==e.av[d].updated&&(u+=" - <span style=color:red>時代遅れ</span>"),1==e.av[d].enabled&&1==e.av[d].updated&&(u+=" - <span style=color:green>OK</span>"),r.push(u)}a+=addDetailItem("アンチウイルス",r.join("<br />"))}if(e.users&&e.users.length>0){var c=e.users.map(function(t,n){var o=e.upnusers&&e.upnusers[n],i=2&features3?e.users&&null!=e.users[n]?EscapeHtml(e.users[n]):null:null!=o?EscapeHtml(o):null,a=EscapeHtml(2&features3&&null!=o?o:t);return e.lusers&&e.lusers.indexOf(t)>=0?addKeyLinkConditional(a,i?i+" - ロック済み":"ロック済み",!0):i?"<span style=cursor:default title='"+i+"'>"+a+"</span>":a}).join(", ");a+=addDetailItem((e.users.length,"アクティブユーザー"),c)}if(e.idletime&&-1!=e.idletime&&(a+=addDetailItem("アイドル時間",printTimer(e.idletime))),""!=a&&o.push({name:"オペレーティング・システム",html:a,img:"software"}),e.agent){a="";if(null!=e.agent&&null!=e.agent.id&&null!=e.agent.ver){var p="";p=e.agent.id<=agentsStr.length?agentsStr[e.agent.id]:agentsStr[0],0!=e.agent.ver&&(p+=" v"+e.agent.ver),14==e.agent.id&&(p=e.agent.core),a+=addDetailItem("メッシュエージェント",p)}if(e.firstconnect&&(a+=addDetailItem("最初のエージェント接続",printDateTime(new Date(e.firstconnect)))),1&e.conn?a+=addDetailItem("最後のエージェント接続","今すぐ接続"):e.lastconnect&&(a+=addDetailItem("最後のエージェント接続",printDateTime(new Date(e.lastconnect)))),e.lastaddr){var m=e.lastaddr.split(":");m.length>2?a+=addDetailItem("最後のエージェントのアドレス",e.lastaddr):isPrivateIP(e.lastaddr)?a+=addDetailItem("最後のエージェントのアドレス",m[0]):a+=addDetailItem("最後のエージェントのアドレス",'<a href="https://iplocation.com/?ip='+m[0]+'" rel="noreferrer noopener" target="MeshIPLoopup">'+m[0]+"</a>")}if(null!=t.agentvers&&t.agentvers.compileTime)try{var g=Date.parse(t.agentvers.compileTime);a+=addDetailItem("コンパイル時間",printDateTime(new Date(g)))}catch(e){}null!=t.time&&(a+=addDetailItem("最後の詳細更新",printDateTime(new Date(t.time)))),""!=a&&o.push({name:"メッシュエージェント",html:a,img:"meshagent"})}if(t.mobile){a="";t.mobile.brand&&t.mobile.model&&(a+=addDetailItem("型番",EscapeHtml(t.mobile.brand+", "+t.mobile.model),i)),t.mobile.device&&(a+=addDetailItem("デバイス",EscapeHtml(t.mobile.device),i)),t.mobile.bootloader&&(a+=addDetailItem("ブートローダー",EscapeHtml(t.mobile.bootloader),i)),t.mobile.id&&(a+=addDetailItem("識別子",EscapeHtml(t.mobile.id),i)),t.mobile.host&&(a+=addDetailItem("ホスト名",EscapeHtml(t.mobile.host),i)),t.mobile.androidapi&&t.mobile.androidrelease&&(a+=addDetailItem("Android Version",EscapeHtml(t.mobile.androidrelease+", API Level "+t.mobile.androidapi),i)),""!=a&&o.push({name:"モバイル機器",html:a,img:"mobile"})}if(null!=n.netif2){a="";for(var d in a+="<table style=width:100%>",n.netif2){var f=n.netif2[d];if(!(0==Array.isArray(f)||f.length<1||null==f[0]||"string"==typeof f[0].mac&&f[0].mac.startsWith("00:00:00:00"))){a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+EscapeHtml(d+(f[0].fqdn?", "+f[0].fqdn:""))+"</b></div>",f.desc&&(a+=addDetailItem("説明",EscapeHtml(f.desc).split("(R)").join("&reg;"))),"string"==typeof f[0].mac&&(f[0].gatewaymac?a+=addDetailItem("MAC層",format("MAC：{0}、ゲートウェイ：{1}",EscapeHtml(f[0].mac),EscapeHtml(f[0].gatewaymac))):a+=addDetailItem("MAC層",format("MAC：{0}",EscapeHtml(f[0].mac)))),"number"==typeof f[0].speed&&0x8000000000000000!=f[0].speed&&f[0].speed>0&&(a+=addDetailItem("インターフェース速度",format("{0}",getNetworkSpeed(f[0].speed))));for(var h=0;h<f.length;h++){var v=f[h],k=[];v.address&&k.push(format("IP：{0}",EscapeHtml(v.address))),v.netmask&&k.push(format("マスク: {0}",EscapeHtml(v.netmask))),v.gateway&&k.push(format("ゲートウェイ: {0}",EscapeHtml(v.gateway))),k.length>0&&("IPv4"==v.family&&(a+=addDetailItem("IPv4レイヤー",k.join("、"))),"IPv6"==v.family&&(a+=addDetailItem("IPv6レイヤー",k.join("、"))))}a+="</div></td></tr>"}}t.network&&t.network.dns&&(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+=addDetailItem("<b>DNS Servers</b>",t.network.dns.join("、")),a+="</div></td></tr>"),""!=(a+="</table>")&&o.push({name:"ネットワーキング",html:a,img:"networking"})}if(null!=e.intelamt){a="";a+=addDetailItem("バージョン",e.intelamt.ver?"v"+EscapeHtml(e.intelamt.ver):"<i>未知の</i>",i),a+=addDetailItem("識別子",e.intelamt.uuid?EscapeHtml(e.intelamt.uuid):"<i>未知の</i>",i);var y={0:nobreak("アクティブ化されていない（前）"),1:nobreak("アクティブ化されていない（イン）"),2:nobreak("有効化")},x="";2==e.intelamt.state&&e.intelamt.flags&&(2&e.intelamt.flags?x=", クライアント制御モード（CCM）":4&e.intelamt.flags&&(x=", 管理制御モード（ACM）")),a+=addDetailItem("プロビジョニング状態",(e.intelamt.state?y[e.intelamt.state]:"<i>未知の</i>")+x,i),a+=addDetailItem("セキュリティ",1==e.intelamt.tls?"TLSを使用して保護":"TLSがセットアップされていません",i),""!=(a+=addDetailItem("管理者の資格情報",null==e.intelamt.user||""==e.intelamt.user||null!=e.intelamt.warn&&9&e.intelamt.warn?"不明":"既知",i))&&("number"==typeof e.intelamt.sku&&16&e.intelamt.sku?o.push({name:"Intel&reg; Standard Manageability (Intel&reg; SM)",html:a,img:"amt"}):o.push({name:"インテル&reg;アクティブ管理テクノロジー（インテル&reg;AMT）",html:a,img:"amt"}))}if(t.identifiers){a="";var b=t.identifiers;if(b.bios_vendor&&(a+=addDetailItem("ベンダー",EscapeHtml(b.bios_vendor),i)),b.bios_version&&(a+=addDetailItem("バージョン",EscapeHtml(b.bios_version),i)),b.bios_serial&&(a+=addDetailItem("シリアル",EscapeHtml(b.bios_serial),i)),b.bios_mode&&(a+=addDetailItem("Mode",EscapeHtml(b.bios_mode),i)),""!=a&&o.push({name:"BIOS",html:a,img:"chip"}),a="",b.board_vendor&&(a+=addDetailItem("ベンダー",EscapeHtml(b.board_vendor),i)),b.board_name&&(a+=addDetailItem("名",EscapeHtml(b.board_name),i)),b.board_serial&&""!=b.board_serial&&(a+=addDetailItem("シリアル",EscapeHtml(b.board_serial),i)),b.board_version&&(a+=addDetailItem("バージョン",EscapeHtml(b.board_version),i)),b.product_uuid&&(a+=addDetailItem("識別子",EscapeHtml(b.product_uuid),i)),b.cpu_name&&(a+=addDetailItem("CPU",EscapeHtml(b.cpu_name).split("(TM)").join("&trade;").split("(R)").join("&reg;"),i)),b.gpu_name)for(var d in b.gpu_name)a+=addDetailItem("GPU",EscapeHtml(b.gpu_name[d]).split("(TM)").join("&trade;").split("(R)").join("&reg;"),i);""!=a&&o.push({name:"マザーボード",html:a,img:"motherboard"}),a="",b.chassis_manufacturer&&(a+=addDetailItem("製造元",EscapeHtml(b.chassis_manufacturer),i)),b.product_name&&(a+=addDetailItem("製品名",EscapeHtml(b.product_name),i)),b.chassis_serial&&(a+=addDetailItem("シリアル",EscapeHtml(b.chassis_serial),i)),b.chassis_assettag&&(a+=addDetailItem("アセットタグ",EscapeHtml(b.chassis_assettag),i)),""!=a&&o.push({name:"システム",html:a,img:"system"})}if(t.tpm){a="";var w=t.tpm;w.SpecVersion&&(a+=addDetailItem("SpecVersion",parseFloat(EscapeHtml(w.SpecVersion)).toFixed(1),i)),w.ManufacturerId&&(a+=addDetailItem("識別子",EscapeHtml(w.ManufacturerId),i)),w.ManufacturerVersion&&(a+=addDetailItem("バージョン",EscapeHtml(w.ManufacturerVersion),i)),null!=w.IsActivated&&(a+=addDetailItem("有効化",w.IsActivated?"Yes":"No",i)),null!=w.IsEnabled&&(a+=addDetailItem("有効",w.IsEnabled?"Yes":"No",i)),null!=w.IsOwned&&(a+=addDetailItem("所有",w.IsOwned?"Yes":"No",i)),""!=a&&o.push({name:"TPM",html:a,img:"tpm"})}if(t.battery){a="";for(var d in a+="<table style=width:100%>",t.battery){var S=t.battery[d];a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+EscapeHtml(S.DeviceName?S.DeviceName:"未知の")+"</b></div>",S.CycleCount&&(a+=addDetailItem("サイクルカウント",EscapeHtml(S.CycleCount),i)),S.FullChargedCapacity&&(a+=addDetailItem("フル充電容量",format("{0} mWh",S.FullChargedCapacity),i)),S.EstimatedRuntime&&(a+=addDetailItem("推定実行時間",format("{0}分",Math.floor(S.EstimatedRuntime/60)),i)),S.Chemistry&&(a+=addDetailItem("化学",EscapeHtml(S.Chemistry),i)),S.DesignedCapacity&&(a+=addDetailItem("設計能力",format("{0} mWh",S.DesignedCapacity),i)),S.ManufactureDate&&(a+=addDetailItem("製造日",EscapeHtml(S.ManufactureDate),i)),S.ManufactureName&&(a+=addDetailItem("メーカー名",EscapeHtml(S.ManufactureName),i)),S.SerialNumber&&(a+=addDetailItem("シリアルナンバー",EscapeHtml(S.SerialNumber),i)),S.ChargeRate&&(a+=addDetailItem("充電速度",format("{0} mW",S.ChargeRate),i)),null!=S.Charging&&(a+=addDetailItem("充電",S.Charging?"Yes":"No",i)),S.DischargeRate&&(a+=addDetailItem("吐出量",format("{0} mW",S.DischargeRate),i)),null!=S.Discharging&&(a+=addDetailItem("放電中",S.Discharging?"Yes":"No",i)),S.RemainingCapacity&&(a+=addDetailItem("残容量",format("{0} mWh",S.RemainingCapacity),i)),S.Voltage&&(a+=addDetailItem("電圧",format("{0} V",S.Voltage/1e3),i)),S.Health&&(a+=addDetailItem("ヘルス",format("{0} %",S.Health),i)),S.BatteryCharge&&(a+=addDetailItem("バッテリー充電",format("{0} %",S.BatteryCharge),i)),a+="</div>"}""!=(a+="</table>")&&o.push({name:"バッテリー",html:a,img:"battery"})}if(t.windows&&t.windows.memory&&t.windows.memory.length>0){a="";for(var d in t.windows.memory.sort(function(e,t){return e.BankLabel>t.BankLabel?1:e.BankLabel<t.BankLabel?-1:0}),a+="<table style=width:100%>",t.windows.memory){f=t.windows.memory[d];a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+EscapeHtml(f.BankLabel?f.BankLabel:f.DeviceLocator?f.DeviceLocator:"Unknown")+"</b></div>",f.Capacity&&f.Speed?a+=addDetailItem("容量/速度",format("{0} Mb、{1} Mhz",f.Capacity/1024/1024,f.Speed),i):f.Capacity&&(a+=addDetailItem("容量",format("{0} Mb",f.Capacity/1024/1024),i)),f.PartNumber&&(a+=addDetailItem("品番",EscapeHtml(f.Manufacturer&&"Undefined"!=f.Manufacturer?f.Manufacturer+", ":"")+EscapeHtml(f.PartNumber),i)),a+="</div>"}""!=(a+="</table>")&&o.push({name:"記憶",html:a,img:"ram"})}if(t.linux&&t.linux.memory&&t.linux.memory.Memory_Device.length>0){a="";for(var d in t.linux.memory.Memory_Device.sort(function(e,t){return e.Locator>t.Locator?1:e.Locator<t.Locator?-1:0}),a+="<table style=width:100%>",t.linux.memory.Memory_Device){(f=t.linux.memory.Memory_Device[d]).Size&&"No Module Installed"==f.Size||(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+EscapeHtml(f.Locator?f.Locator:"Unknown")+"</b></div>",f.Size&&f.Speed?a+=addDetailItem("容量/速度",format("{0}, {1}",f.Size,f.Speed),i):f.Size&&(a+=addDetailItem("容量",format("{0}",f.Size),i)),f.PartNumber&&(a+=addDetailItem("品番",EscapeHtml(f.Manufacturer&&"Undefined"!=f.Manufacturer?f.Manufacturer+", ":"")+EscapeHtml(f.PartNumber),i)),a+="</div>")}""!=(a+="</table>")&&o.push({name:"記憶",html:a,img:"ram"})}if(t.darwin&&t.darwin.memory&&t.darwin.memory.length>0){a="";for(var d in a+="<table style=width:100%>",t.darwin.memory){(f=t.darwin.memory[d]).Size&&"No Module Installed"==f.Size||(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+EscapeHtml(f.DeviceLocator?f.DeviceLocator:"Unknown")+"</b></div>",f.Size&&f.Speed?a+=addDetailItem("容量/速度",format("{0}, {1}",f.Size,f.Speed),i):f.Size&&(a+=addDetailItem("容量",format("{0}",f.Size),i)),f.PartNumber&&(a+=addDetailItem("品番",EscapeHtml(f.Manufacturer&&""!=f.Manufacturer?f.Manufacturer+", ":"")+EscapeHtml(f.PartNumber),i)),a+="</div>")}""!=(a+="</table>")&&o.push({name:"記憶",html:a,img:"ram"})}if(t.identifiers&&b.storage_devices){a="";for(var d in b.storage_devices.sort(function(e,t){return e.Caption>t.Caption?1:e.Caption<t.Caption?-1:0}),a+="<table style=width:100%>",b.storage_devices){if((f=b.storage_devices[d]).Size){if(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+EscapeHtml(f.Caption)+"</b></div>",f.Model&&f.Model!=f.Caption&&(a+=addDetailItem("型番",EscapeHtml(f.Model),i)),f.Size&&("string"==typeof f.Size&&parseInt(f.Size)==f.Size&&(f.Size=parseInt(f.Size)),"number"==typeof f.Size&&(a+=addDetailItem("容量",format("{0} Mb",Math.floor(f.Size/1024/1024)),i)),"string"==typeof f.Size&&(a+=addDetailItem("容量",EscapeHtml(f.Size),i))),t.windows&&t.windows.drives&&f.Model){const e=t.windows.drives.find(e=>e.Model===f.Model);e&&(a+=addDetailItem("状態",EscapeHtml(e.Status),i))}a+="</div>"}}""!=(a+="</table>")&&o.push({name:"ストレージ",html:a,img:"storage"})}if(t.windows&&t.windows.volumes){a="";for(var d in t.windows.volumes){if(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+d+":"+(null==(f=t.windows.volumes[d]).name||""==f.name?"":" - "+EscapeHtml(f.name))+"</b></div>",f.size){var D=["Bytes","KB","MB","GB","TB"],Q=0===(h=parseInt(Math.floor(Math.log(Math.abs(f.size))/Math.log(1024)),10))?`${f.size} ${D[h]}`:`${(f.size/1024**h).toFixed(2)} ${D[h]}`;a+=addDetailItem("容量",EscapeHtml(Q),i)}if(f.sizeremaining){D=["Bytes","KB","MB","GB","TB"],Q=0===(h=parseInt(Math.floor(Math.log(Math.abs(f.sizeremaining))/Math.log(1024)),10))?`${f.sizeremaining} ${D[h]}`:`${(f.sizeremaining/1024**h).toFixed(2)} ${D[h]}`;a+=addDetailItem("残り容量",EscapeHtml(Q),i)}if(f.type)a+=addDetailItem("File System",(""!=(C=1==f.removable?"Removable":1==f.cdrom?"CD-ROM":"")?C+" / ":"")+("Unknown"==f.type?"未知の":EscapeHtml(f.type)),i);if(f.protectionStatus||f.volumeStatus){var M=[];f.protectionStatus&&M.push("有効"),f.volumeStatus&&"FullyDecrypted"==f.volumeStatus&&M.push("Fully Decrypted"),f.volumeStatus&&"EncryptionInProgress"==f.volumeStatus&&M.push("Encryption In Progress"),f.volumeStatus&&"FullyEncrypted"==f.volumeStatus&&M.push("Fully Encrypted"),M=M.join(" - "),f.recoveryPassword&&(M+=addKeyLink("",'deviceDetailsShowBitlockerInfo("'+encodeURIComponentEx(d)+'","'+encodeURIComponentEx(f.identifier)+'","'+encodeURIComponentEx(f.recoveryPassword)+'")')),a+=addDetailItem("BitLocker",M,i)}a+="</div>"}""!=a&&o.push({name:"Storage Volumes",html:"<table style=width:100%>"+a+"</table>",img:"storage"})}if(t.linux&&t.linux.volumes){a="";for(var d in t.linux.volumes){if(!(f=t.linux.volumes[d]).mount_point.startsWith("/var/lib/docker/overlay2")){if(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+f.mount_point+"</b></div>",f.size){D=["KB","MB","GB","TB"],Q=0===(h=parseInt(Math.floor(Math.log(Math.abs(f.size))/Math.log(1024)),10))?`${f.size} ${D[h]}`:`${(f.size/1024**h).toFixed(2)} ${D[h]}`;a+=addDetailItem("容量",EscapeHtml(Q),i)}if(f.available){if(0==Math.abs(f.available))Q="0 KB";else D=["KB","MB","GB","TB"],Q=0===(h=parseInt(Math.floor(Math.log(Math.abs(f.available))/Math.log(1024)),10))?`${f.available} ${D[h]}`:`${(f.available/1024**h).toFixed(2)} ${D[h]}`;a+=addDetailItem("残り容量",EscapeHtml(Q),i)}if(f.type)a+=addDetailItem("File System",(""!=(C=1==f.removable?"Removable":1==f.cdrom?"CD-ROM":"")?C+" / ":"")+("Unknown"==f.type?"未知の":EscapeHtml(f.type)),i);a+="</div>"}}""!=a&&o.push({name:"Storage Volumes",html:"<table style=width:100%>"+a+"</table>",img:"storage"})}if(t.darwin&&t.darwin.volumes){a="";for(var d in t.darwin.volumes){if(!(f=t.darwin.volumes[d]).mount_point.startsWith("/var/lib/docker/overlay2")){var C;if(a+="<tr><td><div class=style10 style=border-radius:5px;padding:8px>",a+="<div style=margin-bottom:3px><b>"+f.mount_point+"</b></div>",f.size&&(a+=addDetailItem("容量",EscapeHtml(f.size),i)),f.available&&(a+=addDetailItem("残り容量",EscapeHtml(f.available),i)),f.type)a+=addDetailItem("File System",(""!=(C=1==f.removable?"Removable":1==f.cdrom?"CD-ROM":"")?C+" / ":"")+("Unknown"==f.type?"未知の":EscapeHtml(f.type)),i);a+="</div>"}}""!=a&&o.push({name:"Storage Volumes",html:"<table style=width:100%>"+a+"</table>",img:"storage"})}a="";for(var d in o)null==o[d].img?a+="<div class=DevSt style=margin-bottom:3px;margin-left:4px><b>"+o[d].name+"</b></div><div style=margin-bottom:10px;margin-left:4px>"+o[d].html+"</div>":(a+="<table style=width:100%><tr>",a+="<td style=width:32px;vertical-align:top><img src=images/details/"+o[d].img+'32.png srcset="images/details/'+o[d].img+'64.png 2x" border=0 width=32 /></td>',a+="<td><div class=DevSt style=margin-bottom:3px;margin-left:4px><b>"+o[d].name+"</b></div><div style=margin-bottom:10px;margin-left:4px>"+o[d].html+"</div></td>",a+="</tr></table>");""==a?QH("p10detailshtml","このデバイスに関する情報はありません。"):QH("p10detailshtml",a)}}function deviceDetailsShowBitlockerInfo(e,t,n){if(xxdialogMode)return!1;var o="<div><p>識別子</p><p style=user-select:text;font-weight:bold>"+(t?decodeURIComponent(t):"未知の")+"</p>";o+="<p>Recovery Password</p><p style=user-select:text;font-weight:bold>"+(n?decodeURIComponent(n):"未知の")+"</p></div>",setDialogMode(2,decodeURIComponent(e)+": BitLocker Information",1,null,o,"")}function insertTextAtCursor(e,t){if(document.selection)e.focus(),sel=document.selection.createRange(),sel.text=t;else if(e.selectionStart||"0"==e.selectionStart){var n=e.selectionStart,o=e.selectionEnd;e.value=e.value.substring(0,n)+t+e.value.substring(o,e.value.length),e.setSelectionRange(o+1,o+1)}else e.value+=myValue}var consoleServerText="";function setupConsole(){var e=consoleNode==currentNode;meshes[(consoleNode=currentNode).meshid];if(16&GetNodeRights(currentNode)){null==consoleNode.consoleText&&(consoleNode.consoleText=""),0==e&&(QH("p15agentConsoleText",consoleNode.consoleText),Q("p15agentConsoleText").scrollTop=Q("p15agentConsoleText").scrollHeight);1&consoleNode.conn||consoleNode.conn;var t=1&consoleNode.conn?"エージェントはオンラインです":"エージェントはオフラインです";16&consoleNode.conn&&(t+="、MQTTはオンラインです"),QH("p15statetext",t),QE("p15uploadCore",!!(1&consoleNode.conn)),QV("p15outputselecttd",!!(16&consoleNode.conn)||1==currentNode.pmt&&!!(2&features2)),QV("p15outputselect2",!!(16&consoleNode.conn)),QV("p15outputselect3",1==currentNode.pmt&&!!(2&features2));var n=Q("p15outputselect").value;16&consoleNode.conn||2!=n||(n=1,Q("p15outputselect").value=1),1==currentNode.pmt&&2&features2||3!=n||(n=1,Q("p15outputselect").value=1);var o=!1;1&consoleNode.conn&&1==n&&(o=!0),16&consoleNode.conn&&2==n&&(o=!0),1==currentNode.pmt&&2&features2&&3==n&&(o=!0),QE("p15consoleText",o)}else QH("p15statetext","アクセスが拒否されました"),QE("p15consoleText",!1),QE("p15uploadCore",!1),QV("p15outputselecttd",!1);QV("devListToolbarViewIcons3",!!(1&consoleNode.conn))}function p15consoleClear(){QH("p15agentConsoleText",""),Q("id_p15consoleClear").blur(),consoleNode.consoleText=""}var currentMesh,consoleHistory=[];function p15consoleSend(e){if(!e||13==e.keyCode){var t=Q("p15consoleText").value,n="<div style=color:green>&gt; "+EscapeHtml(t)+"<br/></div>";if(16&consoleNode.conn&&2==Q("p15outputselect").value?(n="<div style=color:orange>MQTT&gt; "+EscapeHtml(t)+"<br/></div>",consoleNode.consoleText+=n,meshserver.send({action:"sendmqttmsg",topic:"console",nodeids:[consoleNode._id],msg:t})):1==consoleNode.pmt&&3==Q("p15outputselect").value&&2&features2?(n="<div style=color:violet>押す&gt; "+EscapeHtml(t)+"<br/></div>",consoleNode.consoleText+=n,meshserver.send({action:"pushconsole",nodeid:consoleNode._id,console:t})):1&consoleNode.conn&&(consoleNode.consoleText+=n,meshserver.send({action:"msg",type:"console",nodeid:consoleNode._id,value:t})),Q("p15agentConsoleText").innerHTML+=n,Q("p15agentConsoleText").scrollTop=Q("p15agentConsoleText").scrollHeight,Q("p15consoleText").value="",t.length>0){var o=consoleHistory.indexOf(t);o>=0&&consoleHistory.splice(o,1),consoleHistory.unshift(t),consoleHistory.splice(10)}}}function p15consoleReceive(e,t,n){"serverconsole"===e?(t="<div>"+EscapeHtml(t)+"</div>",consoleServerText+=t,"server"==consoleNode&&(Q("p15agentConsoleText").innerHTML+=t,Q("p15agentConsoleText").scrollTop=Q("p15agentConsoleText").scrollHeight)):(t="MQTT"==n?"<div style=color:red>MQTT&gt; "+EscapeHtml(t)+"<br/></div>":"<div>"+EscapeHtml(t)+"</div>",null==e.consoleText?e.consoleText=t:e.consoleText+=t,consoleNode==e&&(Q("p15agentConsoleText").innerHTML+=t,Q("p15agentConsoleText").scrollTop=Q("p15agentConsoleText").scrollHeight))}function p15downloadConsoleText(){saveAs(new Blob([Q("p15agentConsoleText").innerText],{type:"application/octet-stream"}),"console.txt")}function p15uploadCore(e){if(!xxdialogMode)if(1==e.shiftKey)meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"default"});else if(1==e.altKey)meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"clear"});else if(1==e.ctrlKey)p15uploadCore2();else{setDialogMode(2,"エージェントアクションの実行",3,p15uploadCoreEx,addHtmlValue("アクション","<select id=d3coreMode style=width:230px><option value=1>デフォルトのサーバーコアをアップロードする</option><option value=2>コアをクリア</option><option value=3>コアファイルをアップロードする</option><option value=4>ソフト切断エージェント</option><option value=5>エージェントを強制切断</option><option value=6>復旧コアをアップロードする</option><option value=7>小さなコアをアップロードする</option><option value=8>Restart agent service</option><option value=9>エージェントの更新を強制する</option></select>"))}}function p15uploadCoreEx(){1==Q("d3coreMode").value?meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"default"}):2==Q("d3coreMode").value?meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"clear"}):3==Q("d3coreMode").value?p15uploadCore2():4==Q("d3coreMode").value?meshserver.send({action:"agentdisconnect",nodeid:consoleNode._id,disconnectMode:1}):5==Q("d3coreMode").value?meshserver.send({action:"agentdisconnect",nodeid:consoleNode._id,disconnectMode:2}):6==Q("d3coreMode").value?meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"recovery"}):7==Q("d3coreMode").value?meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"tiny"}):8==Q("d3coreMode").value?meshserver.send({action:"msg",type:"console",nodeid:consoleNode._id,value:"service restart"}):9==Q("d3coreMode").value&&meshserver.send({action:"updateAgents",nodeids:[consoleNode._id]})}function p15uploadCore2(){xxdialogMode||(Q("d3localmodeform").action="uploadmeshcorefile.ashx",Q("d3auth").value=authCookie,Q("d3attrib").value=currentNode._id,setDialogMode(4,"メッシュエージェントコアのアップロード",3,p15uploadCoreEx2),d3init())}function p15uploadCoreEx2(){if(1==Q("d3uploadMode").value)Q("d3submit").click();else{var e=d3getFileSel();1==e.length&&meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,type:"custom",path:d3filetreelocation.join("/")+"/"+e[0]})}}function p20updateMesh(){if(null!=currentMesh){QH("p20meshName",EscapeHtml(currentMesh.name));var e=format("不明な＃{0}",currentMesh.mtype),t=GetMeshRights(currentMesh);1==currentMesh.mtype&&(e="Intel&reg; AMTのみ、エージェントなし"),2==currentMesh.mtype&&(e="ソフトウェアエージェントを使用して管理"),3==currentMesh.mtype&&(e=null==currentMesh.relayid?"ローカルデバイス、エージェントなし":"エージェントを介して中継されたエージェントデバイスはありません"),4==currentMesh.mtype&&(e=null==currentMesh.relayid?"IP-KVMデバイス":"IP-KVM device relayed thru agent",1==currentMesh.kvm.model&&(e+=", Raritan KX III"));var n="";if(n+=addHtmlValue("名",addLinkConditional(EscapeHtml(currentMesh.name),"p20editmesh(1)",!!(1&t))),n+=addHtmlValue("説明",addLinkConditional(currentMesh.desc&&""!=currentMesh.desc?EscapeHtml(currentMesh.desc):"<i>なし</i>","p20editmesh(2)",!!(1&t))),n+=addHtmlValue("タイプ",e),(3==currentMesh.mtype||4==currentMesh.mtype)&&null!=currentMesh.relayid){var o="<i>未知の</i>",i=getNodeFromId(currentMesh.relayid);null!=i&&(o=EscapeHtml(i.name)),n+=addHtmlValue("リレー装置",addLinkConditional(o,"p20editmeshrelay()",!!(1&t)))}4==currentMesh.mtype&&(n+=addHtmlValue("ホスト名",currentMesh.kvm.host),n+=addHtmlValue("ユーザー名",currentMesh.kvm.user)),n+='<br><input type=button value="ノート" onclick=showNotes(false,"'+encodeURIComponent(currentMesh._id)+'") />',n+="<br style=clear:both><br>";var a=currentMesh.links[userinfo._id];a&&2&a.rights&&(n+="<div style=margin-bottom:6px;float:left;margin-right:10px><a onclick=p20showAddMeshUserDialog() style=cursor:pointer><img src=images/icon-addnew.png border=0 height=12 width=12> ユーザーを追加する</a></div>"),navigator.userAgent.toLowerCase().indexOf("android")>=0&&(n+="<div style=margin-bottom:6px;float:left;margin-right:10px><a onclick=p20installAndroidDialog() style=cursor:pointer><img src=images/icon-addnew.png border=0 height=12 width=12> このデバイスにインストールします</a></div>"),n+='<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>ユーザー認証</th></tr>';var s=1,l=[];for(var r in currentMesh.links){var d=r.split("/")[2];currentMesh.links[r].name&&(d=currentMesh.links[r].name),r==userinfo._id&&(d=userinfo.name),null!=usergroups&&null!=usergroups[r]&&(d=usergroups[r].name),l.push({id:r,name:d,rights:currentMesh.links[r].rights})}for(var r in l.sort(function(e,t){return e.name>t.name?1:e.name<t.name?-1:0}),l){var u="",c="部分的権利",p=l[r].rights,m=2;4294967295==p?c="完全な管理者":0==p&&(c="権利なし"),r!=userinfo._id&&(4294967295==t||2&t)&&(u='<a onclick=p20deleteUser(event,"'+encodeURIComponent(l[r].id)+'") style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'),l[r].id.startsWith("ugrp/")&&(m=4),n+='<tr onclick=p20viewuser("'+encodeURIComponent(l[r].id)+'") style=height:32px;cursor:pointer'+(s%2==0?";background-color:#DDD":"")+"><td>",n+="<div style=float:right>"+u+"</div><div style=float:right;padding-right:4px>"+c+"</div><div class=m"+m+"></div><div>&nbsp;"+EscapeHtml(decodeURIComponent(l[r].name))+"<div></div></div>",n+="</td></tr>",++s}n+="</tbody></table>",4294967295==t&&(n+="<div style=font-size:small;text-align:right;margin-top:6px><span><a onclick=p20showDeleteMeshDialog() style=cursor:pointer>グループを削除</a></span></div>"),QH("p20info",n)}}function p20showDeleteMeshDialog(){if(xxdialogMode)return!1;var e=format("グループ{0}を削除してもよろしいですか？デバイスグループを削除すると、このグループ内のデバイスに関するすべての情報も削除されます。",EscapeHtml(currentMesh.name))+"<br /><br />";return setDialogMode(2,"グループを削除",3,p20showDeleteMeshDialogEx,e+="<label><input id=p20check type=checkbox onchange=p20validateDeleteMeshDialog() />承認する</label>"),p20validateDeleteMeshDialog(),!1}function p20validateDeleteMeshDialog(){QE("idx_dlgOkButton",Q("p20check").checked)}function p20showDeleteMeshDialogEx(e,t){meshserver.send({action:"deletemesh",meshid:currentMesh._id,meshname:currentMesh.name})}function p20editmeshrelay(){if(!xxdialogMode){var e=[];if(!(2&features))for(var t in nodes){var n=nodes[t];2==n.mtype&&null!=n.agent&&4294967295==GetNodeRights(n)&&e.push(n)}if(e.sort(nameSort),0==e.length)setDialogMode(2,"デバイスグループの編集",1,null,"リレーデバイスがありません。");else{var o=[];for(var t in e)o.push('<option value="'+e[t]._id+'"'+(currentMesh.relayid==e[t]._id?" selected":"")+">"+EscapeHtml(e[t].name)+"</option>");setDialogMode(2,"デバイスグループの編集",3,p20editmeshrelayEx,addHtmlValue("リレー装置","<div style=width:170px><select id=d2devrelay style=width:100%>"+o.join("")+"</select></div>"))}}}function p20editmeshrelayEx(){meshserver.send({action:"editmesh",meshid:currentMesh._id,relayid:Q("d2devrelay").value})}function p20editmesh(e){if(!xxdialogMode){var t=addHtmlValue("名","<input id=dp20meshname style=width:170px maxlength=32 onchange=p20editmeshValidate() onkeyup=p20editmeshValidate() />");setDialogMode(2,"デバイスグループの編集",3,p20editmeshEx,t+=addHtmlValue("説明","<input id=dp20meshdesc style=width:170px maxlength=1024 onkeyup=p20editmeshValidate() />")),Q("dp20meshname").value=currentMesh.name,currentMesh.desc&&(Q("dp20meshdesc").value=currentMesh.desc),p20editmeshValidate(),2==e?Q("dp20meshdesc").focus():Q("dp20meshname").focus()}}function p20editmeshEx(){meshserver.send({action:"editmesh",meshid:currentMesh._id,meshname:Q("dp20meshname").value,desc:Q("dp20meshdesc").value})}function p20editmeshValidate(){QE("idx_dlgOkButton",Q("dp20meshname").value.length>0)}function p20installAndroidDialog(){if(!xxdialogMode){var e="<div style=text-align:center><p>AndroidデバイスにMeshCentralAgentをインストールします。インストールしたら、ペアリングリンクをクリックして、デバイスをこのサーバーに接続します。</p>";e+='<p><a rel="noreferrer noopener" target=_blank href="https://play.google.com/store/apps/details?id=com.meshcentral.agent2"><img style=cursor:pointer src="images/google-play-140.png" width=140 srcset="images/google-play-280.png 2x" /></a></p>',e+='<p><a rel="noreferrer noopener" target=_blank href="https://www.amazon.co.uk/gp/product/B097Z4Q7SK/"><img style=cursor:pointer src="images/amazon-appstore-140.png"  width=140 srcset="images/amazon-appstore-280.png 2x" /></a></p>',e+='<p><a rel="noreferrer noopener" target=_blank href="meshagents?id=14'+(urlargs.key?"&key="+urlargs.key:"")+'" title="APK version of the MeshAgent">Android APK</a></p>',setDialogMode(2,"Androidのインストール",1,null,e+='<p><a href="'+serverinfo.magenturl+","+serverinfo.agentCertHash+","+currentMesh._id.split("/")[2]+'"><b>デバイスペアリングリンク</b></a></p></div>')}}function p20showAddMeshUserDialog(){if(!xxdialogMode){var e=addHtmlValue("User ID","<input id=dp20username style=width:170px maxlength=256 onchange=p20validateAddMeshUserDialog() onkeyup=p20validateAddMeshUserDialog() />");e+='<div style="border:2px groove gray;background-color:white;max-height:120px;overflow-y:scroll">',e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>完全な管理者</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>デバイスグループの編集</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>デバイスグループユーザーの管理</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20managecomputers>デバイスグループコンピューターの管理</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remotecontrol>リモコン</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remoteview style=margin-left:12px>リモートビューのみ</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remotelimitedinput style=margin-left:12px>限定入力のみ</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20noterminal style=margin-left:12px>ターミナルアクセスなし</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20nofiles style=margin-left:12px>ファイルアクセスなし</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20noamt style=margin-left:12px>Intel&reg;なしAMT</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshagentconsole>メッシュエージェントコンソール</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshserverfiles>サーバーファイル</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>ウェイクデバイス</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>デバイスノートの編集</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20limitevents>自分のイベントのみを表示</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20chatnotify>チャットと通知</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20uninstall>エージェントのアンインストール</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20commands>リモートコマンド</label><br>",e+="<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20resetoff>リセット/電源オフ</label><br>",setDialogMode(2,"ユーザーをデバイスグループに追加",3,p20showAddMeshUserDialogEx,e+="</div>"),p20validateAddMeshUserDialog(),Q("dp20username").focus()}}function p20validateAddMeshUserDialog(){var e=GetMeshRights(currentMesh),t=!Q("p20fulladmin").checked;QE("p20fulladmin",4294967295==e),QE("p20editmesh",t&&4294967295==e),QE("p20manageusers",t),QE("p20managecomputers",t),QE("p20remotecontrol",t),QE("p20meshagentconsole",t),QE("p20meshserverfiles",t),QE("p20wakedevices",t),QE("p20editnotes",t),QE("p20limitevents",t),QE("p20remoteview",t&&Q("p20remotecontrol").checked),QE("p20remotelimitedinput",t&&Q("p20remotecontrol").checked&&!Q("p20remoteview").checked),QE("p20noterminal",t&&Q("p20remotecontrol").checked),QE("p20nofiles",t&&Q("p20remotecontrol").checked),QE("p20noamt",t&&Q("p20remotecontrol").checked),QE("p20chatnotify",t),QE("p20uninstall",t),QE("p20commands",t),QE("p20resetoff",t)}function p20showAddMeshUserDialogEx(){var e=0;1==Q("p20fulladmin").checked?e=4294967295:(1==Q("p20editmesh").checked&&(e+=1),1==Q("p20manageusers").checked&&(e+=2),1==Q("p20managecomputers").checked&&(e+=4),1==Q("p20remotecontrol").checked&&(e+=8),1==Q("p20meshagentconsole").checked&&(e+=16),1==Q("p20meshserverfiles").checked&&(e+=32),1==Q("p20wakedevices").checked&&(e+=64),1==Q("p20editnotes").checked&&(e+=128),1==Q("p20remoteview").checked&&(e+=256),1==Q("p20noterminal").checked&&(e+=512),1==Q("p20nofiles").checked&&(e+=1024),1==Q("p20noamt").checked&&(e+=2048),1==Q("p20remotelimitedinput").checked&&(e+=4096),1==Q("p20limitevents").checked&&(e+=8192),1==Q("p20chatnotify").checked&&(e+=16384),1==Q("p20uninstall").checked&&(e+=32768),1==Q("p20commands").checked&&(e+=131072),1==Q("p20resetoff").checked&&(e+=262144));var t=Q("dp20username").value.split(","),n=[];for(var o in t)n.push(t[o].trim());meshserver.send({action:"addmeshuser",meshid:currentMesh._id,meshname:currentMesh.name,usernames:n,meshadmin:e})}function p20viewuser(e){if(!xxdialogMode){e=decodeURIComponent(e);var t=[],n=GetMeshRights(currentMesh),o=GetMeshRights(currentMesh,e);4294967295==o?t.push("完全な管理者"):(1&o&&t.push("デバイスグループの編集"),2&o&&t.push("デバイスグループユーザーの管理"),4&o&&t.push("デバイスグループコンピューターの管理"),8&o&&t.push("リモコン"),16&o&&t.push("エージェントコンソール"),32&o&&t.push("サーバーファイル"),64&o&&t.push("ウェイクデバイス"),128&o&&t.push("メモを編集"),256&o&&t.push("リモートビューのみ"),512&o&&t.push("ターミナルなし"),1024&o&&t.push("ファイルなし"),2048&o&&t.push("Intel&reg;なしAMT"),8&o&&4096&o&&!(256&o)&&t.push("制限された入力"),8192&o&&t.push("自己イベントのみ"),16384&o&&t.push("チャットと通知"),32768&o&&t.push("アンインストール"),131072&o&&t.push("コマンド"),262144&o&&t.push("リセット/オフ")),0==t.length&&t.push("権利なし");var i=1,a=e.split("/")[2];currentMesh.links[e].name&&(a=currentMesh.links[e].name);var s=addHtmlValue("ユーザー名",EscapeHtml(a));a!=e.split("/")[2]&&(s+=addHtmlValue("ユーザーID",EscapeHtml(e.split("/")[2]))),s+=addHtmlValue("許可",t.join("、")),userinfo._id!=e&&(4294967295==n||2&n&&4294967295!=o)&&(i+=4),setDialogMode(2,"デバイスグループユーザー",i,p20viewuserEx,s,e)}}function p20viewuserEx(e,t){if(2==e){var n=t.split("/")[2];users&&users[t]&&(n=users[t].name),usergroups&&usergroups[t]&&(n=usergroups[t].name),userinfo._id==t&&(n=userinfo.name),setDialogMode(2,"リモートメッシュユーザー",3,p20viewuserEx2,format("ユーザー{0}を削除して宜しいですか？",n),t)}}function p20deleteUser(e,t){haltEvent(e),p20viewuserEx(2,decodeURIComponent(t))}function p20viewuserEx2(e,t){meshserver.send({action:"removemeshuser",meshid:currentMesh._id,meshname:currentMesh.name,userid:t})}var notifications=[];function clickNotificationIcon(e){1==e?QV("notifiyBox",!0):0==e?QV("notifiyBox",!1):QV("notifiyBox","none"==QS("notifiyBox").display),drawNotifications()}function setNotificationCount(e){parseInt(Q("notificationCount").innerHTML)!=e&&(QH("notificationCount2",e),QV("notificationCount",e>0))}function drawNotifications(){var e=getstore("notifications",0),t="";if(0==notifications.length)t="<div style=margin:5px>現在、通知はありません</div>";else for(var n in notifications){var o=notifications[n],i="",a=new Date(o.time),s=0;if(null!=o.title&&(i="<b>"+EscapeHtml(o.title)+"</b>: "),null!=o.nodeid){var l=getNodeFromId(o.nodeid);null!=l&&(s=l.icon,i=16&e?"<b>"+EscapeHtml(meshes[l.meshid].name)+" / "+EscapeHtml(l.name)+"</b>: ":"<b>"+EscapeHtml(l.name)+"</b>: ")}t+='<div title="'+format("{0}で発生しました",printDateTime(a))+'" id="notifyx'+o.id+'" class=notification style="cursor:pointer;border-top:1px solid '+(""==t?"transparent":"orange")+'">',s&&(t+="<div class=j"+s+' onclick="notificationSelected('+o.id+')" style=margin:5px;float:left></div>'),t+='<div onclick="notificationDelete('+o.id+')" class=unselectable title="この通知をクリア" style=margin:5px;float:right;color:orange><b>X</b></div><div onclick="notificationSelected('+o.id+')" style=margin:5px>'+i+EscapeHtml(o.text)+"</div><div style=margin-left:5px;margin-bottom:5px;color:gray;font-size:10px>"+printDateTime(a)+"</div></div>"}var r="";notifications.length>1&&(r='<div id="notifyRemoveAll" onclick="deleteAllNotifications()" style="cursor:pointer;border-top:1px solid orange;margin:5px;color:orange;text-align:right;padding-right:3px">すべてクリア</div>'),QH("notifiyBox",'<div class=customScroll style="max-height:170px;overflow-y:auto;margin:5px">'+t+r+"</div>")}function notificationSelected(e,t){var n=-1;for(var o in notifications)notifications[o].id==e&&(n=o);-1!=n&&(notificationSelectedEx(notifications[n],e),t&&notifications[n]&&(notifications[n].notification&&(notifications[n].notification.close(),delete notifications[n].notification),notificationDelete(e)))}function notificationSelectedEx(e,t){null!=e.nodeid?"desktop"==e.tag?gotoDevice(e.nodeid,12):"terminal"==e.tag?gotoDevice(e.nodeid,11):"files"==e.tag?gotoDevice(e.nodeid,13):"intelamt"==e.tag?gotoDevice(e.nodeid,14):"console"==e.tag?gotoDevice(e.nodeid,15):gotoDevice(e.nodeid,10):"backupcodes"!=e.tag||xxdialogMode?null!=e.tag&&e.tag.startsWith("meshmessenger/")?(safeNewWindow("/messenger?id="+e.tag+"&title="+encodeURIComponentEx(e.username),e.tag.split("/")[2]),notificationDelete(t)):null!=e.url&&(safeNewWindow(e.url),notificationDelete(t)):(account_manageOtp(0),notificationDelete(t))}function notificationDelete(e){var t=-1,n=Q("notifyx"+e);if(null!=n){for(var o in notifications)notifications[o].id==e&&(t=o);if(-1!=t&&(meshserver.send({action:"intersession",subaction:"removeNotify",id:e}),notifications[t].notification&&(notifications[t].notification.close(),delete notifications[t].notification),notifications.splice(t,1),n.parentNode.removeChild(n),setNotificationCount(notifications.length),0==notifications.length&&QV("notifiyBox",!1),1==notifications.length&&QV("notifyRemoveAll",!1),notifications.length>0&&0==t)){var i=notifications[0];QS("notifyx"+i.id)["border-top"]="1px solid transparent"}}}function addNotification(e){if("number"==typeof e.titleid)try{e.title=[null,"新しいアカウント","サーバー制限","セキュリティ警告","アカウント設定","デバイスグループ","コードを招待"][e.titleid]}catch(e){}if("number"==typeof e.msgid)try{e.text=[null,"アクセス拒否","無効なユーザー名","無効なパスワード","無効なメール","無効なドメイン","無効なサイト権限","このユーザーは既に存在します","このモードではユーザーを追加できません","検証例外","アカウントの上限に達しました。","チャットリクエスト、ここをクリックして受け入れます。","前回のログイン以降、このアカウントで{0}回のログイン試行に失敗しました。","メールアドレスの変更に失敗しました。別のアカウントがすでに使用しています：{0}。","メールを送信しました。","ユーザー{0}が見つかりません。","ユーザー{0}が見つかりません。","エラー、以前に使用したパスワードに変更できません。","エラー、一般的に使用されるパスワードに変更できません。","エラー、パスワードは変更されていません。","パスワード変更済み。","現在のパスワードが正しくありません。",'エラー、招待コード"{0}"はすでに使用されています。',"SMSゲートウェイが有効になっていません","ユーザー管理権なし","無効なSMSメッセージ","このユーザーの電話番号はありません","SMSが正常に送信されました。","SMSエラー","SMSエラー：{0}",'メールドメイン "{0}"は許可されていません。({1})のみ許可されています。'][e.msgid],Array.isArray(e.args)&&(e.text=format(e.text,e.args[0],e.args[1],e.args[2],e.args[3],e.args[4],e.args[5]))}catch(e){}null==e.time&&(e.time=Date.now()),null==e.id&&(e.id=Math.random()),notifications.unshift(e),setNotificationCount(notifications.length),clickNotificationIcon(!0);var t=getstore("notifications",0);1&t&&Q("chimes").play();var n=null;if(Notification&&"granted"==Notification.permission){var o=e.text.split("&reg;").join("").split("<b>").join("").split("</b>").join("").split("<br />").join("\r\n");if(e.nodeid){var i=getNodeFromId(e.nodeid);i&&(n=16&t?new Notification(decodeURIComponent("{{{extitle}}}")+" - "+meshes[i.meshid].name+" - "+i.name,{tag:e.tag,body:o,icon:"/images/notify/icons128-"+i.icon+".png"}):new Notification(decodeURIComponent("{{{extitle}}}")+" - "+i.name,{tag:e.tag,body:o,icon:"/images/notify/icons128-"+i.icon+".png"}))}else{null==e.icon&&(e.icon=0);var a=e.title;a=null==a?"":" - "+e.title,n=new Notification(decodeURIComponent("{{{extitle}}}")+a,{tag:e.tag,body:o,icon:"/images/notify/icons128-"+e.icon+".png"})}n.id=e.id,n.xtag=e.tag,n.url=e.url,n.nodeid=e.nodeid,n.username=e.username,n.onclick=function(e){notificationSelected(e.target.id,!0)},e.notification=n}if("number"==typeof e.maxtime&&e.maxtime>0){var s=function e(){notificationDelete(e.xid)};s.xid=e.id,setTimeout(s,1e3*e.maxtime)}}function deleteAllNotifications(){notifications=[],setNotificationCount(0),drawNotifications(),QV("notifiyBox",!1)}var xxdialogMode,xxdialogFunc,xxdialogButtons,xxdialogTag,xxcurrentView=-1;function go(e){if(setSessionActivity(),!xxdialogMode&&xxcurrentView!=e){updateFooterMenu(),setDialogMode(0);for(var t=0;t<32;t++)QV("p"+t,t==e);xxcurrentView=e,updateCurrentUrl()}}function updateCurrentUrl(){if(!(268435456&features)&&xxcurrentView>0){var e="";for(var t in xxcurrentView>=10&&xxcurrentView<=19?null!=currentNode&&(e="?viewmode="+xxcurrentView+"&gotonode="+currentNode._id.split("/")[2]+(currentDevicePanel>0?"&panel="+currentDevicePanel:"")):xxcurrentView>=20&&xxcurrentView<=29?null!=currentMesh&&(e="?viewmode="+xxcurrentView+"&gotomesh="+currentMesh._id.split("/")[2]):xxcurrentView>1&&(e="?viewmode="+xxcurrentView),urlargs)e+=(""==e?"?":"&")+t+"="+urlargs[t];try{window.history.replaceState({},document.title,window.location.pathname+e)}catch(e){}}}function setDialogMode(e,t,n,o,i,a){setSessionActivity(),xxdialogMode=e,xxdialogFunc=o,xxdialogButtons=n,xxdialogTag=a,QE("idx_dlgOkButton",!0),QV("idx_dlgOkButton",1&n),QV("idx_dlgCancelButton",2&n),QV("id_dialogclose",2&n||8&n),QV("idx_dlgDeleteButton",4&n),QV("idx_dlgButtonBar",7&n),t&&QH("id_dialogtitle",t);for(var s=1;s<24;s++)QV("dialog"+s,s==e);QV("dialog",e),i&&(2==e?QH("id_dialogOptions",i):QH("id_dialogMessage",i))}function dialogclose(e){setSessionActivity();var t=xxdialogFunc,n=xxdialogButtons,o=xxdialogTag;setDialogMode(),(8&n||e)&&t&&t(e,o)}function removeUserRights(e,t){if(t!=userinfo._id||null==userinfo.removeRights)return e;var n=0,o=0;return 8&userinfo.removeRights&&(o+=8),65536&userinfo.removeRights&&(n+=65536),256&userinfo.removeRights&&(n+=256),512&userinfo.removeRights&&(n+=512),1024&userinfo.removeRights&&(n+=1024),16&userinfo.removeRights&&(o+=16),32768&userinfo.removeRights&&(o+=32768),131072&userinfo.removeRights&&(o+=131072),64&userinfo.removeRights&&(o+=64),262144&userinfo.removeRights&&(o+=262144),4294967295!=e?(e|=n,e&=4294967295-o):(e=2015471,e|=n,e&=4294967295-o),e}function GetMeshRights(e,t){if(null==e)return 0;if(null==t&&(t=userinfo._id),"string"==typeof e&&(e=meshes[e]),null==e||null==e.links)return 0;if(serverinfo.manageAllDeviceGroups&&t==userinfo._id)return removeUserRights(4294967295,t);var n=0,o=e.links[t];if(null!=o){if(4294967295==o.rights)return removeUserRights(4294967295,t);n=o.rights}var i=null;if(t==userinfo._id?i=userinfo:null!=users&&(i=users[t]),null!=i)for(var a in i.links)if(a.startsWith("ugrp/")&&null!=(o=e.links[a])){if(4294967295==o.rights)return removeUserRights(4294967295,t);n|=o.rights}return removeUserRights(n,t)}function IsMeshViewable(e,t){if(null==e)return!1;if(null==t&&(t=userinfo._id),"string"==typeof e&&(e=meshes[e]),null==e||null==e.links)return!1;if(null!=e.links[t])return!0;if(serverinfo.manageAllDeviceGroups&&t==userinfo._id)return!0;var n=null;if(t==userinfo._id?n=userinfo:null!=users&&(n=users[t]),null!=n)for(var o in n.links)if(o.startsWith("ugrp/")&&null!=e.links[o])return!0;return!1}function GetNodeRights(e,t){if(null==e)return 0;if(null==t&&(t=userinfo._id),"string"==typeof e&&null==(e=getNodeFromId(e)))return 0;var n=GetMeshRights(e.meshid,t);if(4294967295==n)return removeUserRights(n,t);if(null!=e.links&&null!=e.links[t]&&(n|=e.links[t].rights),null!=e.links&&null!=userinfo.links)for(var o in e.links)o.startsWith("ugrp/")&&null!=userinfo.links[o]&&null!=e.links[o].rights&&(n|=e.links[o].rights);return removeUserRights(n,t)}function IsNodeViewable(e,t){if(null==e)return!1;if(null==t&&(t=userinfo._id),"string"==typeof e&&null==(e=getNodeFromId(e)))return!1;if(IsMeshViewable(e.meshid,t))return!0;if(null!=e.links&&null!=e.links[t])return!0;if(null!=e.links&&null!=userinfo.links)for(var n in e.links)if(n.startsWith("ugrp/")&&null!=userinfo.links[n]&&null!=e.links[n].rights)return!0;return!1}function nameSort(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return sortCollator.compare(n,o)}function getNodeAmtVersion(e){if(null==e||null==e.intelamt||"string"!=typeof e.intelamt.ver)return 0;var t=e.intelamt.ver.split(".");return t.length<2?0:parseInt(t[0])+parseInt(t[1])/100}function putstore(e,t){try{if("undefined"==typeof localStorage||localStorage.getItem(e)==t)return;null==t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}if("_"!=e[0]){for(var n={},o=0,i=localStorage.length;o<i;++o){var a=localStorage.key(o);"_"!=a[0]&&(n[a]=localStorage.getItem(a))}meshserver.send({action:"userWebState",state:JSON.stringify(n)})}}function getstore(e,t){try{if("undefined"==typeof localStorage)return t;var n=localStorage.getItem(e);return null==n||null==n?t:n}catch(e){return t}}function center(){xtermfit&&xtermfit.fit(),onDevicesScroll(),QS("dialog").left=(getDocWidth()-300)/2+"px",deskAdjust(),null!=currentNode&&drawDeviceTimeline()}function messagebox(e,t){QH("id_dialogMessage",t),setDialogMode(1,e,1)}function statusbox(e,t){QH("id_dialogMessage",t),setDialogMode(1,e)}function getDocWidth(){return window.innerWidth?window.innerWidth:document.documentElement&&document.documentElement.clientWidth&&0!=document.documentElement.clientWidth?document.documentElement.clientWidth:document.getElementsByTagName("body")[0].clientWidth}function haltEvent(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1}function haltReturn(e){13==e.keyCode&&haltEvent(e)}function validateEmail(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function reload(){window.location.href=window.location.href}function getNodeFromId(e){for(var t in nodes)if(nodes[t]._id==e)return nodes[t];return null}function addHtmlValue(e,t){return"<table><td style=width:120px>"+e+"<td><b>"+t+"</b></table>"}function addHtmlValue2(e,t){return"<div><div style=display:inline-block;float:right>"+t+"</div><div style=display:inline-block>"+e+"</div></div>"}function addHtmlValue4(e,t){return"<table style=width:100%><td style=width:120px>"+e+"<td style=text-align:right><b>"+t+"</b></table>"}function addLink(e,t){return"<a style=cursor:pointer;text-decoration:none onclick='"+t+"'>&diams; "+e+"</a>"}function addLinkConditional(e,t,n){return n?addLink(e,t):e}function addKeyLink(e,t){return"<span tabindex=0 style=cursor:pointer;text-decoration:none onclick="+t+" onkeypress=\"if (event.key=='Enter') { "+t+' } ">'+e+" <img class=hoverButton src=images/key16.png></span>"}function addKeyLinkConditional(e,t,n){return n?"<span title='"+t+"'>"+e+" <img class=hoverButton src=images/key16.png></span>":e}function passwordcheck(e){return/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()]).{8,}/.test(e)}function getFileSizeStr(e){return"number"!=typeof e&&(e=0),1==e?"1バイト":format("{0} bytes",e)}function focusTextBox(e){setTimeout(function(){Q(e).selectionStart=Q(e).selectionEnd=65535,Q(e).focus()},0)}isFilenameValid=function(){var e=/^[^\\/:\*\?"<>\|]+$/,t=/^\./,n=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function(o){return e.test(o)&&!t.test(o)&&!n.test(o)&&"."!=o[0]}}();function printDate(e){return e.toLocaleDateString(args.locale)}function printTime(e){return e.toLocaleTimeString(args.locale)}function printDateTime(e){return e.toLocaleString(args.locale)}function printTimer(e){return zeroPad(Math.floor(e/3600),2)+":"+zeroPad(Math.floor(e/60)%60,2)+":"+zeroPad(e%60,2)}function format(e){var t=Array.prototype.slice.call(arguments,1);return e.replace(/{(\d+)}/g,function(e,n){return void 0!==t[n]?t[n]:e})}function nobreak(e){return e.split(" ").join("&nbsp;")}function getUserName(e){var t=e.split("/"),n=t[0]+"/"+t[1]+"/"+t[2],o="";if(4==t.length&&t[3].startsWith("guest:")&&(o=" - "+decode_utf8(atob(t[3].substring(6)))),users&&null!=users[n])return null!=users[n].realname?users[n].realname+o:users[n].name+o;if(currentNode&&currentNode.links&&currentNode.links[e]&&null!=currentNode.links[e].name)return currentNode.links[e].name+o;if(e==userinfo._id)return userinfo.name+o;if(nodes)for(var i in nodes)if(nodes[i].links)for(var a in nodes[i].links)if(nodes[i].links[a].name&&a==e)return nodes[i].links[a].name+o;if(meshes)for(var i in meshes)if(meshes[i].links)for(var a in meshes[i].links)if(meshes[i].links[a].name&&a==e)return meshes[i].links[a].name+o;return t[2]+o}function addDetailItem(e,t,n){return"<table style=width:100%><td>"+nobreak(e)+"<td style=text-align:right>"+t+"</table>"}function isPrivateIP(e){return e.startsWith("10.")||e.startsWith("172.16.")||e.startsWith("192.168.")}function encodeURIComponentEx(e){return encodeURIComponent(e).replace(/'/g,"%27")}function safeNewWindow(e,t){var n=window.open(e,t,"noopener,noreferrer");n&&(n.opener=null)}function isWindowsNode(e){return 2==e.mtype&&null!=e.agent&&null!=e.agent.id&&[1,2,3,4,21,22,34,42,43].indexOf(e.agent.id)>=0}</script>