@profoundlogic/coderflow-server 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/base-image/Dockerfile +5 -0
  2. package/dist/base-image/agent-wrapper.sh +12 -2
  3. package/dist/coder-server.js +1 -1
  4. package/dist/config.js +1 -1
  5. package/dist/lib/agent-keepalive.js +1 -1
  6. package/dist/lib/api-keys.js +1 -1
  7. package/dist/lib/apiKeys.js +1 -1
  8. package/dist/lib/app-server-ports.js +1 -1
  9. package/dist/lib/auto-judge.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/build-history.js +1 -1
  12. package/dist/lib/build-output-service.js +1 -1
  13. package/dist/lib/build-scheduler.js +1 -1
  14. package/dist/lib/build-service.js +1 -1
  15. package/dist/lib/ca-certificates.js +1 -1
  16. package/dist/lib/claude-oauth-refresh.js +1 -1
  17. package/dist/lib/cli/build.js +1 -1
  18. package/dist/lib/cli/config-command.js +1 -1
  19. package/dist/lib/cli/config.js +1 -1
  20. package/dist/lib/cli/create-user.js +1 -1
  21. package/dist/lib/cli/init.js +1 -1
  22. package/dist/lib/cli/jira.js +1 -1
  23. package/dist/lib/cli/license.js +1 -1
  24. package/dist/lib/cli/server-manager.js +1 -1
  25. package/dist/lib/container-tokens.js +1 -1
  26. package/dist/lib/data-dir.js +1 -1
  27. package/dist/lib/deployment-history.js +1 -1
  28. package/dist/lib/deployment-service.js +1 -1
  29. package/dist/lib/docker-utils.js +1 -1
  30. package/dist/lib/email.js +1 -1
  31. package/dist/lib/emailTemplates.js +1 -1
  32. package/dist/lib/entitlement.js +1 -1
  33. package/dist/lib/fetch-utils.js +1 -1
  34. package/dist/lib/git-commit-details-route.js +1 -1
  35. package/dist/lib/git-history-diff-guardrails.js +1 -1
  36. package/dist/lib/git-provider-service.js +1 -1
  37. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  38. package/dist/lib/git-provider-setup/index.js +1 -1
  39. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  40. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  41. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  42. package/dist/lib/git-providers/github-app-provider.js +1 -1
  43. package/dist/lib/git-providers/index.js +1 -1
  44. package/dist/lib/git-providers/provider-factory.js +1 -1
  45. package/dist/lib/git-providers/provider-interface.js +1 -1
  46. package/dist/lib/github-urls.js +1 -1
  47. package/dist/lib/group-objective-linking.js +1 -0
  48. package/dist/lib/jira-client.js +1 -1
  49. package/dist/lib/judge-blinding.js +1 -0
  50. package/dist/lib/logger.js +1 -1
  51. package/dist/lib/model-fetcher.js +1 -1
  52. package/dist/lib/notifications.js +1 -1
  53. package/dist/lib/oidc-auth.js +1 -1
  54. package/dist/lib/oidc-device-flow.js +1 -1
  55. package/dist/lib/passwordTokens.js +1 -1
  56. package/dist/lib/pin-cascade.js +1 -1
  57. package/dist/lib/provider-accounts.js +1 -1
  58. package/dist/lib/provider-oauth.js +1 -1
  59. package/dist/lib/provider-profile.js +1 -1
  60. package/dist/lib/provider-token-refresh.js +1 -1
  61. package/dist/lib/request-url.js +1 -1
  62. package/dist/lib/rewind.js +1 -1
  63. package/dist/lib/roles.js +1 -1
  64. package/dist/lib/secrets.js +1 -1
  65. package/dist/lib/setup-repo-git-auth.js +1 -1
  66. package/dist/lib/state-capture.js +1 -1
  67. package/dist/lib/static-files.js +1 -1
  68. package/dist/lib/task-name-generator.js +1 -1
  69. package/dist/lib/user-git-oauth.js +1 -1
  70. package/dist/lib/user-git-tokens.js +1 -1
  71. package/dist/lib/users.js +1 -1
  72. package/dist/middleware/requireAuth.js +1 -1
  73. package/dist/middleware/requireInit.js +1 -1
  74. package/dist/middleware/requirePermission.js +1 -1
  75. package/dist/package.json +1 -1
  76. package/dist/routes/apiKeys.js +1 -1
  77. package/dist/routes/auth-oidc.js +1 -1
  78. package/dist/routes/auth.js +1 -1
  79. package/dist/routes/build.js +1 -1
  80. package/dist/routes/containers.js +1 -1
  81. package/dist/routes/deploy-task.js +1 -1
  82. package/dist/routes/environment-management.js +1 -1
  83. package/dist/routes/environments.js +1 -1
  84. package/dist/routes/external-skills.js +1 -1
  85. package/dist/routes/git-credentials.js +1 -1
  86. package/dist/routes/git-oauth.js +1 -1
  87. package/dist/routes/git-provider-setup.js +1 -1
  88. package/dist/routes/health.js +1 -1
  89. package/dist/routes/jira.js +1 -1
  90. package/dist/routes/objective-management.js +1 -1
  91. package/dist/routes/password.js +1 -1
  92. package/dist/routes/prompt.js +1 -1
  93. package/dist/routes/provider-auth.js +1 -1
  94. package/dist/routes/qa.js +1 -1
  95. package/dist/routes/settings.js +1 -1
  96. package/dist/routes/skill-management.js +1 -1
  97. package/dist/routes/skills.js +1 -1
  98. package/dist/routes/tasks.js +1 -1
  99. package/dist/routes/templates.js +1 -1
  100. package/dist/routes/test-task.js +1 -1
  101. package/dist/routes/test.js +1 -1
  102. package/dist/routes/users.js +1 -1
  103. package/dist/routes/visualizations.js +1 -1
  104. package/dist/scripts/create-user.js +1 -1
  105. package/dist/start.js +1 -1
  106. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  107. package/dist/web-ui/public/activity-feed.js +1 -1
  108. package/dist/web-ui/public/activity-formatters.js +1 -1
  109. package/dist/web-ui/public/agent-event-parser.js +1 -1
  110. package/dist/web-ui/public/app.js +1 -1
  111. package/dist/web-ui/public/approve-dialog.js +1 -1
  112. package/dist/web-ui/public/comments-widget.js +1 -1
  113. package/dist/web-ui/public/diff-utils.js +1 -1
  114. package/dist/web-ui/public/environments.html +4 -1
  115. package/dist/web-ui/public/environments.js +1 -1
  116. package/dist/web-ui/public/feedback-widget.js +1 -1
  117. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  118. package/dist/web-ui/public/git-history.js +1 -1
  119. package/dist/web-ui/public/git-status.js +1 -1
  120. package/dist/web-ui/public/index.html +2 -0
  121. package/dist/web-ui/public/index.js +1 -1
  122. package/dist/web-ui/public/login.js +1 -1
  123. package/dist/web-ui/public/markdown-editor.js +1 -1
  124. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  125. package/dist/web-ui/public/modal-maximize.js +1 -1
  126. package/dist/web-ui/public/notifications.js +1 -1
  127. package/dist/web-ui/public/server-health.js +1 -1
  128. package/dist/web-ui/public/settings.css +181 -44
  129. package/dist/web-ui/public/settings.html +156 -167
  130. package/dist/web-ui/public/settings.js +1 -1
  131. package/dist/web-ui/public/setup-password.js +1 -1
  132. package/dist/web-ui/public/skills.js +1 -1
  133. package/dist/web-ui/public/sse-client.js +1 -1
  134. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  135. package/dist/web-ui/public/styles.css +136 -2
  136. package/dist/web-ui/public/task.js +1 -1
  137. package/dist/web-ui/public/terminal.js +1 -1
  138. package/dist/web-ui/public/theme.js +1 -1
  139. package/dist/web-ui/public/users.js +1 -1
  140. package/dist/web-ui/public/variant-grouping.js +1 -1
  141. package/package.json +1 -1
@@ -1 +1 @@
1
- (function(_0x2ebcfc,_0x92eb86){const _0x3c539c=_0x25bd,_0x4e2901=_0x2ebcfc();while(!![]){try{const _0x2be733=-parseInt(_0x3c539c(0x171))/0x1+-parseInt(_0x3c539c(0x177))/0x2+parseInt(_0x3c539c(0x161))/0x3+-parseInt(_0x3c539c(0x168))/0x4+parseInt(_0x3c539c(0x15d))/0x5+-parseInt(_0x3c539c(0x160))/0x6+parseInt(_0x3c539c(0x16e))/0x7;if(_0x2be733===_0x92eb86)break;else _0x4e2901['push'](_0x4e2901['shift']());}catch(_0x81f3ae){_0x4e2901['push'](_0x4e2901['shift']());}}}(_0x4d3f,0x50876));const DEFAULT_DURATION_MS=0xfa;function _0x4d3f(){const _0x5a1c38=['BgvMDa','mteXmtC1mKffC2f5za','DhjHBNnMB3jTt3jPz2LU','y2fUy2vS','AgvPz2H0','y29UDgfPBNm','Dg9Nz2XL','y2XHC3nmAxn0','mtu2ndaYnvj6wezZza','C3r5Bgu','lM1VzgfSlwnVBNrLBNq','mJC3mZyYywT0A1bf','mtK0mZC4mw9oAeXftW','Bwf0y2HnzwrPyq','zM9YrwfJAa','D2LSBenOyw5Nzq','DhjHBNnPDgLVBG','z2v0qw5PBwf0Aw9UCW','C2v0sxrLBq','ntKZodiWrxr2Ewvl','Dg9W','Bwf4Aw1PEMvK','z2v0qM91BMrPBMDdBgLLBNrszwn0','ywrKrxzLBNrmAxn0zw5LCG','D2LKDgG','mJyYnZa5m05vuM5xzW','DhjHBNnSyxrLka','BM9Uzq','mJu1nJi3BxDzq21s','CxvLCNLtzwXLy3rVCG','Dg9WigXLzNq','DhjHBNnMB3jT','AxngAw5PDgu'];_0x4d3f=function(){return _0x5a1c38;};return _0x4d3f();}function prefersReducedMotion(){const _0x5ca449=_0x25bd;try{return window[_0x5ca449(0x162)]&&window[_0x5ca449(0x162)]('(prefers-reduced-motion:\x20reduce)')['matches'];}catch{return![];}}function _0x25bd(_0x9478ba,_0x2157d1){_0x9478ba=_0x9478ba-0x159;const _0x4d3f0b=_0x4d3f();let _0x25bd8b=_0x4d3f0b[_0x9478ba];if(_0x25bd['RoMHXz']===undefined){var _0x4be845=function(_0x3bc7c0){const _0xb933a2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x582663='',_0x55cfae='';for(let _0x5e237e=0x0,_0x4fd64,_0x4a46dd,_0x48e450=0x0;_0x4a46dd=_0x3bc7c0['charAt'](_0x48e450++);~_0x4a46dd&&(_0x4fd64=_0x5e237e%0x4?_0x4fd64*0x40+_0x4a46dd:_0x4a46dd,_0x5e237e++%0x4)?_0x582663+=String['fromCharCode'](0xff&_0x4fd64>>(-0x2*_0x5e237e&0x6)):0x0){_0x4a46dd=_0xb933a2['indexOf'](_0x4a46dd);}for(let _0xe88ab2=0x0,_0x24f983=_0x582663['length'];_0xe88ab2<_0x24f983;_0xe88ab2++){_0x55cfae+='%'+('00'+_0x582663['charCodeAt'](_0xe88ab2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55cfae);};_0x25bd['asAFif']=_0x4be845,_0x25bd['eofwQa']={},_0x25bd['RoMHXz']=!![];}const _0x14fc0e=_0x4d3f0b[0x0],_0x507664=_0x9478ba+_0x14fc0e,_0x151bd5=_0x25bd['eofwQa'][_0x507664];return!_0x151bd5?(_0x25bd8b=_0x25bd['asAFif'](_0x25bd8b),_0x25bd['eofwQa'][_0x507664]=_0x25bd8b):_0x25bd8b=_0x151bd5,_0x25bd8b;}function safeCancelAnimations(_0x582663){const _0x547bbd=_0x25bd;if(!_0x582663||typeof _0x582663[_0x547bbd(0x166)]!=='function')return;try{_0x582663[_0x547bbd(0x166)]()[_0x547bbd(0x163)](_0x55cfae=>_0x55cfae[_0x547bbd(0x179)]());}catch{}}function animateRestoreFlip({contentEl:_0x5e237e,fromRect:_0x4fd64,toRect:_0x4a46dd,durationMs:_0x48e450}){const _0xbe0e83=_0x25bd;if(!_0x5e237e)return;if(!_0x4fd64||!_0x4a46dd)return;if(prefersReducedMotion())return;const _0xe88ab2=_0x4a46dd[_0xbe0e83(0x16d)]||0x0,_0x24f983=_0x4a46dd[_0xbe0e83(0x159)]||0x0,_0x5afa5f=_0x4fd64[_0xbe0e83(0x16d)]||0x0,_0x1b1412=_0x4fd64[_0xbe0e83(0x159)]||0x0;if(_0xe88ab2<=0x0||_0x24f983<=0x0||_0x5afa5f<=0x0||_0x1b1412<=0x0)return;const _0x4e5d6e=_0x4fd64[_0xbe0e83(0x176)]-_0x4a46dd[_0xbe0e83(0x176)],_0x3ae12c=_0x4fd64[_0xbe0e83(0x169)]-_0x4a46dd['top'],_0x3d3ddb=_0x5afa5f/_0xe88ab2,_0xa4cdd2=_0x1b1412/_0x24f983;if(!Number[_0xbe0e83(0x175)](_0x4e5d6e)||!Number[_0xbe0e83(0x175)](_0x3ae12c)||!Number[_0xbe0e83(0x175)](_0x3d3ddb)||!Number[_0xbe0e83(0x175)](_0xa4cdd2))return;safeCancelAnimations(_0x5e237e);const _0x52deec=_0x5e237e['style'][_0xbe0e83(0x165)],_0x167722=_0x5e237e[_0xbe0e83(0x15e)]['transformOrigin'],_0x5ebd58=_0x5e237e[_0xbe0e83(0x15e)]['willChange'];_0x5e237e['style'][_0xbe0e83(0x165)]='none',_0x5e237e[_0xbe0e83(0x15e)][_0xbe0e83(0x178)]=_0xbe0e83(0x173),_0x5e237e['style'][_0xbe0e83(0x164)]=_0xbe0e83(0x174);const _0x44b46d=_0xbe0e83(0x16f)+_0x4e5d6e+'px,\x20'+_0x3ae12c+'px)\x20scale('+_0x3d3ddb+',\x20'+_0xa4cdd2+')',_0x2cdd87=_0x5e237e['animate']([{'transform':_0x44b46d},{'transform':_0xbe0e83(0x170)}],{'duration':_0x48e450,'easing':'ease','fill':'both'}),_0x5e3a9e=()=>{const _0x5a8c69=_0xbe0e83;_0x5e237e[_0x5a8c69(0x15e)][_0x5a8c69(0x165)]=_0x52deec,_0x5e237e['style'][_0x5a8c69(0x178)]=_0x167722,_0x5e237e[_0x5a8c69(0x15e)][_0x5a8c69(0x164)]=_0x5ebd58;};_0x2cdd87[_0xbe0e83(0x16c)]('finish',_0x5e3a9e,{'once':!![]}),_0x2cdd87['addEventListener'](_0xbe0e83(0x179),_0x5e3a9e,{'once':!![]});}export function toggleModalMaximize(_0x3ce595,_0x425850={}){const _0x86b2ad=_0x25bd;if(!_0x3ce595)return;const {storageKey:_0xff8f6d,updateIcon:_0x5a7b44,onAfterToggle:_0xd8fd0e,durationMs:durationMs=DEFAULT_DURATION_MS}=_0x425850,_0xc54023=_0x3ce595[_0x86b2ad(0x172)](_0x86b2ad(0x15f)),_0x170eda=_0x3ce595[_0x86b2ad(0x15c)][_0x86b2ad(0x15a)](_0x86b2ad(0x16a)),_0x33dda4=!_0x170eda;if(!_0xc54023){_0x3ce595['classList'][_0x86b2ad(0x15b)]('maximized'),_0x5a7b44?.(_0x33dda4),_0xd8fd0e?.(_0x33dda4);if(_0xff8f6d)try{localStorage['setItem'](_0xff8f6d,String(_0x33dda4));}catch{}return;}if(_0x170eda&&!prefersReducedMotion()){const _0x15bcd3=_0xc54023[_0x86b2ad(0x16b)]();_0x3ce595[_0x86b2ad(0x15c)]['remove'](_0x86b2ad(0x16a));const _0x406696=_0xc54023[_0x86b2ad(0x16b)]();animateRestoreFlip({'contentEl':_0xc54023,'fromRect':_0x15bcd3,'toRect':_0x406696,'durationMs':durationMs});}else _0x3ce595[_0x86b2ad(0x15c)][_0x86b2ad(0x15b)](_0x86b2ad(0x16a));_0x5a7b44?.(_0x33dda4),_0xd8fd0e?.(_0x33dda4);if(_0xff8f6d)try{localStorage[_0x86b2ad(0x167)](_0xff8f6d,String(_0x33dda4));}catch{}}
1
+ (function(_0x1736da,_0x26e280){const _0x7fc2ed=_0x4ce4,_0x1a9a39=_0x1736da();while(!![]){try{const _0xb4217e=parseInt(_0x7fc2ed(0x96))/0x1*(parseInt(_0x7fc2ed(0xb2))/0x2)+parseInt(_0x7fc2ed(0xb6))/0x3+-parseInt(_0x7fc2ed(0xa1))/0x4+-parseInt(_0x7fc2ed(0xab))/0x5+-parseInt(_0x7fc2ed(0xa2))/0x6+-parseInt(_0x7fc2ed(0x98))/0x7+parseInt(_0x7fc2ed(0x93))/0x8*(parseInt(_0x7fc2ed(0xb7))/0x9);if(_0xb4217e===_0x26e280)break;else _0x1a9a39['push'](_0x1a9a39['shift']());}catch(_0x21aed4){_0x1a9a39['push'](_0x1a9a39['shift']());}}}(_0x2a2a,0x3d359));const DEFAULT_DURATION_MS=0xfa;function _0x2a2a(){const _0x4907b2=['ChGSia','DhjHBNnSyxrLka','CMvTB3zL','mtG4nJe4ne52v1rgwa','mJC3otqYmMz1qurpyG','zMLUAxnO','y2XHC3nmAxn0','D2LSBenOyw5Nzq','BgvMDa','z2v0qM91BMrPBMDdBgLLBNrszwn0','AgvPz2H0','Bwf0y2HnzwrPyq','z2v0qw5PBwf0Aw9UCW','nZG1mdy1uu1Ythj0','y2fUy2vS','Bwf0y2HLCW','BM9Uzq','khbYzwzLCNmTCMvKDwnLzc1TB3rPB246ihjLzhvJzsK','C3r5Bgu','D2LKDgG','mMTPuLPOBa','DhjHBNnMB3jTt3jPz2LU','DhjHBNnMB3jT','Dg9W','mtq2nZG5n01ZtM1puW','owfgB1D1ua','CxvLCNLtzwXLy3rVCG','zM9YrwfJAa','Dg9Nz2XL','Dg9WigXLzNq','ody4mJCYohbrDhPmEG','C2v0sxrLBq','DhjHBNnPDgLVBG','mty3mda2DMPTtej4','yM90Aa','mJC5mZK1ow5HvgXHuq','zwfZzq','AxngAw5PDgu','zNvUy3rPB24','Bwf4Aw1PEMvK','ywrKrxzLBNrmAxn0zw5LCG'];_0x2a2a=function(){return _0x4907b2;};return _0x2a2a();}function prefersReducedMotion(){const _0x33e28b=_0x4ce4;try{return window[_0x33e28b(0xa9)]&&window['matchMedia'](_0x33e28b(0xaf))[_0x33e28b(0xad)];}catch{return![];}}function safeCancelAnimations(_0x285c71){const _0x4b7b4d=_0x4ce4;if(!_0x285c71||typeof _0x285c71[_0x4b7b4d(0xaa)]!==_0x4b7b4d(0x9b))return;try{_0x285c71[_0x4b7b4d(0xaa)]()[_0x4b7b4d(0xb9)](_0x2f76f1=>_0x2f76f1[_0x4b7b4d(0xac)]());}catch{}}function animateRestoreFlip({contentEl:_0x4affce,fromRect:_0x567fb5,toRect:_0x4a6d1f,durationMs:_0x4edb7c}){const _0x8872bd=_0x4ce4;if(!_0x4affce)return;if(!_0x567fb5||!_0x4a6d1f)return;if(prefersReducedMotion())return;const _0x35f084=_0x4a6d1f[_0x8872bd(0xb1)]||0x0,_0x451fee=_0x4a6d1f[_0x8872bd(0xa8)]||0x0,_0xaf7b0a=_0x567fb5[_0x8872bd(0xb1)]||0x0,_0x531b83=_0x567fb5[_0x8872bd(0xa8)]||0x0;if(_0x35f084<=0x0||_0x451fee<=0x0||_0xaf7b0a<=0x0||_0x531b83<=0x0)return;const _0x2e2517=_0x567fb5[_0x8872bd(0xa6)]-_0x4a6d1f[_0x8872bd(0xa6)],_0x2ef189=_0x567fb5[_0x8872bd(0xb5)]-_0x4a6d1f[_0x8872bd(0xb5)],_0x197e6f=_0xaf7b0a/_0x35f084,_0x397b1e=_0x531b83/_0x451fee;if(!Number['isFinite'](_0x2e2517)||!Number[_0x8872bd(0x9a)](_0x2ef189)||!Number[_0x8872bd(0x9a)](_0x197e6f)||!Number[_0x8872bd(0x9a)](_0x397b1e))return;safeCancelAnimations(_0x4affce);const _0x4ad46a=_0x4affce[_0x8872bd(0xb0)][_0x8872bd(0x95)],_0xa3e8b3=_0x4affce['style'][_0x8872bd(0xb3)],_0x45b41e=_0x4affce[_0x8872bd(0xb0)][_0x8872bd(0xa5)];_0x4affce['style'][_0x8872bd(0x95)]=_0x8872bd(0xae),_0x4affce[_0x8872bd(0xb0)][_0x8872bd(0xb3)]=_0x8872bd(0xbb),_0x4affce[_0x8872bd(0xb0)][_0x8872bd(0xa5)]=_0x8872bd(0xb4);const _0x38037a=_0x8872bd(0x9f)+_0x2e2517+_0x8872bd(0x9e)+_0x2ef189+'px)\x20scale('+_0x197e6f+',\x20'+_0x397b1e+')',_0x247f10=_0x4affce['animate']([{'transform':_0x38037a},{'transform':_0x8872bd(0xae)}],{'duration':_0x4edb7c,'easing':_0x8872bd(0x99),'fill':_0x8872bd(0x97)}),_0x299564=()=>{const _0x39f136=_0x8872bd;_0x4affce[_0x39f136(0xb0)][_0x39f136(0x95)]=_0x4ad46a,_0x4affce[_0x39f136(0xb0)]['transformOrigin']=_0xa3e8b3,_0x4affce[_0x39f136(0xb0)][_0x39f136(0xa5)]=_0x45b41e;};_0x247f10[_0x8872bd(0x9d)](_0x8872bd(0xa3),_0x299564,{'once':!![]}),_0x247f10[_0x8872bd(0x9d)](_0x8872bd(0xac),_0x299564,{'once':!![]});}function _0x4ce4(_0x149af1,_0x1033b0){_0x149af1=_0x149af1-0x93;const _0x2a2ac2=_0x2a2a();let _0x4ce4fb=_0x2a2ac2[_0x149af1];if(_0x4ce4['nmlOuw']===undefined){var _0x29b605=function(_0x3e3373){const _0x27ba7c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x285c71='',_0x2f76f1='';for(let _0x4affce=0x0,_0x567fb5,_0x4a6d1f,_0x4edb7c=0x0;_0x4a6d1f=_0x3e3373['charAt'](_0x4edb7c++);~_0x4a6d1f&&(_0x567fb5=_0x4affce%0x4?_0x567fb5*0x40+_0x4a6d1f:_0x4a6d1f,_0x4affce++%0x4)?_0x285c71+=String['fromCharCode'](0xff&_0x567fb5>>(-0x2*_0x4affce&0x6)):0x0){_0x4a6d1f=_0x27ba7c['indexOf'](_0x4a6d1f);}for(let _0x35f084=0x0,_0x451fee=_0x285c71['length'];_0x35f084<_0x451fee;_0x35f084++){_0x2f76f1+='%'+('00'+_0x285c71['charCodeAt'](_0x35f084)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2f76f1);};_0x4ce4['CuEMwO']=_0x29b605,_0x4ce4['pJilFi']={},_0x4ce4['nmlOuw']=!![];}const _0x1aa1d9=_0x2a2ac2[0x0],_0x43b56d=_0x149af1+_0x1aa1d9,_0x455535=_0x4ce4['pJilFi'][_0x43b56d];return!_0x455535?(_0x4ce4fb=_0x4ce4['CuEMwO'](_0x4ce4fb),_0x4ce4['pJilFi'][_0x43b56d]=_0x4ce4fb):_0x4ce4fb=_0x455535,_0x4ce4fb;}export function toggleModalMaximize(_0x9da75c,_0x4b7575={}){const _0x71fc26=_0x4ce4;if(!_0x9da75c)return;const {storageKey:_0x46a9d5,updateIcon:_0x3f0c72,onAfterToggle:_0x38ced9,durationMs:durationMs=DEFAULT_DURATION_MS}=_0x4b7575,_0x4bab0e=_0x9da75c[_0x71fc26(0xb8)]('.modal-content'),_0x3f5719=_0x9da75c[_0x71fc26(0xa4)]['contains'](_0x71fc26(0x9c)),_0x3a4aa0=!_0x3f5719;if(!_0x4bab0e){_0x9da75c['classList'][_0x71fc26(0xba)](_0x71fc26(0x9c)),_0x3f0c72?.(_0x3a4aa0),_0x38ced9?.(_0x3a4aa0);if(_0x46a9d5)try{localStorage[_0x71fc26(0x94)](_0x46a9d5,String(_0x3a4aa0));}catch{}return;}if(_0x3f5719&&!prefersReducedMotion()){const _0x1dca2f=_0x4bab0e[_0x71fc26(0xa7)]();_0x9da75c[_0x71fc26(0xa4)][_0x71fc26(0xa0)](_0x71fc26(0x9c));const _0x5526d0=_0x4bab0e[_0x71fc26(0xa7)]();animateRestoreFlip({'contentEl':_0x4bab0e,'fromRect':_0x1dca2f,'toRect':_0x5526d0,'durationMs':durationMs});}else _0x9da75c[_0x71fc26(0xa4)][_0x71fc26(0xba)]('maximized');_0x3f0c72?.(_0x3a4aa0),_0x38ced9?.(_0x3a4aa0);if(_0x46a9d5)try{localStorage[_0x71fc26(0x94)](_0x46a9d5,String(_0x3a4aa0));}catch{}}
@@ -1 +1 @@
1
- function _0x4cdd(_0x239836,_0xe0fb4d){_0x239836=_0x239836-0x135;const _0x58c881=_0x58c8();let _0x4cddbe=_0x58c881[_0x239836];if(_0x4cdd['zjSLOC']===undefined){var _0x329e83=function(_0x566bad){const _0x4ac64d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xa2af6c='',_0x5b643e='';for(let _0x10bc93=0x0,_0x3e9e6c,_0x3958dd,_0x17b80f=0x0;_0x3958dd=_0x566bad['charAt'](_0x17b80f++);~_0x3958dd&&(_0x3e9e6c=_0x10bc93%0x4?_0x3e9e6c*0x40+_0x3958dd:_0x3958dd,_0x10bc93++%0x4)?_0xa2af6c+=String['fromCharCode'](0xff&_0x3e9e6c>>(-0x2*_0x10bc93&0x6)):0x0){_0x3958dd=_0x4ac64d['indexOf'](_0x3958dd);}for(let _0xb7ac30=0x0,_0xbaca5e=_0xa2af6c['length'];_0xb7ac30<_0xbaca5e;_0xb7ac30++){_0x5b643e+='%'+('00'+_0xa2af6c['charCodeAt'](_0xb7ac30)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b643e);};_0x4cdd['hmQXeZ']=_0x329e83,_0x4cdd['vWrygS']={},_0x4cdd['zjSLOC']=!![];}const _0x10e316=_0x58c881[0x0],_0x149f10=_0x239836+_0x10e316,_0x1ca141=_0x4cdd['vWrygS'][_0x149f10];return!_0x1ca141?(_0x4cddbe=_0x4cdd['hmQXeZ'](_0x4cddbe),_0x4cdd['vWrygS'][_0x149f10]=_0x4cddbe):_0x4cddbe=_0x1ca141,_0x4cddbe;}(function(_0x512d16,_0x3918ee){const _0x25995a=_0x4cdd,_0x4a6811=_0x512d16();while(!![]){try{const _0xaeb4ac=-parseInt(_0x25995a(0x16c))/0x1*(parseInt(_0x25995a(0x166))/0x2)+-parseInt(_0x25995a(0x182))/0x3+parseInt(_0x25995a(0x15c))/0x4+-parseInt(_0x25995a(0x145))/0x5*(parseInt(_0x25995a(0x17f))/0x6)+parseInt(_0x25995a(0x164))/0x7*(parseInt(_0x25995a(0x173))/0x8)+parseInt(_0x25995a(0x14f))/0x9+parseInt(_0x25995a(0x185))/0xa;if(_0xaeb4ac===_0x3918ee)break;else _0x4a6811['push'](_0x4a6811['shift']());}catch(_0x128637){_0x4a6811['push'](_0x4a6811['shift']());}}}(_0x58c8,0x420e3));function _0x58c8(){const _0x9b2ed6=['BMfTzq','CMvXDwLYzuLUDgvYywn0Aw9U','DhjPBq','otaXmZeZs2zoCwPU','4PYfifrHC2SGq29TCgXLDgvKifn1y2nLC3nMDwXSEq','mLrOC2X4za','q09ervjFquDftLq','zgvUAwvK','B3bLBG','C2LSzw50','C3rHDhvZ','nde3odC4qwzUtvLy','y29TCgXLDgvK','CMvTB3zLsxrLBq','z3jHBNrLza','rMfPBgvKihrVihjLCxvLC3qGBM90AwzPy2f0Aw9UihbLCM1PC3nPB246','DgvZDa','BM90AwzPy2f0Aw9UCY1LBMfIBgvK','mZjRre9nBuC','C3rHCNrZv2L0Aa','zgvMyxvSDf9Hz2vUDa','zgvWBg95rgvZy3jPChrPB24','Dw5ZDxbWB3j0zwq','rgvWBg95oIa','zM9YrwfJAa','zgf0yq','BM90AwzPzwqT','DgfZA1r5Cgu','yMfKz2u','lI4U','mJu4qxHXzK1m','tM90AwzPy2f0Aw9UihbLCM1PC3nPB24GBM90igDYyw50zwq','AxnbCNjHEq','mJG3mJq3zKHfDwLd','B25JBgLJAW','C2HVDW','mJy5odCZmgXZs0LqDa','zgvZy3jPChrPB24','D2fYBG','Dhj1zq','zxHPDf9JB2rL','CMvXDwvZDfbLCM1PC3nPB24','vw5RBM93BG','AxnfBMfIBgvK','y2XVC2u','vgvZDa','zM9JDxm','DgfN','zhvYyxrPB24','4P2mifrHC2SGrMfPBgvK','BgvUz3rO','Aw5ZDhj1y3rPB25Z','A2v5','z2v0sxrLBq','mtm3nJvKs2Dgsem','AgfZ','y2HHCKf0','AxntDxbWB3j0zwq','zM9SBg93vxbiAxn0B3j5','zgvWBg95uhjVzMLSzq','x2jSyw5R','l2zHDMLJB24UAwnV','CgvYBwLZC2LVBG','DgfZA0LK','nduXntu3Bgjbsuns','C2XPy2u','ChvZAa','zxjYB3i','DgfZAY5ODg1Sp2LKpq','B25dBgLJAW','C3vIC3rYAw5N','zw52vMfYCW','zMfSC2u','zMfPBgvK','zxHPDenVzgu','rgvWBg95','ChjLDMvUDerLzMf1Bhq','mJy5otq4sgroDvDf','vgvZDdOG','yM9KEq','C2v0sxrLBq','ic0G'];_0x58c8=function(){return _0x9b2ed6;};return _0x58c8();}export const NotificationManager={'isSupported'(){return'Notification'in window;},'isEnabled'(){const _0x1ea1da=_0x4cdd;if(!this[_0x1ea1da(0x148)]())return![];return localStorage[_0x1ea1da(0x144)]('notifications-enabled')==='true';},'setEnabled'(_0xa2af6c){const _0x27083f=_0x4cdd;localStorage['setItem'](_0x27083f(0x172),_0xa2af6c?_0x27083f(0x136):_0x27083f(0x157));},'getPermission'(){const _0x4e28d7=_0x4cdd;if(!this[_0x4e28d7(0x148)]())return _0x4e28d7(0x177);return Notification[_0x4e28d7(0x14d)];},async 'requestPermission'(){const _0xd91600=_0x4cdd;if(!this[_0xd91600(0x148)]())return _0xd91600(0x177);if(Notification[_0xd91600(0x14d)]==='granted')return _0xd91600(0x16f);if(Notification[_0xd91600(0x14d)]==='denied')return _0xd91600(0x168);try{const _0x5b643e=await Notification[_0xd91600(0x138)]();return _0x5b643e;}catch(_0x10bc93){return console[_0xd91600(0x152)](_0xd91600(0x170),_0x10bc93),_0xd91600(0x168);}},async 'show'(_0x3e9e6c,_0x3958dd={}){const _0x16e263=_0x4cdd;if(!this['isEnabled']())return null;if(!this['isSupported']())return console[_0x16e263(0x135)]('Notifications\x20are\x20not\x20supported\x20in\x20this\x20browser'),null;if(Notification[_0x16e263(0x14d)]!=='granted')return console['warn'](_0x16e263(0x180)),null;try{const _0x17b80f=new Notification(_0x3e9e6c,{'icon':_0x3958dd['icon']||_0x16e263(0x14c),'badge':_0x3958dd[_0x16e263(0x17d)]||_0x16e263(0x14c),'body':_0x3958dd[_0x16e263(0x15e)]||'','tag':_0x3958dd[_0x16e263(0x13e)]||'','requireInteraction':_0x3958dd[_0x16e263(0x162)]||![],'silent':_0x3958dd[_0x16e263(0x16a)]||![],'data':_0x3958dd[_0x16e263(0x17a)]||{}});_0x3958dd[_0x16e263(0x154)]&&(_0x17b80f[_0x16e263(0x183)]=_0xb7ac30=>{const _0x143022=_0x16e263;_0xb7ac30[_0x143022(0x15b)](),window[_0x143022(0x13d)](),_0x3958dd['onClick'](_0xb7ac30,_0x17b80f),_0x17b80f[_0x143022(0x13b)]();});if(!_0x3958dd[_0x16e263(0x162)]){const _0xbaca5e=_0x3958dd[_0x16e263(0x13f)]||0x1388;setTimeout(()=>{_0x17b80f['close']();},_0xbaca5e);}return _0x17b80f;}catch(_0x29e0bd){return console[_0x16e263(0x152)]('Failed\x20to\x20show\x20notification:',_0x29e0bd),null;}},async 'notifyTaskComplete'(_0x532f63){const _0x16b164=_0x4cdd,_0xbe6a10=_0x532f63['exitCode']!==undefined?_0x532f63[_0x16b164(0x159)]:_0x532f63[_0x16b164(0x137)],_0x5eee0c=_0x532f63[_0x16b164(0x16b)]===_0x16b164(0x16d)&&_0xbe6a10===0x0,_0x91d527=_0x5eee0c?_0x16b164(0x165):_0x16b164(0x140);let _0x2c2df0;if(_0x532f63[_0x16b164(0x17c)]===_0x16b164(0x171)){const _0x559ffe=_0x532f63['testName']||_0x16b164(0x13c),_0x3a3e5e=_0x532f63['testDescription']||_0x532f63['description']||'';if(_0x3a3e5e&&_0x3a3e5e[_0x16b164(0x141)]>0x0){let _0x4a193b=_0x3a3e5e;_0x3a3e5e[_0x16b164(0x141)]>0x50&&(_0x4a193b=_0x3a3e5e[_0x16b164(0x155)](0x0,0x4d)+'...'),_0x2c2df0='Test:\x20'+_0x559ffe+_0x16b164(0x160)+_0x4a193b;}else _0x2c2df0=_0x16b164(0x15d)+_0x559ffe;}else{if(_0x532f63['taskType']==='deploy'){const _0x4e6a9d=_0x532f63[_0x16b164(0x14a)]||_0x16b164(0x15a),_0x22096e=_0x532f63[_0x16b164(0x176)]||_0x532f63['description']||'';if(_0x22096e&&_0x22096e[_0x16b164(0x141)]>0x0){let _0x86f77e=_0x22096e;_0x22096e[_0x16b164(0x141)]>0x50&&(_0x86f77e=_0x22096e['substring'](0x0,0x4d)+_0x16b164(0x17e)),_0x2c2df0=_0x16b164(0x178)+_0x4e6a9d+_0x16b164(0x160)+_0x86f77e;}else _0x2c2df0='Deploy:\x20'+_0x4e6a9d;}else{const _0x194398=_0x532f63[_0x16b164(0x161)]?_0x532f63[_0x16b164(0x161)][_0x16b164(0x163)]():null,_0x1b6493=_0x532f63[_0x16b164(0x156)]?.[_0x16b164(0x167)]||_0x532f63[_0x16b164(0x156)]?.[_0x16b164(0x175)]||_0x16b164(0x139),_0x1aeca9=_0x1b6493[_0x16b164(0x147)](0x0)['toUpperCase']()+_0x1b6493[_0x16b164(0x150)](0x1);let _0x4d279a,_0x55a630=![];if(_0x532f63['followUpHistory']&&Array[_0x16b164(0x181)](_0x532f63[_0x16b164(0x149)])&&_0x532f63['followUpHistory']['length']>0x0){const _0x5dfb3e=_0x532f63['followUpHistory'][_0x532f63['followUpHistory'][_0x16b164(0x141)]-0x1];_0x4d279a=_0x5dfb3e[_0x16b164(0x142)],_0x55a630=!![];}else _0x4d279a=_0x532f63[_0x16b164(0x186)]||_0x532f63[_0x16b164(0x142)]||_0x532f63[_0x16b164(0x14e)];_0x4d279a[_0x16b164(0x141)]>0x64&&(_0x4d279a=_0x4d279a[_0x16b164(0x155)](0x0,0x61)+_0x16b164(0x17e));const _0x1132da=_0x55a630?'[Follow-up]\x20':'';_0x194398?_0x2c2df0=_0x194398+'\x0a'+_0x1aeca9+':\x20'+_0x1132da+_0x4d279a:_0x2c2df0=_0x1aeca9+':\x20'+_0x1132da+_0x4d279a;}}return this[_0x16b164(0x184)](_0x91d527,{'body':_0x2c2df0,'tag':'task-'+_0x532f63[_0x16b164(0x14e)],'requireInteraction':![],'duration':0x1f40,'data':{'taskId':_0x532f63[_0x16b164(0x14e)]},'onClick':(_0x4b56fc,_0x182393)=>{const _0xc651f2=_0x16b164;window[_0xc651f2(0x169)](_0xc651f2(0x153)+_0x532f63[_0xc651f2(0x14e)],_0xc651f2(0x14b));}});},'shouldNotify'(_0x504125,_0x5e6788){const _0xdb1021=_0x4cdd;if(!this[_0xdb1021(0x13a)]())return![];if(_0x504125['status']!==_0xdb1021(0x16d)&&_0x504125['status']!==_0xdb1021(0x158))return![];if(!_0x5e6788[_0xdb1021(0x146)](_0x504125[_0xdb1021(0x14e)]))return![];const _0x3ed9aa=_0xdb1021(0x17b)+_0x504125[_0xdb1021(0x14e)];if(sessionStorage[_0xdb1021(0x144)](_0x3ed9aa)===_0xdb1021(0x136))return![];return!![];},'markNotified'(_0x493ee3){const _0x73aa1=_0x4cdd;sessionStorage[_0x73aa1(0x15f)](_0x73aa1(0x17b)+_0x493ee3,_0x73aa1(0x136));},'clearNotificationHistory'(){const _0x1ffe8e=_0x4cdd,_0x9debc4=[];for(let _0x2cdac7=0x0;_0x2cdac7<sessionStorage['length'];_0x2cdac7++){const _0x410d3e=sessionStorage[_0x1ffe8e(0x143)](_0x2cdac7);_0x410d3e[_0x1ffe8e(0x174)](_0x1ffe8e(0x17b))&&_0x9debc4[_0x1ffe8e(0x151)](_0x410d3e);}_0x9debc4[_0x1ffe8e(0x179)](_0x1f7a0c=>sessionStorage[_0x1ffe8e(0x16e)](_0x1f7a0c));}};
1
+ function _0x8aa3(_0x1f698a,_0x462893){_0x1f698a=_0x1f698a-0x6c;const _0x4411dc=_0x4411();let _0x8aa3a6=_0x4411dc[_0x1f698a];if(_0x8aa3['pwsiIQ']===undefined){var _0x55dc99=function(_0x1bf08c){const _0x9b3e51='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x430291='',_0x2ff6e4='';for(let _0x49a8e6=0x0,_0xf203c,_0x15be55,_0x2d12f4=0x0;_0x15be55=_0x1bf08c['charAt'](_0x2d12f4++);~_0x15be55&&(_0xf203c=_0x49a8e6%0x4?_0xf203c*0x40+_0x15be55:_0x15be55,_0x49a8e6++%0x4)?_0x430291+=String['fromCharCode'](0xff&_0xf203c>>(-0x2*_0x49a8e6&0x6)):0x0){_0x15be55=_0x9b3e51['indexOf'](_0x15be55);}for(let _0x3a4151=0x0,_0x349e28=_0x430291['length'];_0x3a4151<_0x349e28;_0x3a4151++){_0x2ff6e4+='%'+('00'+_0x430291['charCodeAt'](_0x3a4151)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2ff6e4);};_0x8aa3['uYqeWp']=_0x55dc99,_0x8aa3['lkNEPd']={},_0x8aa3['pwsiIQ']=!![];}const _0x1650c9=_0x4411dc[0x0],_0x3325f6=_0x1f698a+_0x1650c9,_0x1730b2=_0x8aa3['lkNEPd'][_0x3325f6];return!_0x1730b2?(_0x8aa3a6=_0x8aa3['uYqeWp'](_0x8aa3a6),_0x8aa3['lkNEPd'][_0x3325f6]=_0x8aa3a6):_0x8aa3a6=_0x1730b2,_0x8aa3a6;}(function(_0x3e1953,_0x374781){const _0x2af355=_0x8aa3,_0x502a65=_0x3e1953();while(!![]){try{const _0x2ee978=parseInt(_0x2af355(0x9d))/0x1*(parseInt(_0x2af355(0x77))/0x2)+-parseInt(_0x2af355(0xb9))/0x3+-parseInt(_0x2af355(0x98))/0x4*(-parseInt(_0x2af355(0x8c))/0x5)+-parseInt(_0x2af355(0xa9))/0x6*(parseInt(_0x2af355(0xa1))/0x7)+-parseInt(_0x2af355(0xb7))/0x8*(-parseInt(_0x2af355(0x6c))/0x9)+parseInt(_0x2af355(0x93))/0xa+parseInt(_0x2af355(0xa6))/0xb;if(_0x2ee978===_0x374781)break;else _0x502a65['push'](_0x502a65['shift']());}catch(_0x36ea74){_0x502a65['push'](_0x502a65['shift']());}}}(_0x4411,0xdaa9a));export const NotificationManager={'isSupported'(){return'Notification'in window;},'isEnabled'(){const _0x24255f=_0x8aa3;if(!this[_0x24255f(0x6e)]())return![];return localStorage[_0x24255f(0x99)](_0x24255f(0x81))===_0x24255f(0x7e);},'setEnabled'(_0x430291){const _0x472dae=_0x8aa3;localStorage[_0x472dae(0x82)](_0x472dae(0x81),_0x430291?'true':_0x472dae(0x72));},'getPermission'(){const _0x4fa0d2=_0x8aa3;if(!this[_0x4fa0d2(0x6e)]())return _0x4fa0d2(0x95);return Notification[_0x4fa0d2(0x7d)];},async 'requestPermission'(){const _0x5d8c75=_0x8aa3;if(!this[_0x5d8c75(0x6e)]())return'unsupported';if(Notification[_0x5d8c75(0x7d)]===_0x5d8c75(0x7f))return _0x5d8c75(0x7f);if(Notification[_0x5d8c75(0x7d)]===_0x5d8c75(0x73))return _0x5d8c75(0x73);try{const _0x2ff6e4=await Notification[_0x5d8c75(0x92)]();return _0x2ff6e4;}catch(_0x49a8e6){return console['error'](_0x5d8c75(0x78),_0x49a8e6),_0x5d8c75(0x73);}},async 'show'(_0xf203c,_0x15be55={}){const _0x3f503b=_0x8aa3;if(!this[_0x3f503b(0x6f)]())return null;if(!this['isSupported']())return console[_0x3f503b(0x6d)](_0x3f503b(0xa7)),null;if(Notification['permission']!==_0x3f503b(0x7f))return console['warn'](_0x3f503b(0xb0)),null;try{const _0x2d12f4=new Notification(_0xf203c,{'icon':_0x15be55[_0x3f503b(0xa0)]||_0x3f503b(0x83),'badge':_0x15be55['badge']||'/favicon.ico','body':_0x15be55[_0x3f503b(0xad)]||'','tag':_0x15be55[_0x3f503b(0x85)]||'','requireInteraction':_0x15be55[_0x3f503b(0x8e)]||![],'silent':_0x15be55[_0x3f503b(0xb6)]||![],'data':_0x15be55[_0x3f503b(0xab)]||{}});_0x15be55[_0x3f503b(0x8b)]&&(_0x2d12f4[_0x3f503b(0xb4)]=_0x3a4151=>{const _0x10ddd5=_0x3f503b;_0x3a4151['preventDefault'](),window['focus'](),_0x15be55[_0x10ddd5(0x8b)](_0x3a4151,_0x2d12f4),_0x2d12f4[_0x10ddd5(0x86)]();});if(!_0x15be55[_0x3f503b(0x8e)]){const _0x349e28=_0x15be55[_0x3f503b(0xb2)]||0x1388;setTimeout(()=>{const _0x5ed2d2=_0x3f503b;_0x2d12f4[_0x5ed2d2(0x86)]();},_0x349e28);}return _0x2d12f4;}catch(_0x1000a8){return console['error'](_0x3f503b(0x9c),_0x1000a8),null;}},async 'notifyTaskComplete'(_0x4ff6ee){const _0xf1d682=_0x8aa3,_0x36de82=_0x4ff6ee['exitCode']!==undefined?_0x4ff6ee[_0xf1d682(0x97)]:_0x4ff6ee[_0xf1d682(0xb8)],_0x58ed7b=_0x4ff6ee[_0xf1d682(0x88)]===_0xf1d682(0x89)&&_0x36de82===0x0,_0x997179=_0x58ed7b?_0xf1d682(0xba):_0xf1d682(0xa4);let _0x84be0e;if(_0x4ff6ee[_0xf1d682(0x9e)]===_0xf1d682(0xa8)){const _0x55aa6a=_0x4ff6ee['testName']||_0xf1d682(0xb3),_0x47a104=_0x4ff6ee[_0xf1d682(0x75)]||_0x4ff6ee[_0xf1d682(0xac)]||'';if(_0x47a104&&_0x47a104[_0xf1d682(0x71)]>0x0){let _0x33f6cf=_0x47a104;_0x47a104['length']>0x50&&(_0x33f6cf=_0x47a104[_0xf1d682(0x9b)](0x0,0x4d)+_0xf1d682(0x90)),_0x84be0e=_0xf1d682(0x9f)+_0x55aa6a+_0xf1d682(0xa3)+_0x33f6cf;}else _0x84be0e='Test:\x20'+_0x55aa6a;}else{if(_0x4ff6ee[_0xf1d682(0x9e)]==='deploy'){const _0x236b42=_0x4ff6ee[_0xf1d682(0x84)]||_0xf1d682(0x8a),_0x283db7=_0x4ff6ee[_0xf1d682(0x79)]||_0x4ff6ee[_0xf1d682(0xac)]||'';if(_0x283db7&&_0x283db7[_0xf1d682(0x71)]>0x0){let _0x31601d=_0x283db7;_0x283db7[_0xf1d682(0x71)]>0x50&&(_0x31601d=_0x283db7[_0xf1d682(0x9b)](0x0,0x4d)+_0xf1d682(0x90)),_0x84be0e=_0xf1d682(0x94)+_0x236b42+_0xf1d682(0xa3)+_0x31601d;}else _0x84be0e=_0xf1d682(0x94)+_0x236b42;}else{const _0x810df0=_0x4ff6ee['name']?_0x4ff6ee['name'][_0xf1d682(0xb5)]():null,_0x5d9082=_0x4ff6ee[_0xf1d682(0x74)]?.['CODER_AGENT']||_0x4ff6ee[_0xf1d682(0x74)]?.['default_agent']||_0xf1d682(0x70),_0x58b76b=_0x5d9082[_0xf1d682(0x96)](0x0)[_0xf1d682(0x8d)]()+_0x5d9082[_0xf1d682(0x91)](0x1);let _0x2210c2,_0x1a0f4b=![];if(_0x4ff6ee[_0xf1d682(0x7c)]&&Array[_0xf1d682(0xa2)](_0x4ff6ee[_0xf1d682(0x7c)])&&_0x4ff6ee[_0xf1d682(0x7c)][_0xf1d682(0x71)]>0x0){const _0xeb6fbc=_0x4ff6ee[_0xf1d682(0x7c)][_0x4ff6ee[_0xf1d682(0x7c)][_0xf1d682(0x71)]-0x1];_0x2210c2=_0xeb6fbc[_0xf1d682(0x80)],_0x1a0f4b=!![];}else _0x2210c2=_0x4ff6ee[_0xf1d682(0xac)]||_0x4ff6ee[_0xf1d682(0x80)]||_0x4ff6ee['taskId'];_0x2210c2['length']>0x64&&(_0x2210c2=_0x2210c2['substring'](0x0,0x61)+'...');const _0x527cfe=_0x1a0f4b?_0xf1d682(0xbb):'';_0x810df0?_0x84be0e=_0x810df0+'\x0a'+_0x58b76b+':\x20'+_0x527cfe+_0x2210c2:_0x84be0e=_0x58b76b+':\x20'+_0x527cfe+_0x2210c2;}}return this[_0xf1d682(0x7b)](_0x997179,{'body':_0x84be0e,'tag':'task-'+_0x4ff6ee['taskId'],'requireInteraction':![],'duration':0x1f40,'data':{'taskId':_0x4ff6ee['taskId']},'onClick':(_0x3058ee,_0x195e3c)=>{const _0x22c134=_0xf1d682;window['open'](_0x22c134(0x7a)+_0x4ff6ee[_0x22c134(0x9a)],_0x22c134(0x8f));}});},'shouldNotify'(_0x2f3dcd,_0x137499){const _0x9a6f49=_0x8aa3;if(!this[_0x9a6f49(0x6f)]())return![];if(_0x2f3dcd[_0x9a6f49(0x88)]!==_0x9a6f49(0x89)&&_0x2f3dcd['status']!=='failed')return![];if(!_0x137499[_0x9a6f49(0x76)](_0x2f3dcd[_0x9a6f49(0x9a)]))return![];const _0x322a75=_0x9a6f49(0x87)+_0x2f3dcd['taskId'];if(sessionStorage[_0x9a6f49(0x99)](_0x322a75)===_0x9a6f49(0x7e))return![];return!![];},'markNotified'(_0x15723e){const _0x1a67af=_0x8aa3;sessionStorage[_0x1a67af(0x82)](_0x1a67af(0x87)+_0x15723e,'true');},'clearNotificationHistory'(){const _0x595daf=_0x8aa3,_0x1a9edb=[];for(let _0x6c5633=0x0;_0x6c5633<sessionStorage[_0x595daf(0x71)];_0x6c5633++){const _0x48e24c=sessionStorage[_0x595daf(0xae)](_0x6c5633);_0x48e24c[_0x595daf(0xaf)]('notified-')&&_0x1a9edb[_0x595daf(0xb1)](_0x48e24c);}_0x1a9edb[_0x595daf(0xaa)](_0x2bec0c=>sessionStorage[_0x595daf(0xa5)](_0x2bec0c));}};function _0x4411(){const _0x1fb15a=['DgfZAY5ODg1Sp2LKpq','C2HVDW','zM9SBg93vxbiAxn0B3j5','CgvYBwLZC2LVBG','Dhj1zq','z3jHBNrLza','Aw5ZDhj1y3rPB25Z','BM90AwzPy2f0Aw9UCY1LBMfIBgvK','C2v0sxrLBq','l2zHDMLJB24UAwnV','zgvWBg95uhjVzMLSzq','DgfN','y2XVC2u','BM90AwzPzwqT','C3rHDhvZ','y29TCgXLDgvK','rgvWBg95','B25dBgLJAW','ndbMAuzXrKC','Dg9vChbLCKnHC2u','CMvXDwLYzuLUDgvYywn0Aw9U','x2jSyw5R','lI4U','C2XPy2u','CMvXDwvZDfbLCM1PC3nPB24','mtqZnJG0mhjwDKDNuW','rgvWBg95oIa','Dw5ZDxbWB3j0zwq','y2HHCKf0','zxHPDenVzgu','mta5ntjUsfnrq20','z2v0sxrLBq','DgfZA0LK','C3vIC3rYAw5N','rMfPBgvKihrVihnOB3CGBM90AwzPy2f0Aw9UoG','mtq4odm5Bg1lrMzg','DgfZA1r5Cgu','vgvZDdOG','AwnVBG','nJe2n1rrrgLXyW','AxnbCNjHEq','ic0G','4P2mifrHC2SGrMfPBgvK','CMvTB3zLsxrLBq','mJi5ndCYntrYELnAtMi','tM90AwzPy2f0Aw9UCYbHCMuGBM90ihn1ChbVCNrLzcbPBIb0AgLZigjYB3DZzxi','DgvZDa','otC5ohvfB2TMzW','zM9YrwfJAa','zgf0yq','zgvZy3jPChrPB24','yM9KEq','A2v5','C3rHCNrZv2L0Aa','tM90AwzPy2f0Aw9UihbLCM1PC3nPB24GBM90igDYyw50zwq','ChvZAa','zhvYyxrPB24','vgvZDa','B25JBgLJAW','DhjPBq','C2LSzw50','mtu5mdu2wwXbu2XA','zxHPDf9JB2rL','mty4ode3mMPquLflDa','4PYfifrHC2SGq29TCgXLDgvKifn1y2nLC3nMDwXSEq','w0zVBgXVDY11Cf0G','otbuv0vKsMS','D2fYBG','AxntDxbWB3j0zwq','AxnfBMfIBgvK','vw5RBM93BG','BgvUz3rO','zMfSC2u','zgvUAwvK','zw52vMfYCW','DgvZDerLC2nYAxb0Aw9U','AgfZ','nLvhAenrCW','rMfPBgvKihrVihjLCxvLC3qGBM90AwzPy2f0Aw9UihbLCM1PC3nPB246','zgvWBg95rgvZy3jPChrPB24'];_0x4411=function(){return _0x1fb15a;};return _0x4411();}
@@ -1 +1 @@
1
- const _0x2fd96d=_0x14fa;(function(_0x3b91e3,_0x3fb3d7){const _0x346e14=_0x14fa,_0x116ac8=_0x3b91e3();while(!![]){try{const _0x469ed4=parseInt(_0x346e14(0xd8))/0x1*(parseInt(_0x346e14(0xf5))/0x2)+parseInt(_0x346e14(0xf6))/0x3*(parseInt(_0x346e14(0x12c))/0x4)+-parseInt(_0x346e14(0x11d))/0x5*(parseInt(_0x346e14(0x11e))/0x6)+-parseInt(_0x346e14(0x10c))/0x7+-parseInt(_0x346e14(0xf1))/0x8+parseInt(_0x346e14(0x132))/0x9+-parseInt(_0x346e14(0xea))/0xa;if(_0x469ed4===_0x3fb3d7)break;else _0x116ac8['push'](_0x116ac8['shift']());}catch(_0x174b6d){_0x116ac8['push'](_0x116ac8['shift']());}}}(_0x11fd,0x22872));import{API}from'./app.js';function _0x14fa(_0x1b2583,_0x275144){_0x1b2583=_0x1b2583-0xd8;const _0x11fd6b=_0x11fd();let _0x14fa7b=_0x11fd6b[_0x1b2583];if(_0x14fa['AHNdUp']===undefined){var _0x2d99ec=function(_0xe4adc9){const _0x248d64='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2c0717='',_0x3ecbc8='';for(let _0x2cafeb=0x0,_0x553f44,_0x3ef6bb,_0x1b5636=0x0;_0x3ef6bb=_0xe4adc9['charAt'](_0x1b5636++);~_0x3ef6bb&&(_0x553f44=_0x2cafeb%0x4?_0x553f44*0x40+_0x3ef6bb:_0x3ef6bb,_0x2cafeb++%0x4)?_0x2c0717+=String['fromCharCode'](0xff&_0x553f44>>(-0x2*_0x2cafeb&0x6)):0x0){_0x3ef6bb=_0x248d64['indexOf'](_0x3ef6bb);}for(let _0x4dc166=0x0,_0x193ab9=_0x2c0717['length'];_0x4dc166<_0x193ab9;_0x4dc166++){_0x3ecbc8+='%'+('00'+_0x2c0717['charCodeAt'](_0x4dc166)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ecbc8);};_0x14fa['ppwmYS']=_0x2d99ec,_0x14fa['xOIWBi']={},_0x14fa['AHNdUp']=!![];}const _0x6b2e37=_0x11fd6b[0x0],_0x3bb9b5=_0x1b2583+_0x6b2e37,_0x5d865c=_0x14fa['xOIWBi'][_0x3bb9b5];return!_0x5d865c?(_0x14fa7b=_0x14fa['ppwmYS'](_0x14fa7b),_0x14fa['xOIWBi'][_0x3bb9b5]=_0x14fa7b):_0x14fa7b=_0x5d865c,_0x14fa7b;}let modalInjected=![];const SERVER_HEALTH_MODAL_HTML=_0x2fd96d(0x11f);function ensureModalExists(){const _0x5eecdd=_0x2fd96d;if(modalInjected||document[_0x5eecdd(0x133)](_0x5eecdd(0x12a)))return;const _0x2c0717=document[_0x5eecdd(0x10f)](_0x5eecdd(0xe9));_0x2c0717[_0x5eecdd(0x123)]=SERVER_HEALTH_MODAL_HTML,document[_0x5eecdd(0xfb)][_0x5eecdd(0x102)](_0x2c0717[_0x5eecdd(0x13c)]),modalInjected=!![];}function clampPercent(_0x3ecbc8){const _0x137186=_0x2fd96d;if(!Number[_0x137186(0xe0)](_0x3ecbc8))return 0x0;return Math[_0x137186(0xec)](0x0,Math['min'](0x64,Math['round'](_0x3ecbc8)));}function setMetricProgress(_0x2cafeb,_0x553f44,_0x3ef6bb='ok'){const _0x5269de=_0x2fd96d,_0x1b5636=document[_0x5269de(0x133)](_0x2cafeb);if(!_0x1b5636)return;const _0x4dc166=_0x1b5636[_0x5269de(0x113)],_0x193ab9=clampPercent(_0x553f44);_0x1b5636[_0x5269de(0xdd)][_0x5269de(0x13e)]=_0x193ab9+'%',_0x1b5636[_0x5269de(0xfa)]['remove'](_0x5269de(0xe2),_0x5269de(0x100),_0x5269de(0x13f)),_0x1b5636[_0x5269de(0xfa)][_0x5269de(0xf9)](_0x3ef6bb===_0x5269de(0x103)?_0x5269de(0x13f):_0x3ef6bb===_0x5269de(0x137)?'status-warning':'status-ok'),_0x4dc166&&_0x4dc166[_0x5269de(0x141)]('aria-valuenow',String(_0x193ab9));}function statusFromPercent(_0x5554a1){const _0x4f2301=_0x2fd96d;if(_0x5554a1>=0x5a)return _0x4f2301(0x103);if(_0x5554a1>=0x4b)return _0x4f2301(0x137);return'ok';}async function loadServerHealthMetrics(){const _0x4e5ca0=_0x2fd96d,_0x1028cf=document[_0x4e5ca0(0x133)](_0x4e5ca0(0xe3)),_0x996ba1=document[_0x4e5ca0(0x133)]('server-health-error'),_0x3168c3=document[_0x4e5ca0(0x133)](_0x4e5ca0(0x12f));if(!_0x1028cf||!_0x996ba1||!_0x3168c3)return;_0x1028cf[_0x4e5ca0(0xfd)]=_0x4e5ca0(0x136);try{const _0xc8d22c=await fetch('/health/metrics',{'method':'GET','headers':{'Content-Type':_0x4e5ca0(0x12d)},'credentials':_0x4e5ca0(0xdf)});if(!_0xc8d22c['ok'])throw new Error(_0x4e5ca0(0xdb)+_0xc8d22c['statusText']);const _0x4a673c=await _0xc8d22c[_0x4e5ca0(0x13b)]();document[_0x4e5ca0(0x133)](_0x4e5ca0(0xf2))[_0x4e5ca0(0xfd)]=_0x4a673c['cpu'][_0x4e5ca0(0x119)],document[_0x4e5ca0(0x133)]('memory-usage')[_0x4e5ca0(0xfd)]=_0x4a673c[_0x4e5ca0(0x112)][_0x4e5ca0(0x119)],document['getElementById'](_0x4e5ca0(0xf8))['textContent']=_0x4a673c[_0x4e5ca0(0xe7)][_0x4e5ca0(0x119)],document[_0x4e5ca0(0x133)](_0x4e5ca0(0xda))[_0x4e5ca0(0xfd)]=_0x4a673c['docker'][_0x4e5ca0(0x119)],document[_0x4e5ca0(0x133)](_0x4e5ca0(0x11b))['textContent']=_0x4a673c['uptime'][_0x4e5ca0(0x119)],document[_0x4e5ca0(0x133)](_0x4e5ca0(0x140))['textContent']=_0x4a673c['sessions']['display'],setMetricProgress(_0x4e5ca0(0x131),_0x4a673c[_0x4e5ca0(0x120)][_0x4e5ca0(0x104)],statusFromPercent(_0x4a673c[_0x4e5ca0(0x120)]['percent'])),setMetricProgress('memory-progress',_0x4a673c[_0x4e5ca0(0x112)]['percent'],statusFromPercent(_0x4a673c[_0x4e5ca0(0x112)][_0x4e5ca0(0x104)])),setMetricProgress('disk-progress',_0x4a673c[_0x4e5ca0(0xe7)]['percent'],statusFromPercent(_0x4a673c[_0x4e5ca0(0xe7)][_0x4e5ca0(0x104)]));const _0x4f078b=_0x4a673c['docker'][_0x4e5ca0(0xe4)]>0x0?_0x4a673c[_0x4e5ca0(0x142)][_0x4e5ca0(0x10e)]/_0x4a673c[_0x4e5ca0(0x142)][_0x4e5ca0(0xe4)]*0x64:0x0;setMetricProgress('docker-progress',_0x4f078b);if(_0x4a673c[_0x4e5ca0(0x12e)]){const _0x4ff6fb=document[_0x4e5ca0(0x133)](_0x4e5ca0(0x11a));document[_0x4e5ca0(0x133)](_0x4e5ca0(0x138))[_0x4e5ca0(0xfd)]=_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x119)];const _0xa292e0=document[_0x4e5ca0(0x133)](_0x4e5ca0(0x110));_0x4a673c['dockerStorage'][_0x4e5ca0(0x134)]?(_0xa292e0[_0x4e5ca0(0xfd)]=_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x134)],_0xa292e0['hidden']=![]):_0xa292e0[_0x4e5ca0(0x139)]=!![];document['getElementById'](_0x4e5ca0(0xff))[_0x4e5ca0(0xfd)]=_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x129)],document[_0x4e5ca0(0x133)](_0x4e5ca0(0xf7))[_0x4e5ca0(0xfd)]=_0x4a673c['dockerStorage'][_0x4e5ca0(0x121)][_0x4e5ca0(0x119)],document[_0x4e5ca0(0x133)]('docker-storage-containers')[_0x4e5ca0(0xfd)]=_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x109)][_0x4e5ca0(0x119)],document['getElementById'](_0x4e5ca0(0x127))['textContent']=_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x10b)]['display'],document[_0x4e5ca0(0x133)](_0x4e5ca0(0xf3))[_0x4e5ca0(0xfd)]=_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x114)][_0x4e5ca0(0x119)],setMetricProgress(_0x4e5ca0(0x128),_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0x104)],_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0xde)]),_0x4ff6fb[_0x4e5ca0(0xfa)][_0x4e5ca0(0x124)](_0x4e5ca0(0x100),'status-critical');if(_0x4a673c[_0x4e5ca0(0x12e)][_0x4e5ca0(0xde)]===_0x4e5ca0(0x103))_0x4ff6fb[_0x4e5ca0(0xfa)][_0x4e5ca0(0xf9)](_0x4e5ca0(0x13f));else _0x4a673c['dockerStorage']['status']==='warning'&&_0x4ff6fb[_0x4e5ca0(0xfa)][_0x4e5ca0(0xf9)](_0x4e5ca0(0x100));}_0x1028cf['hidden']=!![],_0x3168c3[_0x4e5ca0(0x139)]=![];}catch(_0x3bdef6){console[_0x4e5ca0(0x10d)](_0x4e5ca0(0xd9),_0x3bdef6),_0x1028cf['hidden']=!![],_0x996ba1[_0x4e5ca0(0x139)]=![],_0x996ba1[_0x4e5ca0(0xfd)]=_0x4e5ca0(0x116)+_0x3bdef6[_0x4e5ca0(0x13d)];}}function _0x11fd(){const _0x435a72=['C3r5Bgu','C3rHDhvZ','Aw5JBhvKzq','AxngAw5PDgu','C3rVCefSBenVBNrHAw5LCNm','C3rHDhvZlw9R','C2vYDMvYlwHLywX0Ac1SB2fKAw5N','Dg90ywW','y2XLyw51Cc1JB250zw50','Dg9Nz2XL','zgLZAW','Aw5MBW','zgL2','mJeXndm3mej2z2LJAa','rxnJyxbL','Bwf4','C2vYDMvYlwHLywX0Ac1JBg9Zzq','zxHWyw5Kzwq','ignVBxbSzxrLza','lM1VzgfSlw92zxjSyxK','mJiXmJqXnLj5qKXztG','y3b1lxvZywDL','zg9JA2vYlxn0B3jHz2uTyNvPBgrJywnOzq','A2v5','ng5mrLvlsG','nJblBhzsv0K','zg9JA2vYlxn0B3jHz2uTAw1Hz2vZ','zgLZAY11C2fNzq','ywrK','y2XHC3nmAxn0','yM9KEq','u2vYDMvYignSzwfUDxaGywn0Aw9UigzHAwXLzcaO','Dgv4DenVBNrLBNq','C2vYDMvYlwHLywX0Ac1VAW','zg9JA2vYlxn0B3jHz2uTCMvJBgfPBwfIBgu','C3rHDhvZlxDHCM5PBMC','u3rVChbPBMCGy29UDgfPBMvYCW','yxbWzw5Kq2HPBgq','y3jPDgLJywW','CgvYy2vUDa','A2v5zg93BG','zgLZywjSzwq','B25JBgLJAW','CMvTB3zLrxzLBNrmAxn0zw5LCG','y29UDgfPBMvYCW','yxjPys1LEhbHBMrLza','DM9SDw1LCW','mZqZt2Pfs2fV','zxjYB3i','CNvUBMLUzW','y3jLyxrLrwXLBwvUDa','zg9JA2vYlxn0B3jHz2uTyxzHAwXHyMXL','uhj1BMLUzYbeB2nRzxiGCMvZB3vYy2vZ','BwvTB3j5','CgfYzw50rwXLBwvUDa','yNvPBgrdywnOzq','y2XLyw51Cc1Zzwn0Aw9U','rMfPBgvKihrVigXVywqGC2vYDMvYig1LDhjPy3m6ia','B3bLBLnLCNzLCKHLywX0Ae1VzgfS','Dg9mB3DLCKnHC2u','zgLZCgXHEq','zg9JA2vYlxn0B3jHz2uTy2fYza','C2vYDMvYlxvWDgLTzq','zMfSC2u','nZbZD0vdwgC','nti5ntb5rgTlzwm','cJXKAxyGAwq9iNnLCNzLCI1OzwfSDgGTBw9KywWIignSyxnZpsjTB2rHBciGAgLKzgvUpGOGidXKAxyGy2XHC3m9iM1VzgfSlw92zxjSyxKIpJWVzgL2pGOGidXKAxyGy2XHC3m9iM1VzgfSlwnVBNrLBNqIpGOGicaGpgrPDIbJBgfZCZ0IBw9KywWTAgvHzgvYiJ4kicaGicaGpgGYpLnLCNzLCIbizwfSDgG8l2GYpGOGicaGica8yNv0Dg9Uihr5Cgu9iMj1DhrVBIiGy2XHC3m9iM1VzgfSlwnSB3nLiIbPzd0IC2vYDMvYlwHLywX0Ac1JBg9ZzsiGyxjPys1SywjLBd0Iq2XVC2uIpGOGicaGicaGidXZDMCGD2LKDgG9iJi0iIbOzwLNAhq9iJi0iIb2Awv3qM94psiWidaGmJqGmJqIigzPBgW9iM5VBMuIihn0CM9Rzt0Iy3vYCMvUDenVBg9YiIbZDhjVA2uTD2LKDgG9iJiIihn0CM9Rzs1SAw5Ly2fWpsjYB3vUzciGC3rYB2TLlwXPBMvQB2LUpsjYB3vUzci+cIaGicaGicaGica8BgLUzsb4mt0ImtGIihKXpsi2iIb4mJ0InIiGEti9iJe4iJ48l2XPBMu+cIaGicaGicaGica8BgLUzsb4mt0InIiGEte9iJyIihGYpsiXociGEti9iJe4iJ48l2XPBMu+cIaGicaGicaGpc9ZDMC+cIaGicaGidWVyNv0Dg9UpGOGicaGpc9KAxy+cIaGica8zgL2ignSyxnZpsjTB2rHBc1IB2r5iJ4kicaGicaGpgrPDIbPzd0IC2vYDMvYlwHLywX0Ac1SB2fKAw5NiIbJBgfZCZ0IBg9HzgLUzYi+tg9HzgLUzYbZzxj2zxiGBwv0CMLJCZWVzgL2pGOGicaGica8zgL2igLKpsjZzxj2zxiTAgvHBhrOlwvYCM9YiIbJBgfZCZ0IzxjYB3iTBwvZC2fNzsiGAgLKzgvUpJWVzgL2pGOGicaGica8zgL2igLKpsjZzxj2zxiTAgvHBhrOlwnVBNrLBNqIigHPzgrLBJ4kicaGicaGica8zgL2ignSyxnZpsjOzwfSDgGTBwv0CMLJCYi+cIaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTy2fYzci+cIaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1Py29UiJ7WN5k7pc9KAxy+cIaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1KzxrHAwXZiJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTBgfIzwWIpKnqvsbvC2fNztWVzgL2pGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY12ywX1zsiGAwq9iMnWDs11C2fNzsi+ltWVzgL2pGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1WCM9NCMvZCYiGCM9Szt0IChjVz3jLC3nIyxiIigfYAweTBgfIzwW9iKnqvsb1C2fNzsiGyxjPys12ywX1zw1PBJ0ImciGyxjPys12ywX1zw1HEd0ImtaWiJ4kicaGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1WCM9NCMvZCY1MAwXSiIbPzd0Iy3b1lxbYB2DYzxnZiJ48l2rPDJ4kicaGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGicaGpc9KAxy+cIaGicaGicaGica8l2rPDJ4kicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1JyxjKiJ4kicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwLJB24IpVcFP6a8l2rPDJ4kicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwrLDgfPBhmIpGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1SywjLBci+twvTB3j5ifvZywDLpc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxzHBhvLiIbPzd0IBwvTB3j5lxvZywDLiJ4Tpc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxbYB2DYzxnZiIbYB2XLpsjWCM9NCMvZC2jHCIiGyxjPys1SywjLBd0ItwvTB3j5ihvZywDLiIbHCMLHlxzHBhvLBwLUpsiWiIbHCMLHlxzHBhvLBwf4psiXmdaIpGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxbYB2DYzxnZlwzPBgWIigLKpsjTzw1VCNKTChjVz3jLC3mIpJWVzgL2pGOGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGidWVzgL2pGOGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwnHCMqIpGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTAwnVBIi+8j+sVJWVzgL2pGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTzgv0ywLSCYi+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwXHyMvSiJ5eAxnRifvZywDLpc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxzHBhvLiIbPzd0IzgLZAY11C2fNzsi+ltWVzgL2pGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1WCM9NCMvZCYiGCM9Szt0IChjVz3jLC3nIyxiIigfYAweTBgfIzwW9iKrPC2SGDxnHz2uIigfYAweTDMfSDwvTAw49iJaIigfYAweTDMfSDwvTyxG9iJeWmci+cIaGicaGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTChjVz3jLC3mTzMLSBciGAwq9iMrPC2STChjVz3jLC3mIpJWVzgL2pGOGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGidWVzgL2pGOGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwnHCMqIpGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTAwnVBIi+8j+qSZWVzgL2pGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTzgv0ywLSCYi+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwXHyMvSiJ5eB2nRzxiGq29UDgfPBMvYCZWVzgL2pGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY12ywX1zsiGAwq9iMrVy2TLCI1JB250ywLUzxjZiJ4Tpc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxbYB2DYzxnZiIbYB2XLpsjWCM9NCMvZC2jHCIiGyxjPys1SywjLBd0IuNvUBMLUzYbJB250ywLUzxjZihjHDgLViIbHCMLHlxzHBhvLBwLUpsiWiIbHCMLHlxzHBhvLBwf4psiXmdaIpGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxbYB2DYzxnZlwzPBgWIigLKpsjKB2nRzxiTChjVz3jLC3mIpJWVzgL2pGOGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGidWVzgL2pGOGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwnHCMqGBwv0CMLJlwnHCMqTD2LKzsiGAwq9iMrVy2TLCI1ZDg9YywDLlwnHCMqIpGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTAwnVBIi+8j+tPJWVzgL2pGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTzgv0ywLSCYi+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwXHyMvSiJ5eB2nRzxiGu3rVCMfNztWVzgL2pGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY12ywX1zsiGAwq9iMrVy2TLCI1ZDg9YywDLlxrVDgfSiJ4Tpc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxbYB2DYzxnZiIbPzd0Izg9JA2vYlxn0B3jHz2uTChjVz3jLC3mTD3jHCciGCM9Szt0IChjVz3jLC3nIyxiIigfYAweTBgfIzwW9iKrVy2TLCIbZDg9YywDLihvZywDLiIbHCMLHlxzHBhvLBwLUpsiWiIbHCMLHlxzHBhvLBwf4psiXmdaIpGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxbYB2DYzxnZlwzPBgWIigLKpsjKB2nRzxiTC3rVCMfNzs1WCM9NCMvZCYi+pc9KAxy+cIaGicaGicaGicaGicaGpc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxn1yIiGAwq9iMrVy2TLCI1ZDg9YywDLlwf2ywLSywjSzsi+pc9KAxy+cIaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlxn1yIiGAwq9iMrVy2TLCI1ZDg9YywDLlxjLy2XHAw1HyMXLiJ48l2rPDJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjKB2nRzxiTC3rVCMfNzs1ICMvHA2rVD24IigLKpsjKB2nRzxiTC3rVCMfNzs1ICMvHA2rVD24IpGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IC3rVCMfNzs1PDgvTiJ4kicaGicaGicaGicaGicaGicaGphnWyw4Gy2XHC3m9iNn0B3jHz2uTBgfIzwWIpKLTywDLCZO8l3nWyw4+cIaGicaGicaGicaGicaGicaGidXZCgfUignSyxnZpsjZDg9YywDLlxzHBhvLiIbPzd0Izg9JA2vYlxn0B3jHz2uTAw1Hz2vZiJ4Tpc9ZCgfUpGOGicaGicaGicaGicaGicaGpc9KAxy+cIaGicaGicaGicaGicaGica8zgL2ignSyxnZpsjZDg9YywDLlwL0zw0IpGOGicaGicaGicaGicaGicaGica8C3bHBIbJBgfZCZ0IC3rVCMfNzs1SywjLBci+q29UDgfPBMvYCZO8l3nWyw4+cIaGicaGicaGicaGicaGicaGidXZCgfUignSyxnZpsjZDg9YywDLlxzHBhvLiIbPzd0Izg9JA2vYlxn0B3jHz2uTy29UDgfPBMvYCYi+ltWVC3bHBJ4kicaGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0IC3rVCMfNzs1PDgvTiJ4kicaGicaGicaGicaGicaGicaGphnWyw4Gy2XHC3m9iNn0B3jHz2uTBgfIzwWIpLzVBhvTzxm6pc9ZCgfUpGOGicaGicaGicaGicaGicaGica8C3bHBIbJBgfZCZ0IC3rVCMfNzs12ywX1zsiGAwq9iMrVy2TLCI1ZDg9YywDLlxzVBhvTzxmIpI08l3nWyw4+cIaGicaGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGicaGicaGidXKAxyGy2XHC3m9iNn0B3jHz2uTAxrLBsi+cIaGicaGicaGicaGicaGicaGidXZCgfUignSyxnZpsjZDg9YywDLlwXHyMvSiJ5cDwLSzcbdywnOztO8l3nWyw4+cIaGicaGicaGicaGicaGicaGidXZCgfUignSyxnZpsjZDg9YywDLlxzHBhvLiIbPzd0Izg9JA2vYlxn0B3jHz2uTyNvPBgrJywnOzsi+ltWVC3bHBJ4kicaGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGidWVzgL2pGOGicaGicaGicaGpgrPDIbJBgfZCZ0IBwv0CMLJlwnHCMqIpGOGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTAwnVBIi+4O+X77Ippc9KAxy+cIaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1KzxrHAwXZiJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTBgfIzwWIpLnLCNzLCIbvChrPBwu8l2rPDJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTDMfSDwuIigLKpsjZzxj2zxiTDxb0Aw1LiJ4Tpc9KAxy+cIaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGpc9KAxy+cIaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTy2fYzci+cIaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1Py29UiJ7WN5oHpc9KAxy+cIaGicaGicaGicaGidXKAxyGy2XHC3m9iM1LDhjPyY1KzxrHAwXZiJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTBgfIzwWIpLvZzxiGu2vZC2LVBNm8l2rPDJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjTzxrYAwmTDMfSDwuIigLKpsjHy3rPDMuTC2vZC2LVBNmIpI08l2rPDJ4kicaGicaGicaGicaGpc9KAxy+cIaGicaGicaGica8l2rPDJ4kicaGicaGica8l2rPDJ4kicaGicaGica8zgL2ignSyxnZpsjOzwfSDgGTywn0Aw9UCYbJB2XSyxbZAwjSzs1Zzwn0Aw9UiIbPzd0Iy2XLyw51Cc1Zzwn0Aw9UiJ4kicaGicaGicaGidXIDxr0B24GDhLWzt0IyNv0Dg9UiIbJBgfZCZ0IAgvHBhrOlwfJDgLVBNmTAgvHzgvYignVBgXHChnPyMXLlxrVz2DSzsiGAwq9iMnSzwfUDxaTDg9Nz2XLiIbHCMLHlwv4CgfUzgvKpsjMywXZzsiGyxjPys1JB250CM9SCZ0Iy2XLyw51Cc1JB250zw50iJ4kicaGicaGicaGicaGpgrPDIbJBgfZCZ0IAgvHBhrOlwfJDgLVBNmTDgL0BguIpGOGicaGicaGicaGicaGidXZDMCGy2XHC3m9iMnVBgXHChnLlwnOzxzYB24IihDPzhrOpsiXnIiGAgvPz2H0psiXnIiGDMLLD0jVEd0ImcaWidi0idi0iIbMAwXSpsjUB25LiIbZDhjVA2u9iMn1CNjLBNrdB2XVCIiGC3rYB2TLlxDPzhrOpsiYiIbZDhjVA2uTBgLUzwnHCd0ICM91BMqIihn0CM9Rzs1SAw5LAM9PBJ0ICM91BMqIpGOGicaGicaGicaGicaGicaGphbVBhLSAw5LihbVAw50CZ0IosaXocaXnsaXmIa5idyIpJWVCg9SEwXPBMu+cIaGicaGicaGicaGicaGpc9ZDMC+cIaGicaGicaGicaGicaGq2XLyw4GvxakicaGicaGicaGicaGpc9KAxy+cIaGicaGicaGicaGidXKAxyGAwq9iNnLCNzLCI1OzwfSDgGTywn0Aw9Ulxn0yxr1CYiGy2XHC3m9iMHLywX0Ac1Hy3rPB24TC3rHDhvZiIbHCMLHlwXPDMu9iNbVBgL0zsiGAgLKzgvUpJWVzgL2pGOGicaGicaGicaGpc9IDxr0B24+cIaGicaGicaGica8zgL2ignSyxnZpsjJB2XSyxbZAwjSzs1JB250zw50iIbPzd0Iy2XLyw51Cc1JB250zw50iIbOAwrKzw4+cIaGicaGicaGicaGidXKAxyGy2XHC3m9iMnSzwfUDxaTy2fYzhmIpGOGicaGicaGicaGicaGidXKAxyGy2XHC3m9iMnSzwfUDxaTy2fYzci+cIaGicaGicaGicaGicaGica8zgL2ignSyxnZpsjJBgvHBNvWlwnHCMqTAwnVBIi+cIaGicaGicaGicaGicaGicaGidXZDMCGD2LKDgG9iJi0iIbOzwLNAhq9iJi0iIb2Awv3qM94psiWidaGmJqGmJqIigzPBgW9iM5VBMuIihn0CM9Rzt0Iy3vYCMvUDenVBg9YiIbZDhjVA2uTD2LKDgG9iJiIihn0CM9Rzs1SAw5Ly2fWpsjYB3vUzciGC3rYB2TLlwXPBMvQB2LUpsjYB3vUzci+cIaGicaGicaGicaGicaGicaGicaGphjLy3qGEd0ImYiGEt0ImYiGD2LKDgG9iJe4iIbOzwLNAhq9iJe4iIbYEd0ImIiGCNK9iJiIpJWVCMvJDd4kicaGicaGicaGicaGicaGicaGica8BgLUzsb4mt0IosiGEte9iJKIihGYpsiXnsiGEti9iJe1iJ48l2XPBMu+cIaGicaGicaGicaGicaGicaGicaGpgXPBMuGEde9iJe1iIb5mt0IosiGEdi9iJKIihKYpsiXnsi+pc9SAw5LpGOGicaGicaGicaGicaGicaGica8l3n2zZ4kicaGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0Iy2XLyw51Cc1JyxjKlwnVBNrLBNqIpGOGicaGicaGicaGicaGicaGica8zgL2ignSyxnZpsjJBgvHBNvWlwnHCMqTDgL0BguIpLn0B3aGqwXSienVBNrHAw5LCNm8l2rPDJ4kicaGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0Iy2XLyw51Cc1JyxjKlwrLC2nYAxb0Aw9UiJ5hCMfJzwz1BgX5ihn0B3aGywXSihj1BM5PBMCGrg9JA2vYignVBNrHAw5LCNmUiefJDgL2zsbJB2rPBMCGC2vZC2LVBNmGD2LSBcbIzsb0zxjTAw5HDgvKlJWVzgL2pGOGicaGicaGicaGicaGicaGpc9KAxy+cIaGicaGicaGicaGicaGica8yNv0Dg9Uihr5Cgu9iMj1DhrVBIiGy2XHC3m9iMj0BI1ZzwnVBMrHCNKGy2XLyw51Cc1JyxjKlwj0BIiGAwq9iNnLCNzLCI1ZDg9WlwnVBNrHAw5LCNmIpLn0B3a8l2j1DhrVBJ4kicaGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjJBgvHBNvWlwnHCMqIpGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0Iy2XLyw51Cc1JyxjKlwLJB24IpGOGicaGicaGicaGicaGicaGica8C3zNihDPzhrOpsiYnciGAgvPz2H0psiYnciGDMLLD0jVEd0ImcaWidi0idi0iIbMAwXSpsjUB25LiIbZDhjVA2u9iMn1CNjLBNrdB2XVCIiGC3rYB2TLlxDPzhrOpsiYiIbZDhjVA2uTBgLUzwnHCd0ICM91BMqIihn0CM9Rzs1SAw5LAM9PBJ0ICM91BMqIpGOGicaGicaGicaGicaGicaGicaGidXWB2X5BgLUzsbWB2LUDhm9iJmGnIa1idyGmJeGnIi+pc9WB2X5BgLUzt4kicaGicaGicaGicaGicaGicaGica8Cgf0AcbKpsjnmtKGnNyXngeYidiGmcaWideTmIaYsdDHmIaYidaGmcaXltiTmLy2BtmGmfy0ytiGmIaWidaGmsaYltjOngeYidiGmcaWideGmIaYDJiIpJWVCgf0Ad4kicaGicaGicaGicaGicaGicaGpc9ZDMC+cIaGicaGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGicaGicaGidXKAxyGy2XHC3m9iMnSzwfUDxaTy2fYzc1JB250zw50iJ4kicaGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0Iy2XLyw51Cc1JyxjKlxrPDgXLiJ5szw1VDMuGu3rVChbLzcbdB250ywLUzxjZpc9KAxy+cIaGicaGicaGicaGicaGicaGidXKAxyGy2XHC3m9iMnSzwfUDxaTy2fYzc1KzxnJCMLWDgLVBIi+rgvSzxrLigfSBcbZDg9WCgvKignVBNrHAw5LCNmGDg8GzNjLzsb1CcbKAxnRihnWywnLlIbuAgLZignHBM5VDcbIzsb1BMrVBMuUpc9KAxy+cIaGicaGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGicaGicaGidXIDxr0B24GDhLWzt0IyNv0Dg9UiIbJBgfZCZ0IyNrUlxnLy29UzgfYEsbJBgvHBNvWlwnHCMqTyNrUiIbPzd0IC2vYDMvYlxjLBw92zs1ZDg9WCgvKiJ5szw1VDMu8l2j1DhrVBJ4kicaGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGicaGica8zgL2ignSyxnZpsjJBgvHBNvWlwnHCMqGy2XLyw51Cc1JyxjKlwrHBMDLCIi+cIaGicaGicaGicaGicaGica8zgL2ignSyxnZpsjJBgvHBNvWlwnHCMqTAwnVBIi+cIaGicaGicaGicaGicaGicaGidXZDMCGD2LKDgG9iJi0iIbOzwLNAhq9iJi0iIb2Awv3qM94psiWidaGmJqGmJqIigzPBgW9iM5VBMuIihn0CM9Rzt0Iy3vYCMvUDenVBg9YiIbZDhjVA2uTD2LKDgG9iJiIihn0CM9Rzs1SAw5Ly2fWpsjYB3vUzciGC3rYB2TLlwXPBMvQB2LUpsjYB3vUzci+cIaGicaGicaGicaGicaGicaGicaGphbHDgGGzd0ItteYidjmmIa3BdeWiduGmtaTns0Xmc01EIi+pc9WyxrOpGOGicaGicaGicaGicaGicaGicaGidXWyxrOigq9iK0Yide3BdeWiduGmtaTnsi+pc9WyxrOpGOGicaGicaGicaGicaGicaGicaGidXWyxrOigq9iK0YideYBdeWiduGmtaTnsi+pc9WyxrOpGOGicaGicaGicaGicaGicaGica8l3n2zZ4kicaGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0Iy2XLyw51Cc1JyxjKlwnVBNrLBNqIpGOGicaGicaGicaGicaGicaGica8zgL2ignSyxnZpsjJBgvHBNvWlwnHCMqTDgL0BguIpKrVy2TLCIbtExn0zw0Guhj1BMu8l2rPDJ4kicaGicaGicaGicaGicaGicaGpgrPDIbJBgfZCZ0Iy2XLyw51Cc1JyxjKlwrLC2nYAxb0Aw9UiJ5szw1VDMuGywXSihn0B3bWzwqGy29UDgfPBMvYCYWGDw51C2vKig5LDhDVCMTZlcbKyw5NBgLUzYbPBwfNzxmSigfUzcbIDwLSzcbJywnOzs4GrNjLzxmGC2LNBMLMAwnHBNqGzgLZAYbZCgfJzs48l2rPDJ4kicaGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGicaGicaGpgj1DhrVBIb0ExbLpsjIDxr0B24IignSyxnZpsjIDg4TzgfUz2vYignSzwfUDxaTy2fYzc1IDg4IigLKpsjZzxj2zxiTChj1BMuTzg9JA2vYiJ5qCNvUztWVyNv0Dg9UpGOGicaGicaGicaGicaGidWVzgL2pGOGicaGicaGicaGica8l2rPDJ4kicaGicaGicaGidWVzgL2pGOGicaGicaGidWVzgL2pGOGicaGica8l2rPDJ4kicaGidWVzgL2pGOGicaGpgrPDIbJBgfZCZ0IBw9KywWTywn0Aw9UCYi+cIaGicaGidXIDxr0B24GDhLWzt0IyNv0Dg9UiIbPzd0IC2vYDMvYlwHLywX0Ac1YzwzYzxnOiIbJBgfZCZ0IyNrUlxnLy29UzgfYEsi+uMvMCMvZAdWVyNv0Dg9UpGOGicaGica8yNv0Dg9Uihr5Cgu9iMj1DhrVBIiGAwq9iNnLCNzLCI1OzwfSDgGTB2SIignSyxnZpsjIDg4TChjPBwfYEsi+t0S8l2j1DhrVBJ4kicaGidWVzgL2pGOGidWVzgL2pGO8l2rPDJ4k','y3b1','Aw1Hz2vZ','y2XLyw51Cc10B2DNBgu','Aw5Uzxjive1m','CMvTB3zL','lI4U','Dhj1zq','zg9JA2vYlxn0B3jHz2uTDM9SDw1LCW','zg9JA2vYlxn0B3jHz2uTChjVz3jLC3m','CMvJBgfPBwfIBgveAxnWBgf5','C2vYDMvYlwHLywX0Ac1TB2rHBa','C2vYDMvYlxjLBw92zs1ZDg9WCgvK','ntiYmdrbv2vMAue','yxbWBgLJyxrPB24VANnVBG','zg9JA2vYu3rVCMfNzq','C2vYDMvYlwHLywX0Ac1JB250zw50','C2vYDMvYlxn0B3aTy29UDgfPBMvYCW','y3b1lxbYB2DYzxnZ','mJiYnZqXmhrHyNb5sG','z2v0rwXLBwvUDej5swq','yxzHAwXHyMXLrgLZCgXHEq','C3vJy2vZCW','tg9HzgLUzYbZzxj2zxiGBwv0CMLJCW','D2fYBMLUzW','zg9JA2vYlxn0B3jHz2uTDg90ywW','AgLKzgvU','C2vYDMvYlwHLywX0Ac1Hy3rPB24TC3rHDhvZ','ANnVBG','zMLYC3rfBgvTzw50q2HPBgq','BwvZC2fNzq','D2LKDgG','C3rHDhvZlwnYAxrPy2fS','ywn0AxzLlxnLC3nPB25Z','C2v0qxr0CMLIDxrL','zg9JA2vY','CMvTB3zLu3rVChbLzenVBNrHAw5LCNm','CxvLCNLtzwXLy3rVCG','mtiYmJuYquvvExDA','rMfPBgvKihrVigXVywqGC2vYDMvYigHLywX0AcbTzxrYAwnZoG','zg9JA2vYlwnVBNrHAw5LCNm','rMfPBgvKihrVigXVywqGBwv0CMLJCZOG','rMfPBgvKihDOAwXLia'];_0x11fd=function(){return _0x435a72;};return _0x11fd();}export async function openServerHealthModal(){const _0x4f0f68=_0x2fd96d;ensureModalExists();const _0x134246=document[_0x4f0f68(0x133)](_0x4f0f68(0x12a)),_0x478e2b=document['getElementById']('server-health-loading'),_0x1b9a81=document[_0x4f0f68(0x133)]('server-health-error'),_0x1519c8=document[_0x4f0f68(0x133)](_0x4f0f68(0x12f)),_0x3d7aa6=document[_0x4f0f68(0x133)](_0x4f0f68(0xed)),_0x13cb18=document[_0x4f0f68(0x133)](_0x4f0f68(0xfe)),_0x5b312f=document[_0x4f0f68(0x133)]('server-health-refresh'),_0xc75402=document['getElementById'](_0x4f0f68(0x130)),_0x53614e=document[_0x4f0f68(0x133)](_0x4f0f68(0x12b)),_0x5071c0=document[_0x4f0f68(0x133)]('server-prune-docker'),_0x3128cb=document[_0x4f0f68(0x133)](_0x4f0f68(0x13a)),_0x58bc5f=document[_0x4f0f68(0x133)](_0x4f0f68(0x122)),_0x24d9b8=document['getElementById'](_0x4f0f68(0xe5)),_0x3afa00=document[_0x4f0f68(0x133)](_0x4f0f68(0x115));if(!_0x134246)return;_0x134246[_0x4f0f68(0x139)]=![],_0x478e2b[_0x4f0f68(0x139)]=![],_0x1b9a81[_0x4f0f68(0x139)]=!![],_0x1519c8[_0x4f0f68(0x139)]=!![];_0x3128cb&&(_0x3128cb[_0x4f0f68(0x139)]=!![],_0x3128cb[_0x4f0f68(0xfd)]='',_0x3128cb[_0x4f0f68(0xfa)]['remove'](_0x4f0f68(0x135),_0x4f0f68(0x10d)));_0x3afa00&&_0x3afa00[_0x4f0f68(0xfa)][_0x4f0f68(0x124)](_0x4f0f68(0xee));_0x24d9b8&&(_0x24d9b8[_0x4f0f68(0x139)]=!![]);_0x58bc5f&&_0x58bc5f[_0x4f0f68(0x141)]('aria-expanded',_0x4f0f68(0x11c));const _0x834ef0=[_0xc75402,_0x53614e,_0x5071c0,_0x5b312f],_0x465542=_0x4e1348=>{_0x834ef0['forEach'](_0x7cdf7b=>{const _0x2a3753=_0x14fa;if(_0x7cdf7b)_0x7cdf7b[_0x2a3753(0x106)]=_0x4e1348;});},_0x45d971=(_0x2fe959,_0x551364=_0x4f0f68(0xe8))=>{const _0x7178d4=_0x4f0f68;if(!_0x3128cb)return;_0x3128cb['hidden']=![],_0x3128cb[_0x7178d4(0xfd)]=_0x2fe959,_0x3128cb[_0x7178d4(0xfa)]['remove'](_0x7178d4(0x135),_0x7178d4(0x10d));if(_0x551364===_0x7178d4(0x135))_0x3128cb[_0x7178d4(0xfa)][_0x7178d4(0xf9)](_0x7178d4(0x135));else _0x551364===_0x7178d4(0x10d)&&_0x3128cb[_0x7178d4(0xfa)][_0x7178d4(0xf9)](_0x7178d4(0x10d));};await loadServerHealthMetrics();const _0x47ac97=()=>{const _0x2e969a=_0x4f0f68;_0x134246[_0x2e969a(0x139)]=!![],document[_0x2e969a(0x108)](_0x2e969a(0x105),_0x4c363f);},_0x4c363f=_0x144d0b=>{const _0x2b7170=_0x4f0f68;_0x144d0b[_0x2b7170(0xf4)]===_0x2b7170(0xeb)&&!_0x134246[_0x2b7170(0x139)]&&_0x47ac97();};_0x3d7aa6[_0x4f0f68(0x107)]=_0x47ac97,_0x13cb18['onclick']=_0x47ac97,_0x5b312f[_0x4f0f68(0x107)]=async()=>{const _0x3c24f1=_0x4f0f68;_0x478e2b[_0x3c24f1(0x139)]=![],_0x1b9a81[_0x3c24f1(0x139)]=!![],_0x1519c8[_0x3c24f1(0x139)]=!![],await loadServerHealthMetrics();};const _0xa8026b=async(_0x4e906e,_0x2992a3)=>{const _0x50536f=_0x4f0f68;_0x478e2b[_0x50536f(0xfd)]=_0x4e906e,_0x478e2b[_0x50536f(0x139)]=![],_0x1b9a81[_0x50536f(0x139)]=!![],_0x1519c8[_0x50536f(0x139)]=!![],_0x465542(!![]),_0x45d971(_0x4e906e+_0x50536f(0x125));try{const _0x2c515d=await _0x2992a3(),_0xf1e517=_0x2c515d?.[_0x50536f(0x13d)]||_0x4e906e+_0x50536f(0xef);_0x45d971(_0xf1e517,'success');}catch(_0x30b704){console['error'](_0x50536f(0xfc)+_0x4e906e+')',_0x30b704),_0x45d971(_0x30b704[_0x50536f(0x13d)]||_0x50536f(0xdc)+_0x4e906e[_0x50536f(0x118)](),'error');}finally{await loadServerHealthMetrics(),_0x465542(![]);}};_0xc75402&&(_0xc75402[_0x4f0f68(0x107)]=()=>_0xa8026b(_0x4f0f68(0x101),()=>API[_0x4f0f68(0xe1)]()));_0x53614e&&(_0x53614e[_0x4f0f68(0x107)]=()=>_0xa8026b('Removing\x20stopped\x20containers',()=>API[_0x4f0f68(0x143)]()));_0x5071c0&&(_0x5071c0[_0x4f0f68(0x107)]=()=>_0xa8026b(_0x4f0f68(0x111),()=>API['pruneDockerResources']()));_0x58bc5f&&_0x24d9b8&&_0x3afa00&&(_0x58bc5f[_0x4f0f68(0x107)]=()=>{const _0x5751a5=_0x4f0f68,_0x33903a=_0x3afa00[_0x5751a5(0xfa)][_0x5751a5(0xe6)](_0x5751a5(0xee));_0x24d9b8[_0x5751a5(0x139)]=!_0x33903a,_0x58bc5f[_0x5751a5(0x141)](_0x5751a5(0x10a),_0x33903a?_0x5751a5(0x126):_0x5751a5(0x11c));});document['addEventListener'](_0x4f0f68(0x105),_0x4c363f);const _0x50cb5d=_0x134246[_0x4f0f68(0x144)](_0x4f0f68(0xf0));_0x50cb5d&&(_0x50cb5d[_0x4f0f68(0x107)]=_0x47ac97);}export{loadServerHealthMetrics};typeof window!=='undefined'&&(window[_0x2fd96d(0x117)]=openServerHealthModal);
1
+ const _0x130834=_0x29f0;(function(_0x43300d,_0x3abf74){const _0x331ec4=_0x29f0,_0x575b31=_0x43300d();while(!![]){try{const _0xa2c403=-parseInt(_0x331ec4(0x21d))/0x1*(parseInt(_0x331ec4(0x1f4))/0x2)+-parseInt(_0x331ec4(0x24a))/0x3*(parseInt(_0x331ec4(0x202))/0x4)+parseInt(_0x331ec4(0x24e))/0x5+-parseInt(_0x331ec4(0x228))/0x6*(parseInt(_0x331ec4(0x225))/0x7)+-parseInt(_0x331ec4(0x1e3))/0x8*(-parseInt(_0x331ec4(0x247))/0x9)+-parseInt(_0x331ec4(0x212))/0xa*(-parseInt(_0x331ec4(0x233))/0xb)+-parseInt(_0x331ec4(0x215))/0xc;if(_0xa2c403===_0x3abf74)break;else _0x575b31['push'](_0x575b31['shift']());}catch(_0x2c2be8){_0x575b31['push'](_0x575b31['shift']());}}}(_0x2c3e,0x9291f));import{API}from'./app.js';function _0x2c3e(){const _0x5726a1=['zMLYC3rfBgvTzw50q2HPBgq','zgLZAY1WCM9NCMvZCW','C3rHDhvZlxDHCM5PBMC','zg9JA2vY','Dxb0Aw1L','y2XHC3nmAxn0','BwvTB3j5lxvZywDL','C3rHDhvZ','yxbWzw5Kq2HPBgq','Bwf4','C2vYDMvYlwHLywX0Ac1Hy3rPB24TC3rHDhvZ','C3rVCefSBenVBNrHAw5LCNm','C2vYDMvYlwHLywX0Ac1VAW','CxvLCNLtzwXLy3rVCG','yNvPBgrdywnOzq','D2fYBMLUzW','y3jLyxrLrwXLBwvUDa','y2XLyw51Cc1Zzwn0Aw9U','mtKXmti1oe9nDuLOvG','y3b1lxvZywDL','C3rHDhvZlw9R','mtvyA0rhEem','BwvTB3j5','r0vu','zg9JA2vYlwnVBNrHAw5LCNm','ntG2nty2nuLKr2vtyq','C2vYDMvYlwHLywX0Ac1TB2rHBa','C2vYDMvYlwHLywX0Ac1YzwzYzxnO','CgvYy2vUDa','ndbeEvvVChK','zxHWyw5Kzwq','zgLZCgXHEq','BwvTB3j5lxbYB2DYzxnZ','yM9KEq','uMvTB3zPBMCGC3rVChbLzcbJB250ywLUzxjZ','BwLU','AgLKzgvU','CMvTB3zLu3rVChbLzenVBNrHAw5LCNm','zg9JA2vYlxn0B3jHz2uTy29UDgfPBMvYCW','Chj1BMveB2nRzxjszxnVDxjJzxm','C2vZC2LVBNm','Dg90ywW','ANnVBG','zg9JA2vYlxbYB2DYzxnZ','Dg9mB3DLCKnHC2u','A2v5','mJzmyKX1Be8','CMvTB3zLrxzLBNrmAxn0zw5LCG','CgfYzw50rwXLBwvUDa','Aw5JBhvKzq','zxjYB3i','yxbWBgLJyxrPB24VANnVBG','zg9JA2vYu3rVCMfNzq','DM9SDw1LCW','C2v0qxr0CMLIDxrL','y2XLyw51Cc10B2DNBgu','zg9JA2vYlxn0B3jHz2uTDM9SDw1LCW','C3rHDhvZlwnYAxrPy2fS','ywn0AxzLlxnLC3nPB25Z','A2v5zg93BG','mZC3mZCYDuHMA3j6','B25JBgLJAW','ignVBxbSzxrLza','zg9JA2vYlxn0B3jHz2uTy2fYza','C3rHDhvZvgv4Da','zg9JA2vYlxn0B3jHz2uTyxzHAwXHyMXL','C2vYDMvYlwHLywX0Ac1LCNjVCG','rMfPBgvKihDOAwXLia','yxzHAwXHyMXLrgLZCgXHEq','zgLZywjSzwq','y3b1','AxngAw5PDgu','zg9JA2vYlxn0B3jHz2uTCMvJBgfPBwfIBgu','zgLZAY11C2fNzq','C3r5Bgu','y3jPDgLJywW','ndbSC0jbAgq','CNvUBMLUzW','ywrK','nJe0odC2ngnzthzYta','C3vJy2vZCW','zMfSC2u','y29UDgfPBMvYCW','zgLZAW','C2vYDMvYlwHLywX0Ac1SB2fKAw5N','l2HLywX0Ac9TzxrYAwnZ','zg9JA2vYlxn0B3jHz2uTAw1Hz2vZ','ntG1ndnizMLAAMW','C2vYDMvYlwHLywX0Ac1JB250zw50','zgL2','D2LKDgG','BwvZC2fNzq','CMvTB3zL','C2vYDMvYlxvWDgLTzq','uhj1BMLUzYbeB2nRzxiGCMvZB3vYy2vZ','ntG1ounuuwHMsG','Dw5KzwzPBMvK','ywrKrxzLBNrmAxn0zw5LCG','mJq2qKfcy1rj','C2vYDMvYlxn0B3aTy29UDgfPBMvYCW','Dgv4DenVBNrLBNq','CM91BMq','rMfPBgvKihrVigXVywqGC2vYDMvYig1LDhjPy3m6ia','u2vYDMvYignSzwfUDxaGywn0Aw9UigzHAwXLzcaO','zM9YrwfJAa','B3bLBLnLCNzLCKHLywX0Ae1VzgfS','z2v0rwXLBwvUDej5swq','lM1VzgfSlw92zxjSyxK','yxjPys12ywX1zw5VDW','mZK4ndy0CeTnqvvd','Aw1Hz2vZ'];_0x2c3e=function(){return _0x5726a1;};return _0x2c3e();}let modalInjected=![];const SERVER_HEALTH_MODAL_HTML='\x0a<div\x20id=\x22server-health-modal\x22\x20class=\x22modal\x22\x20hidden>\x0a\x20\x20<div\x20class=\x22modal-overlay\x22></div>\x0a\x20\x20<div\x20class=\x22modal-content\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-header\x22>\x0a\x20\x20\x20\x20\x20\x20<h2>Server\x20Health</h2>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22modal-close\x22\x20id=\x22server-health-close\x22\x20aria-label=\x22Close\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-body\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-loading\x22\x20class=\x22loading\x22>Loading\x20server\x20metrics</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-error\x22\x20class=\x22error-message\x22\x20hidden></div>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-content\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-metrics\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>💻</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>CPU\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22cpu-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22CPU\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22cpu-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>🧠</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Memory\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22memory-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Memory\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22memory-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>💾</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Disk\x20Usage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22disk-usage\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Disk\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22disk-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>🐳</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Docker\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22docker-containers\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Running\x20containers\x20ratio\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22docker-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card-wide\x22\x20id=\x22docker-storage-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>📦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Docker\x20Storage</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22docker-storage-total\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress\x22\x20id=\x22docker-storage-progress-wrap\x22\x20role=\x22progressbar\x22\x20aria-label=\x22Docker\x20storage\x20usage\x22\x20aria-valuemin=\x220\x22\x20aria-valuemax=\x22100\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-progress-fill\x22\x20id=\x22docker-storage-progress\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-sub\x22\x20id=\x22docker-storage-available\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-sub\x22\x20id=\x22docker-storage-reclaimable\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22docker-storage-breakdown\x22\x20id=\x22docker-storage-breakdown\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Images:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-images\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Containers:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-containers\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Volumes:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-volumes\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22storage-item\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-label\x22>Build\x20Cache:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22storage-value\x22\x20id=\x22docker-storage-buildcache\x22>-</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>⏱️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>Server\x20Uptime</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22server-uptime\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-icon\x22>📡</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-label\x22>User\x20Sessions</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20id=\x22active-sessions\x22>-</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-actions\x20collapsible-section\x22\x20id=\x22cleanup-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22health-actions-header\x20collapsible-toggle\x22\x20id=\x22cleanup-toggle\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22cleanup-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22health-actions-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20class=\x22collapse-chevron\x22\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x229\x2018\x2015\x2012\x209\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Clean\x20Up\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22server-health-action-status\x22\x20class=\x22health-action-status\x22\x20aria-live=\x22polite\x22\x20hidden></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22collapsible-content\x22\x20id=\x22cleanup-content\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-cards\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<rect\x20x=\x223\x22\x20y=\x223\x22\x20width=\x2218\x22\x20height=\x2218\x22\x20rx=\x222\x22\x20ry=\x222\x22></rect>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x229\x22\x20y1=\x229\x22\x20x2=\x2215\x22\x20y2=\x2215\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x2215\x22\x20y1=\x229\x22\x20x2=\x229\x22\x20y2=\x2215\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Stop\x20All\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Gracefully\x20stop\x20all\x20running\x20Docker\x20containers.\x20Active\x20coding\x20sessions\x20will\x20be\x20terminated.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x20cleanup-card-btn\x22\x20id=\x22server-stop-containers\x22>Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x223\x206\x205\x206\x2021\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M19\x206v14a2\x202\x200\x200\x201-2\x202H7a2\x202\x200\x200\x201-2-2V6m3\x200V4a2\x202\x200\x200\x201\x202-2h4a2\x202\x200\x200\x201\x202\x202v2\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Remove\x20Stopped\x20Containers</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Delete\x20all\x20stopped\x20containers\x20to\x20free\x20up\x20disk\x20space.\x20This\x20cannot\x20be\x20undone.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-secondary\x20cleanup-card-btn\x22\x20id=\x22server-remove-stopped\x22>Remove</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card\x20cleanup-card-danger\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2224\x22\x20height=\x2224\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x202L2\x207l10\x205\x2010-5-10-5z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M2\x2017l10\x205\x2010-5\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M2\x2012l10\x205\x2010-5\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-content\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-title\x22>Docker\x20System\x20Prune</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22cleanup-card-description\x22>Remove\x20all\x20stopped\x20containers,\x20unused\x20networks,\x20dangling\x20images,\x20and\x20build\x20cache.\x20Frees\x20significant\x20disk\x20space.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-danger\x20cleanup-card-btn\x22\x20id=\x22server-prune-docker\x22>Prune</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22modal-actions\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20id=\x22server-health-refresh\x22\x20class=\x22btn-secondary\x22>Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20id=\x22server-health-ok\x22\x20class=\x22btn-primary\x22>OK</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</div>\x0a';function ensureModalExists(){const _0x1ffacf=_0x29f0;if(modalInjected||document[_0x1ffacf(0x230)](_0x1ffacf(0x24f)))return;const _0x3a79fc=document[_0x1ffacf(0x245)](_0x1ffacf(0x21f));_0x3a79fc['innerHTML']=SERVER_HEALTH_MODAL_HTML,document[_0x1ffacf(0x1e7)][_0x1ffacf(0x23d)](_0x3a79fc[_0x1ffacf(0x235)]),modalInjected=!![];}function clampPercent(_0x44d205){const _0x5eaca3=_0x29f0;if(!Number[_0x5eaca3(0x20d)](_0x44d205))return 0x0;return Math[_0x5eaca3(0x23e)](0x0,Math[_0x5eaca3(0x1e9)](0x64,Math[_0x5eaca3(0x22b)](_0x44d205)));}function setMetricProgress(_0x22d8c0,_0x45de29,_0x1c6344='ok'){const _0x24c62e=_0x29f0,_0x58fd60=document[_0x24c62e(0x230)](_0x22d8c0);if(!_0x58fd60)return;const _0x4aba4b=_0x58fd60[_0x24c62e(0x1f6)],_0x41305b=clampPercent(_0x45de29);_0x58fd60[_0x24c62e(0x210)][_0x24c62e(0x220)]=_0x41305b+'%',_0x58fd60['classList']['remove'](_0x24c62e(0x249),_0x24c62e(0x237),_0x24c62e(0x1ff)),_0x58fd60[_0x24c62e(0x23a)]['add'](_0x1c6344==='critical'?_0x24c62e(0x1ff):_0x1c6344==='warning'?_0x24c62e(0x237):_0x24c62e(0x249)),_0x4aba4b&&_0x4aba4b[_0x24c62e(0x1fc)](_0x24c62e(0x232),String(_0x41305b));}function statusFromPercent(_0x5985d3){const _0x462e0f=_0x29f0;if(_0x5985d3>=0x5a)return'critical';if(_0x5985d3>=0x4b)return _0x462e0f(0x244);return'ok';}function _0x29f0(_0x4e1d4c,_0x5c774a){_0x4e1d4c=_0x4e1d4c-0x1e2;const _0x2c3ed7=_0x2c3e();let _0x29f00f=_0x2c3ed7[_0x4e1d4c];if(_0x29f0['uixLrL']===undefined){var _0x28ba62=function(_0x3f09fe){const _0x4876da='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3a79fc='',_0x44d205='';for(let _0x22d8c0=0x0,_0x45de29,_0x1c6344,_0x58fd60=0x0;_0x1c6344=_0x3f09fe['charAt'](_0x58fd60++);~_0x1c6344&&(_0x45de29=_0x22d8c0%0x4?_0x45de29*0x40+_0x1c6344:_0x1c6344,_0x22d8c0++%0x4)?_0x3a79fc+=String['fromCharCode'](0xff&_0x45de29>>(-0x2*_0x22d8c0&0x6)):0x0){_0x1c6344=_0x4876da['indexOf'](_0x1c6344);}for(let _0x4aba4b=0x0,_0x41305b=_0x3a79fc['length'];_0x4aba4b<_0x41305b;_0x4aba4b++){_0x44d205+='%'+('00'+_0x3a79fc['charCodeAt'](_0x4aba4b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x44d205);};_0x29f0['QgsCwN']=_0x28ba62,_0x29f0['ckWpcR']={},_0x29f0['uixLrL']=!![];}const _0x145541=_0x2c3ed7[0x0],_0x1e3d93=_0x4e1d4c+_0x145541,_0x138162=_0x29f0['ckWpcR'][_0x1e3d93];return!_0x138162?(_0x29f00f=_0x29f0['QgsCwN'](_0x29f00f),_0x29f0['ckWpcR'][_0x1e3d93]=_0x29f00f):_0x29f00f=_0x138162,_0x29f00f;}async function loadServerHealthMetrics(){const _0x5183c6=_0x29f0,_0x3e9eb3=document[_0x5183c6(0x230)](_0x5183c6(0x21a)),_0x31dd43=document['getElementById'](_0x5183c6(0x208)),_0x10193d=document[_0x5183c6(0x230)](_0x5183c6(0x21e));if(!_0x3e9eb3||!_0x31dd43||!_0x10193d)return;_0x3e9eb3[_0x5183c6(0x22a)]='Loading\x20server\x20metrics';try{const _0x5a65be=await fetch(_0x5183c6(0x21b),{'method':_0x5183c6(0x24c),'headers':{'Content-Type':_0x5183c6(0x1f9)},'credentials':_0x5183c6(0x1f7)});if(!_0x5a65be['ok'])throw new Error('Failed\x20to\x20load\x20metrics:\x20'+_0x5a65be[_0x5183c6(0x206)]);const _0x4e2cfd=await _0x5a65be[_0x5183c6(0x1f0)]();document['getElementById'](_0x5183c6(0x248))['textContent']=_0x4e2cfd['cpu'][_0x5183c6(0x1e5)],document[_0x5183c6(0x230)](_0x5183c6(0x23b))['textContent']=_0x4e2cfd['memory'][_0x5183c6(0x1e5)],document[_0x5183c6(0x230)](_0x5183c6(0x20f))['textContent']=_0x4e2cfd[_0x5183c6(0x219)][_0x5183c6(0x1e5)],document[_0x5183c6(0x230)](_0x5183c6(0x24d))['textContent']=_0x4e2cfd[_0x5183c6(0x238)]['display'],document[_0x5183c6(0x230)](_0x5183c6(0x223))[_0x5183c6(0x22a)]=_0x4e2cfd[_0x5183c6(0x239)][_0x5183c6(0x1e5)],document[_0x5183c6(0x230)](_0x5183c6(0x200))[_0x5183c6(0x22a)]=_0x4e2cfd[_0x5183c6(0x1ee)][_0x5183c6(0x1e5)],setMetricProgress('cpu-progress',_0x4e2cfd[_0x5183c6(0x20c)][_0x5183c6(0x1e2)],statusFromPercent(_0x4e2cfd[_0x5183c6(0x20c)][_0x5183c6(0x1e2)])),setMetricProgress(_0x5183c6(0x1e6),_0x4e2cfd[_0x5183c6(0x24b)][_0x5183c6(0x1e2)],statusFromPercent(_0x4e2cfd[_0x5183c6(0x24b)][_0x5183c6(0x1e2)])),setMetricProgress(_0x5183c6(0x236),_0x4e2cfd[_0x5183c6(0x219)]['percent'],statusFromPercent(_0x4e2cfd['disk']['percent']));const _0x2dc9da=_0x4e2cfd[_0x5183c6(0x238)][_0x5183c6(0x1ef)]>0x0?_0x4e2cfd[_0x5183c6(0x238)][_0x5183c6(0x213)]/_0x4e2cfd[_0x5183c6(0x238)]['total']*0x64:0x0;setMetricProgress(_0x5183c6(0x1f1),_0x2dc9da);if(_0x4e2cfd[_0x5183c6(0x1fa)]){const _0x43b3e6=document['getElementById'](_0x5183c6(0x205));document[_0x5183c6(0x230)]('docker-storage-total')[_0x5183c6(0x22a)]=_0x4e2cfd['dockerStorage'][_0x5183c6(0x1e5)];const _0x3f4bfd=document['getElementById'](_0x5183c6(0x207));_0x4e2cfd['dockerStorage'][_0x5183c6(0x20a)]?(_0x3f4bfd['textContent']=_0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x20a)],_0x3f4bfd[_0x5183c6(0x1ea)]=![]):_0x3f4bfd[_0x5183c6(0x1ea)]=!![];document[_0x5183c6(0x230)](_0x5183c6(0x20e))['textContent']=_0x4e2cfd[_0x5183c6(0x1fa)]['reclaimableDisplay'],document[_0x5183c6(0x230)](_0x5183c6(0x21c))[_0x5183c6(0x22a)]=_0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x234)][_0x5183c6(0x1e5)],document[_0x5183c6(0x230)](_0x5183c6(0x1ec))[_0x5183c6(0x22a)]=_0x4e2cfd['dockerStorage'][_0x5183c6(0x218)][_0x5183c6(0x1e5)],document['getElementById'](_0x5183c6(0x1fe))[_0x5183c6(0x22a)]=_0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x1fb)][_0x5183c6(0x1e5)],document['getElementById']('docker-storage-buildcache')[_0x5183c6(0x22a)]=_0x4e2cfd['dockerStorage'][_0x5183c6(0x243)][_0x5183c6(0x1e5)],setMetricProgress('docker-storage-progress',_0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x1e2)],_0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x23c)]),_0x43b3e6[_0x5183c6(0x23a)][_0x5183c6(0x222)](_0x5183c6(0x237),_0x5183c6(0x1ff));if(_0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x23c)]===_0x5183c6(0x211))_0x43b3e6['classList'][_0x5183c6(0x214)](_0x5183c6(0x1ff));else _0x4e2cfd[_0x5183c6(0x1fa)][_0x5183c6(0x23c)]===_0x5183c6(0x244)&&_0x43b3e6[_0x5183c6(0x23a)][_0x5183c6(0x214)](_0x5183c6(0x237));}_0x3e9eb3[_0x5183c6(0x1ea)]=!![],_0x10193d['hidden']=![];}catch(_0x26b7d5){console[_0x5183c6(0x1f8)]('Failed\x20to\x20load\x20server\x20health\x20metrics:',_0x26b7d5),_0x3e9eb3[_0x5183c6(0x1ea)]=!![],_0x31dd43['hidden']=![],_0x31dd43[_0x5183c6(0x22a)]=_0x5183c6(0x22c)+_0x26b7d5[_0x5183c6(0x221)];}}export async function openServerHealthModal(){const _0x108268=_0x29f0;ensureModalExists();const _0x1e5251=document[_0x108268(0x230)]('server-health-modal'),_0x61aa87=document[_0x108268(0x230)]('server-health-loading'),_0x3ea47a=document[_0x108268(0x230)](_0x108268(0x208)),_0x1cf7c4=document[_0x108268(0x230)](_0x108268(0x21e)),_0x17c521=document['getElementById']('server-health-close'),_0x434aa8=document[_0x108268(0x230)](_0x108268(0x241)),_0x473a1f=document[_0x108268(0x230)](_0x108268(0x250)),_0x52cef5=document[_0x108268(0x230)](_0x108268(0x229)),_0x4a61ce=document[_0x108268(0x230)]('server-remove-stopped'),_0x3c39da=document[_0x108268(0x230)]('server-prune-docker'),_0x2c7033=document[_0x108268(0x230)](_0x108268(0x23f)),_0x597a67=document[_0x108268(0x230)](_0x108268(0x1fd)),_0x26e0c1=document[_0x108268(0x230)]('cleanup-content'),_0x4bd74f=document[_0x108268(0x230)](_0x108268(0x246));if(!_0x1e5251)return;_0x1e5251[_0x108268(0x1ea)]=![],_0x61aa87[_0x108268(0x1ea)]=![],_0x3ea47a[_0x108268(0x1ea)]=!![],_0x1cf7c4[_0x108268(0x1ea)]=!![];_0x2c7033&&(_0x2c7033[_0x108268(0x1ea)]=!![],_0x2c7033[_0x108268(0x22a)]='',_0x2c7033[_0x108268(0x23a)]['remove']('success',_0x108268(0x1f8)));_0x4bd74f&&_0x4bd74f[_0x108268(0x23a)]['remove'](_0x108268(0x1e4));_0x26e0c1&&(_0x26e0c1['hidden']=!![]);_0x597a67&&_0x597a67['setAttribute']('aria-expanded','false');const _0x487553=[_0x52cef5,_0x4a61ce,_0x3c39da,_0x473a1f],_0x3ba754=_0x1bdcd6=>{const _0x33b647=_0x108268;_0x487553[_0x33b647(0x22e)](_0x1dffce=>{const _0xb87141=_0x33b647;if(_0x1dffce)_0x1dffce[_0xb87141(0x20b)]=_0x1bdcd6;});},_0x408fa6=(_0x140401,_0x4d11e1='info')=>{const _0x4d42b5=_0x108268;if(!_0x2c7033)return;_0x2c7033[_0x4d42b5(0x1ea)]=![],_0x2c7033[_0x4d42b5(0x22a)]=_0x140401,_0x2c7033[_0x4d42b5(0x23a)][_0x4d42b5(0x222)](_0x4d42b5(0x216),'error');if(_0x4d11e1===_0x4d42b5(0x216))_0x2c7033['classList']['add']('success');else _0x4d11e1==='error'&&_0x2c7033[_0x4d42b5(0x23a)][_0x4d42b5(0x214)](_0x4d42b5(0x1f8));};await loadServerHealthMetrics();const _0x245a46=()=>{const _0x29a5b8=_0x108268;_0x1e5251[_0x29a5b8(0x1ea)]=!![],document[_0x29a5b8(0x1f5)](_0x29a5b8(0x201),_0x3602f2);},_0x3602f2=_0x3e6453=>{const _0x56c8bb=_0x108268;_0x3e6453[_0x56c8bb(0x1f3)]==='Escape'&&!_0x1e5251[_0x56c8bb(0x1ea)]&&_0x245a46();};_0x17c521[_0x108268(0x203)]=_0x245a46,_0x434aa8[_0x108268(0x203)]=_0x245a46,_0x473a1f['onclick']=async()=>{const _0x9076ce=_0x108268;_0x61aa87[_0x9076ce(0x1ea)]=![],_0x3ea47a[_0x9076ce(0x1ea)]=!![],_0x1cf7c4['hidden']=!![],await loadServerHealthMetrics();};const _0x1414c9=async(_0x27e0b5,_0xf8571d)=>{const _0x493cf2=_0x108268;_0x61aa87[_0x493cf2(0x22a)]=_0x27e0b5,_0x61aa87['hidden']=![],_0x3ea47a['hidden']=!![],_0x1cf7c4[_0x493cf2(0x1ea)]=!![],_0x3ba754(!![]),_0x408fa6(_0x27e0b5+'...');try{const _0x156e55=await _0xf8571d(),_0xfd9a4e=_0x156e55?.[_0x493cf2(0x221)]||_0x27e0b5+_0x493cf2(0x204);_0x408fa6(_0xfd9a4e,_0x493cf2(0x216));}catch(_0x12c027){console[_0x493cf2(0x1f8)](_0x493cf2(0x22d)+_0x27e0b5+')',_0x12c027),_0x408fa6(_0x12c027[_0x493cf2(0x221)]||_0x493cf2(0x209)+_0x27e0b5[_0x493cf2(0x1f2)](),_0x493cf2(0x1f8));}finally{await loadServerHealthMetrics(),_0x3ba754(![]);}};_0x52cef5&&(_0x52cef5['onclick']=()=>_0x1414c9('Stopping\x20containers',()=>API[_0x108268(0x240)]()));_0x4a61ce&&(_0x4a61ce[_0x108268(0x203)]=()=>_0x1414c9(_0x108268(0x1e8),()=>API[_0x108268(0x1eb)]()));_0x3c39da&&(_0x3c39da[_0x108268(0x203)]=()=>_0x1414c9(_0x108268(0x224),()=>API[_0x108268(0x1ed)]()));_0x597a67&&_0x26e0c1&&_0x4bd74f&&(_0x597a67[_0x108268(0x203)]=()=>{const _0x187f79=_0x108268,_0x334abd=_0x4bd74f[_0x187f79(0x23a)]['toggle'](_0x187f79(0x1e4));_0x26e0c1[_0x187f79(0x1ea)]=!_0x334abd,_0x597a67[_0x187f79(0x1fc)]('aria-expanded',_0x334abd?'true':_0x187f79(0x217));});document[_0x108268(0x227)](_0x108268(0x201),_0x3602f2);const _0x4fb89f=_0x1e5251[_0x108268(0x242)](_0x108268(0x231));_0x4fb89f&&(_0x4fb89f['onclick']=_0x245a46);}export{loadServerHealthMetrics};typeof window!==_0x130834(0x226)&&(window[_0x130834(0x22f)]=openServerHealthModal);
@@ -164,6 +164,54 @@
164
164
  color: var(--color-text-muted);
165
165
  }
166
166
 
167
+ .apikey-test-btn {
168
+ flex-shrink: 0;
169
+ }
170
+
171
+ /* API key endpoint extensions */
172
+ .apikey-endpoint-section {
173
+ margin-top: 10px;
174
+ }
175
+
176
+ .apikey-endpoint-header {
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: space-between;
180
+ gap: 12px;
181
+ }
182
+
183
+ .apikey-endpoint-label {
184
+ font-size: 12px;
185
+ color: var(--color-text-muted);
186
+ }
187
+
188
+ .apikey-endpoint-fields {
189
+ margin-top: 8px;
190
+ display: flex;
191
+ flex-direction: column;
192
+ gap: 8px;
193
+ padding: 10px;
194
+ border: 1px solid var(--color-border);
195
+ border-radius: var(--radius-medium);
196
+ background: var(--color-surface-muted);
197
+ }
198
+
199
+ .apikey-endpoint-field-label {
200
+ font-size: 12px;
201
+ font-weight: 500;
202
+ color: var(--color-text);
203
+ }
204
+
205
+ .apikey-endpoint-fields .form-input {
206
+ margin: 0;
207
+ font-size: 13px;
208
+ }
209
+
210
+ .apikey-endpoint-field-hint {
211
+ grid-column: auto;
212
+ margin-top: 0;
213
+ }
214
+
167
215
  /* ============================================================
168
216
  LAYOUT
169
217
  ============================================================ */
@@ -295,92 +343,181 @@
295
343
  }
296
344
 
297
345
  /* ============================================================
298
- PROVIDER AUTHENTICATION
346
+ AI PROVIDERS
299
347
  ============================================================ */
300
348
 
301
349
  .provider-auth-list {
302
350
  display: flex;
303
351
  flex-direction: column;
304
- gap: 20px;
352
+ gap: 16px;
305
353
  }
306
354
 
307
- .provider-section {
355
+ .provider-auth-section {
308
356
  border: 1px solid var(--color-border);
309
- border-radius: var(--radius-medium);
310
- overflow: hidden;
357
+ border-radius: 8px;
358
+ padding: 12px 16px;
359
+ background: var(--color-surface-muted);
311
360
  }
312
361
 
313
- .provider-header {
362
+ .provider-auth-header-row {
314
363
  display: flex;
315
- justify-content: space-between;
316
364
  align-items: center;
317
- padding: 12px 16px;
318
- background: var(--color-surface-muted);
319
- border-bottom: 1px solid var(--color-border);
365
+ justify-content: space-between;
366
+ margin-bottom: 8px;
320
367
  }
321
368
 
322
- .provider-header .provider-name {
369
+ .provider-auth-title {
370
+ display: flex;
371
+ align-items: baseline;
372
+ gap: 8px;
373
+ }
374
+
375
+ .provider-name {
323
376
  font-weight: 600;
324
377
  font-size: 14px;
378
+ color: var(--color-text);
325
379
  }
326
380
 
327
- .provider-accounts {
328
- padding: 12px 16px;
381
+ .provider-company {
382
+ font-size: 12px;
383
+ color: var(--color-text-muted);
329
384
  }
330
385
 
331
- .provider-account-item {
386
+ .provider-accounts-list {
332
387
  display: flex;
333
- align-items: center;
334
- gap: 12px;
388
+ flex-direction: column;
389
+ gap: 8px;
390
+ }
391
+
392
+ .provider-no-accounts {
393
+ color: var(--color-text-muted);
394
+ font-size: 13px;
395
+ font-style: italic;
335
396
  padding: 8px 0;
336
- border-bottom: 1px solid var(--color-border);
337
397
  }
338
398
 
339
- .provider-account-item:last-child {
340
- border-bottom: none;
399
+ .provider-account-row {
400
+ display: flex;
401
+ align-items: center;
402
+ justify-content: space-between;
403
+ padding: 8px 12px;
404
+ background: var(--color-surface);
405
+ border: 1px solid var(--color-border);
406
+ border-radius: 6px;
407
+ }
408
+
409
+ .provider-account-row.is-default {
410
+ background: rgba(16, 185, 129, 0.08);
411
+ border-color: rgba(16, 185, 129, 0.45);
412
+ }
413
+
414
+ .provider-account-info {
415
+ display: flex;
416
+ flex-direction: column;
417
+ gap: 2px;
418
+ min-width: 0;
419
+ flex: 1;
341
420
  }
342
421
 
343
- .provider-account-item .account-name {
422
+ .provider-account-label {
423
+ display: flex;
424
+ align-items: center;
425
+ gap: 6px;
426
+ }
427
+
428
+ .account-label-text {
344
429
  font-weight: 500;
345
- font-size: 14px;
430
+ font-size: 13px;
431
+ color: var(--color-text);
432
+ }
433
+
434
+ .account-default-badge {
435
+ font-size: 10px;
436
+ font-weight: 600;
437
+ text-transform: uppercase;
438
+ padding: 2px 6px;
439
+ background: var(--color-success, #10b981);
440
+ color: white;
441
+ border-radius: 4px;
346
442
  }
347
443
 
348
- .provider-account-item .account-email {
444
+ .account-type-badge {
445
+ font-size: 10px;
446
+ font-weight: 600;
447
+ text-transform: uppercase;
448
+ padding: 2px 6px;
449
+ border-radius: 4px;
450
+ }
451
+
452
+ .account-type-badge.oauth {
453
+ background: rgba(var(--color-accent-rgb), 0.14);
454
+ color: var(--color-accent);
455
+ }
456
+
457
+ .account-type-badge.api-key {
458
+ background: rgba(14, 165, 233, 0.14);
459
+ color: #0284c7;
460
+ }
461
+
462
+ .account-active-check {
463
+ color: var(--color-success, #10b981);
464
+ flex-shrink: 0;
465
+ }
466
+
467
+ .account-inactive-spacer {
468
+ width: 16px;
469
+ flex-shrink: 0;
470
+ }
471
+
472
+ .provider-account-email {
349
473
  color: var(--color-text-muted);
350
- font-size: 13px;
351
- flex: 1;
474
+ font-size: 12px;
475
+ white-space: normal;
476
+ overflow-wrap: anywhere;
352
477
  }
353
478
 
354
- .provider-account-item .account-actions {
479
+ .provider-account-actions {
355
480
  display: flex;
356
481
  gap: 4px;
482
+ flex-shrink: 0;
483
+ margin-left: 12px;
357
484
  }
358
485
 
359
- /* Provider sign-in modal */
360
- .provider-signin-options {
361
- display: flex;
362
- flex-direction: column;
363
- gap: 8px;
486
+ .provider-account-actions .btn-small {
487
+ padding: 4px 10px;
488
+ font-size: 12px;
364
489
  }
365
490
 
366
- .provider-signin-btn {
491
+ .ai-provider-add-tabs {
367
492
  display: flex;
368
- align-items: center;
369
- justify-content: center;
370
- padding: 12px 16px;
371
- background: var(--color-surface-muted);
372
- border: 1px solid var(--color-border);
373
- border-radius: var(--radius-medium);
493
+ gap: 4px;
494
+ margin-bottom: 16px;
495
+ border-bottom: 1px solid var(--color-border);
496
+ }
497
+
498
+ .ai-provider-tab {
499
+ border: none;
500
+ background: transparent;
501
+ color: var(--color-text-muted);
502
+ font-size: 13px;
503
+ font-weight: 600;
504
+ padding: 10px 12px;
505
+ border-bottom: 2px solid transparent;
374
506
  cursor: pointer;
375
- transition: all 0.2s ease;
376
- font-size: 14px;
377
- font-weight: 500;
507
+ margin-bottom: -1px;
378
508
  }
379
509
 
380
- .provider-signin-btn:hover {
381
- background: var(--color-accent);
382
- border-color: var(--color-accent);
383
- color: white;
510
+ .ai-provider-tab.active {
511
+ color: var(--color-accent);
512
+ border-bottom-color: var(--color-accent);
513
+ }
514
+
515
+ .ai-provider-tab-content {
516
+ display: none;
517
+ }
518
+
519
+ .ai-provider-tab-content.active {
520
+ display: block;
384
521
  }
385
522
 
386
523
  /* ============================================================