<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>M/Monit Admin | Alerts</title>
    <meta name="theme-color" content="#3D3E40">
    <meta name="apple-mobile-web-app-capable" content="yes">
	<meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-title" content="M/Monit" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
    <link rel="apple-touch-icon" href="../../img/apple-touch-icon.png"/>
    <link rel="manifest" href="../../img/manifest.webmanifest">
    <script src="../../lib/js/appearance.js"></script>
    <link rel="stylesheet" href="../../lib/css/styles.css?version=430">
    <link rel="stylesheet" href="../../assets/admin/admin_alerts.css?version=430">
</head>
<body>
    <?cs include:"img/icons.svg" ?>
    <div id="wrap">
        <div id="fixed-header">
            <div id="fake-status-bar"></div>
            <div id="header">
                <div id="nav">
                    <a id="logo" target="webapp" href="../../"></a>
                    <a id="logout" title="Logout" target="webapp" href="../../login/logout.csp"></a>
                    <ul id="menu">
                        <li>
                            <a target="webapp" href="../../index.csp"><span>Dashboard</span></a>
                        </li>
                        <li>
                            <a target="webapp" href="../../status/hosts/"><span>Status</span></a>
                        </li>
                        <li>
                            <a target="webapp" href="../../reports/analytics/"><span>Reports</span></a>
                            <ul>
                                <li><a target="webapp" href="../../reports/analytics/">Analytics</a></li>
                                <li><a target="webapp" href="../../reports/uptime/">Uptime</a></li>
                                <li><a target="webapp" href="../../reports/events/">Events</a></li>
                            </ul>
                        </li>
                        <li class="active">
                            <?cs if:#Request.Param.IsAdmin ?>
                            <a target="webapp" href="../../admin/general/"><span>Admin</span></a>
                            <ul>
                                <li><a target="webapp" href="../../admin/general/">General</a></li>
                                <li><a target="webapp" href="../../admin/hosts/">Hosts</a></li>
                                <li><a target="webapp" href="../../admin/groups/">Groups</a></li>
                                <li><a target="webapp" href="../../admin/users/">Users</a></li>
                                <li><a target="webapp" href="../../admin/roles/">Roles</a></li>
                                <li><a target="webapp" href="../../admin/alerts/">Alerts</a></li>
                                <li><a target="webapp" href="../../admin/settings/">Settings</a></li>
                            </ul>
                            <?cs else ?>
                            <a target="webapp" href="../../admin/users/edit?id=<?cs var:Request.Param.RemoteUserId ?>"><span>Profile</span></a>
                            <?cs /if ?>
                        </li>
                        <li id="logout-phone"><a target="webapp" href="../../login/logout.csp">Logout</a></li>
                    </ul>
                </div> <!-- nav -->
            </div><!-- header -->
        </div><!-- fixed-header -->
        <div id="main">
<?cs if:#Request.Param.IsAdmin ?>
            <div id="title">
                <a href="#" id="help" class="help-button" title="Help" data-help="#helpbox"></a>
                <h1>
                    <span>Alerts</span>
                </h1>
            </div>
            <div class="row-fluid">
                <div class="span12">
                    <ul class="nav nav-tabs" id="tabs">
                        <li class="selected"><a href="#rulesTab">Rules</a></li>
                        <li><a href="#messageTab"><span class="hidden-desktop hidden-tablet">Tmpl</span><span class="hidden-phone">Message Template</span></a></li>
                        <li><a href="#mailTab">Mail<span class="hidden-phone"> Servers</span></a></li>
                        <li><a href="#xmppTab">XMPP<span class="hidden-phone"> Servers</span></a></li>
                        <li><a href="#serviceTab"><span class="hidden-phone">Alert</span> Service</a></li>
                    </ul>
                </div>
                <div class="span12">
                    <div class="tab-content">
                        <!-- rulesTab -->
                        <div class="tab-pane active" style="display:none;" id="rulesTab" data-bind="visible: true">
                            <div class="titlerow margin-bottom-2">
                                <button class="add-button" title="Add new rule" data-bind="event: {vclick: rules.add}, css: {disabled: $root.rules.createInProgress() }"></button>
                                <span class="hidden-phone toright" data-bind="css:{'add-hint':rules.list().length == 0}"></span>
                                <span>Set up alert rules for event notification. Only active rules will be evaluated</span>
                            </div>
                            <div class="spinnerSentinel tocenter margin-top-2" style="display:none;">
                                <svg class="spinner-button active" style="width:28px;height:28px;">
                                    <use href="#spinner-icon" class="spinner-arrows"></use>
                                </svg>
                            </div>
                            <!-- ko if: rules.list().length > 0 -->
                                <ul class="tableView accordion" data-bind="foreach: rules.list">
                                    <li class="list" data-bind="attr: { 'id': 'rule' + ruleid() }">
                                        <div class="accordionRow" data-bind="event: { vclick: $root.rules.toggleExpand, mouseover: $root.rules.enableMouseover, mouseout: $root.rules.disableMouseover}, validationElement: description">
                                            <span data-bind="visible: ! editing(), text: description, event: {vclick: edit}" class="editable-text"></span>
                                            <input data-bind="visible: editing(), value: description, valueUpdate: 'afterkeydown', hasFocus: editing(), event: { blur: update }, onEnter: stopEdit, click: edit, clickBubble: false" placeholder="Rule name" type="text" maxlength="255" />
                                            <div class="group">
                                                <span class="ajaxProgress toright hidden-phone" data-bind="visible: ajaxInProgress()"><img src='../../img/spinner.gif' alt="spinner" height='12' width='12' /></span>
                                                <div class="switch-button toright">
                                                    <input name="active" type="checkbox" data-bind="checked: active" />
                                                    <label data-bind="event: {vclick: toggleActive}" for="active"></label>
                                                </div>
                                                <span class="accessory" data-bind="css: {expanded: $root.rules.isExpanded($data)}"></span>
                                            </div>
                                        </div>
                                        <div class="accordionPanel rules-controller" data-bind="slideVisible: $root.rules.isExpanded($data), slideDuration:300">
                                            <div class="operator">
                                                <span>IF</span>
                                                <div class="tableViewDropDown btn-group dropdown">
                                                    <button class="btn btn-link dropdown-toggle" data-toggle="dropdown">
                                                        <div data-bind="text: operator2label($data)">Operator</div>
                                                    </button>
                                                    <ul class="dropdown-menu" data-bind="foreach: operator">
                                                        <li data-bind="event: {vclick:$parent.selectOperator}, css:{checked:selected}">
                                                            <span data-bind="text: name"></span>
                                                        </li>
                                                    </ul>
                                                </div>
                                                <span>of the following conditions are met:</span>
                                            </div>
                                            <div class="row-fluid">
                                                <!-- ko foreach: {data: rulerows, afterRender: $root.handleRuleRowAfterRender} -->
                                                <div class="span12 rulerow" data-bind="event: { mouseover: enableControlbox, mouseout: disableControlbox}">
                                                    <div class="controlbox" data-bind="style: { visibility: controlboxEnabled() ? 'visible' : 'hidden'}">
                                                        <span class="controller delete" data-bind="event: {vclick:$parent.deleteRuleRow}" title="Delete rule"></span>
                                                        <span class="controller add" data-bind="event: {vclick:$parent.addRuleRow.bind($data, $index() + 1)}" title="Add rule"></span>
                                                    </div>
                                                    <div class="inputbox">
                                                        <!-- host/hostgroup menu -->
                                                        <div class="host tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">
                                                            <div class="btn" data-bind="event: {vclick: toggleHostsMenu}, style: {width: $root.buttonWidth()}">
                                                                <span class="caret"></span>
                                                                <span data-bind="text: hosts2label"></span>
                                                            </div>
                                                            <div class="callout popup">
                                                                <div class="tableViewScroller">
                                                                    <div class="tableViewTop current">
                                                                        <ul class="tableView">
                                                                            <li class="list" data-bind="event: {vclick: hostViewController.push}, css:{disabled:hosts().length == 0}">
                                                                                <span>Hosts</span>
                                                                                <span class="accessory"></span>
                                                                                <div class="tableViewSubView">
                                                                                    <div class="tableViewBar">
                                                                                        <div>
                                                                                            <div class="title">Hosts</div>
                                                                                            <span class="backButton" data-bind="event: {vclick: hostViewController.pop}"></span>
                                                                                            <span class="searchButton" data-bind="visible:hosts().length > 10, event: {vclick:toggleShowHostSearch}, css:{active:shouldShowHostSearch}"></span>
                                                                                        </div>
                                                                                        <div data-bind="slideVisible:shouldShowHostSearch, focuson:'.searchfield'">
                                                                                            <input class="searchfield" placeholder="search hosts ..." type="search" data-bind="value: hostQuery, valueUpdate: ['keyup','search'], blurOnEnter: true" autocomplete="off" />
                                                                                        </div>
                                                                                    </div>
                                                                                    <ul class="tableView" data-bind="foreach: hosts">
                                                                                        <!-- ko if: active() -->
                                                                                            <li class="select" data-bind="event: {vclick:$parent.selectHost}, css:{checked:selected}">
                                                                                                <span data-bind="text: name"></span>
                                                                                                <span class="accessory"></span>
                                                                                            </li>
                                                                                        <!-- /ko -->
                                                                                    </ul>
                                                                                </div>
                                                                            </li>
                                                                            <li class="list" data-bind="event: {vclick: hostViewController.push}, css:{disabled:hostgroups().length == 0}">
                                                                                <span>Host groups</span>
                                                                                <span class="accessory"></span>
                                                                                <div class="tableViewSubView">
                                                                                    <div class="tableViewBar">
                                                                                        <div class="title">Host groups</div>
                                                                                        <span class="backButton" data-bind="event: {vclick:hostViewController.pop}"></span>
                                                                                    </div>
                                                                                    <ul class="tableView" data-bind="foreach: hostgroups">
                                                                                        <li class="select" data-bind="event: {vclick:$parent.selectHostGroup}, css:{checked:selected}">
                                                                                            <span data-bind="text: name"></span>
                                                                                            <span class="accessory"></span>
                                                                                        </li>
                                                                                    </ul>
                                                                                </div>
                                                                            </li>
                                                                        </ul>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <!-- service/servicegroup menu -->
                                                        <div class="service tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">
                                                            <div class="btn" data-bind="event: {vclick: toggleServicesMenu}, style: {width: $root.buttonWidth()}">
                                                                <span class="caret"></span>
                                                                <span data-bind="text: services2label"></span>
                                                            </div>
                                                            <div class="callout popup">
                                                                <div class="tableViewScroller">
                                                                    <div class="tableViewTop current">
                                                                        <ul class="tableView">
                                                                            <li class="list" data-bind="event: {vclick: serviceViewController.push}, css:{disabled:Menu.countActive(services()) == 0}">
                                                                                <span>Services</span>
                                                                                <span class="accessory"></span>
                                                                                <div class="tableViewSubView">
                                                                                    <div class="tableViewBar">
                                                                                        <div>
                                                                                        <div class="title">Services</div>
                                                                                            <span class="backButton" data-bind="event: {vclick:serviceViewController.pop}"></span>
                                                                                            <span class="selectAllButton" data-bind="css:{unSelectAllButton:Menu.countSelected(services()) == services().length}, event: {vclick:$data.selectAllServices}"></span>
                                                                                            <span class="searchButton" data-bind="visible:services().length > 10, event: {vclick:toggleShowServiceSearch}, css:{active:shouldShowServiceSearch}"></span>
                                                                                        </div>
                                                                                        <div data-bind="slideVisible:shouldShowServiceSearch, focuson:'.searchfield'">
                                                                                            <input class="searchfield" placeholder="search services ..." type="search" data-bind="value: serviceQuery, valueUpdate: ['keyup','search'], blurOnEnter: true" autocomplete="off" />
                                                                                        </div>
                                                                                    </div>
                                                                                    <ul class="tableView multi" data-bind="foreach: services">
                                                                                        <!-- ko if: active() -->
                                                                                            <li class="select" data-bind="event: {vclick:$parent.selectService}, css:{checked:selected}">
                                                                                                <span data-bind="text: name"></span>
                                                                                                <span class="accessory"></span>
                                                                                            </li>
                                                                                        <!-- /ko -->
                                                                                    </ul>
                                                                                </div>
                                                                            </li>
                                                                            <li class="list" data-bind="event: {vclick: serviceViewController.push}, css:{disabled:Menu.countActive(servicegroups()) == 0}">
                                                                                <span>Service groups</span>
                                                                                <span class="accessory"></span>
                                                                                <div class="tableViewSubView">
                                                                                    <div class="tableViewBar">
                                                                                        <div class="title">Service groups</div>
                                                                                        <span class="backButton" data-bind="event: {vclick:serviceViewController.pop}"></span>
                                                                                        <span class="selectAllButton" data-bind="css:{unSelectAllButton:Menu.countSelected(servicegroups()) == servicegroups().length}, event: {vclick:$data.selectAllServiceGroups}"></span>
                                                                                    </div>
                                                                                    <ul class="tableView multi" data-bind="foreach: servicegroups">
                                                                                        <!-- ko if: active() -->
                                                                                            <li class="select" data-bind="event: {vclick:$parent.selectServiceGroup}, css:{checked:selected}">
                                                                                                <span data-bind="text: name"></span>
                                                                                                <span class="accessory"></span>
                                                                                            </li>
                                                                                        <!-- /ko -->
                                                                                    </ul>
                                                                                </div>
                                                                            </li>
                                                                        </ul>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <!-- state menu -->
                                                        <div class="state tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">
                                                            <div class="btn" data-bind="event: {vclick: toggleStatesMenu}, style: {width: $root.buttonWidth()}">
                                                                <span class="caret"></span>
                                                                <span data-bind="text: states2label"></span>
                                                            </div>
                                                            <div class="callout popup">
                                                                <div class="tableViewScroller">
                                                                    <div class="tableViewTop current">
                                                                        <div class="tableViewBar">
                                                                            <div class="title">States</div>
                                                                            <span class="selectAllButton" data-bind="css:{unSelectAllButton:Menu.countSelected(states()) == states().length}, event: {vclick: $data.toggleSelection.bind($data, states, statesSelected)}"></span>
                                                                        </div>
                                                                        <ul class="tableView multi" data-bind="foreach: states">
                                                                            <li class="select" data-bind="event: {vclick:$parent.selectState}, css:{checked:selected}">
                                                                                <span data-bind="text: name"></span>
                                                                                <span class="accessory"></span>
                                                                            </li>
                                                                        </ul>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <!-- event menu -->
                                                        <div class="event tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">
                                                            <div class="btn" data-bind="event: {vclick: toggleEventsMenu}, style: {width: $root.buttonWidth()}">
                                                                <span class="caret"></span>
                                                                <span data-bind="text: events2label"></span>
                                                            </div>
                                                            <div class="callout popup">
                                                                <div class="tableViewScroller">
                                                                    <div class="tableViewTop current">
                                                                        <div class="tableViewBar">
                                                                            <div class="title">Events</div>
                                                                            <span class="selectAllButton" data-bind="css:{unSelectAllButton:Menu.countSelected(events()) == events().length}, event: {vclick: $data.toggleSelection.bind($data, events, eventsSelected)}"></span>
                                                                        </div>
                                                                        <ul class="tableView multi" data-bind="foreach: events">
                                                                            <!-- ko if: active() -->
                                                                                <li class="select" data-bind="event: {vclick:$parent.selectEvent}, css:{checked:selected}">
                                                                                    <span data-bind="text: name"></span>
                                                                                    <span class="accessory"></span>
                                                                                </li>
                                                                            <!-- /ko -->
                                                                        </ul>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                                <!-- /ko -->
                                            </div>
                                            <div class="margin-top-1">THEN perform the following actions:</div>
                                            <div class="row-fluid">
                                                <!-- ko foreach: actionrows -->
                                                <div class="actionrow" data-bind="event: { mouseover: enableControlbox, mouseout: disableControlbox}">
                                                    <div class="controlbox" data-bind="style: { visibility: controlboxEnabled() ? 'visible' : 'hidden'}">
                                                        <span class="controller delete" data-bind="event: {vclick:$parent.deleteActionRow}" title="Delete action"></span>
                                                        <span class="controller add" data-bind="event: {vclick:$parent.addActionRow.bind($data, $index() + 1)}" title="Add action"></span>
                                                    </div>
                                                    <div class="inputbox">
                                                        <div class="inputtable">
                                                            <div class="inputrow">
                                                                <div class="inputcolumn">
                                                                    <!-- action menu -->
                                                                    <div class="action tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">

                                                                        <div class="btn" data-bind="event: {vclick: toggleActionMenu}, style: {width: $root.buttonWidth()}" style="display: flex; align-items: center; justify-content: space-between;">
                                                                            <span data-bind="text: action2label"></span>
                                                                                <div style="display: flex;align-items: center;">
                                                                                    <img class="warning" src="../../img/led1.png" alt="warning" rel="tooltip" title="Server not defined" data-bind="visible: $parent.shouldShowWarning($data), event: { mouseover: $parent.displayWarning, mouseout: $parent.hideWarning, vclick: $parent.clickWarning }">
                                                                                    <span class="caret"></span>
                                                                                </div>
                                                                        </div>
                                                                        <div class="callout popup">
                                                                            <div class="tableViewScroller">
                                                                                <div class="tableViewTop current">
                                                                                    <ul class="tableView" data-bind="foreach: actions">
                                                                                        <li class="select" data-bind="event: {vclick:$parent.selectAction}, css:{checked:selected}">
                                                                                            <span data-bind="text: name"></span>
                                                                                            <span class="accessory"></span>
                                                                                        </li>
                                                                                    </ul>
                                                                                </div>
                                                                            </div>
                                                                        </div>
                                                                    </div>
                                                                </div> <!-- inputcolumn -->
                                                                <div class="inputcolumn">
                                                                    <!-- user/target selection -->
                                                                    <!-- ko if: actionSelected() == 0 || actionSelected() == 2 -->
                                                                    <div class="user tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">
                                                                        <div class="btn" data-bind="event: {vclick: toggleUsersMenu}, style: {width: $root.buttonWidth()}">
                                                                            <span class="caret"></span>
                                                                            <span data-bind="text: user2label"></span>
                                                                        </div>
                                                                        <div class="callout popup">
                                                                            <div class="tableViewScroller">
                                                                                <div class="tableViewTop current">
                                                                                    <div class="tableViewBar">
                                                                                        <div class="title">Users</div>
                                                                                        <span class="selectAllButton" data-bind="css:{unSelectAllButton:(Menu.countSelected(users()) + Menu.countDisabled(users())) == users().length}, event: {vclick: $data.toggleSelection.bind($data, users, usersSelected)}"></span>
                                                                                    </div>
                                                                                    <ul class="tableView multi" data-bind="foreach: users">
                                                                                        <li class="select" data-bind="event: {vclick:$parent.selectUser}, css:{checked:selected, disabled:disabled}">
                                                                                            <span data-bind="text: name"></span>
                                                                                            <span class="accessory"></span>
                                                                                        </li>
                                                                                    </ul>
                                                                                </div>
                                                                            </div>
                                                                        </div>
                                                                    </div>
                                                                    <span class="popover-wrapper" alt="Message settings" title="Message settings" data-bind="event: {vclick: $parent.togglePanel}">
                                                                        <svg class="info-button hidden-phone" style="width:18px;height:18px;">
                                                                            <use href="#circle-fill-icon" class="circle-fill"></use>
                                                                            <use href="#exclamation-icon" class="exclamation-mark"></use>
                                                                        </svg>
                                                                    </span>
                                                                    <div class="popover fade right in" data-bind="template: { name: 'testmessage-template'}"></div>
                                                                    <!-- /ko -->
                                                                    <!-- ko if: actionSelected() == 1 -->
                                                                    <input type="text" class="email input" data-bind="value: target, valueUpdate: 'afterkeydown', style: {width: $root.buttonWidth()}" placeholder="email..." />
                                                                    <div class="popover-wrapper" alt="Message settings" title="Message settings" data-bind="event: {vclick: $parent.togglePanel}">
                                                                        <svg class="info-button hidden-phone" style="width:18px;height:18px;">
                                                                            <use href="#circle-fill-icon" class="circle-fill"></use>
                                                                            <use href="#exclamation-icon" class="exclamation-mark"></use>
                                                                        </svg>
                                                                    </div>
                                                                    <div class="popover fade right in" data-bind="template: { name: 'testmessage-template'}"></div>
                                                                    <!-- /ko -->
                                                                    <!-- ko if: actionSelected() == 3 -->
                                                                    <input type="text" class="jabber input field" data-bind="value: target, valueUpdate: 'afterkeydown', style: {width: $root.buttonWidth()}" placeholder="jabber name..." />
                                                                    <span class="popover-wrapper" alt="Message settings" title="Message settings" data-bind="event: {vclick: $parent.togglePanel}">
                                                                        <svg class="info-button hidden-phone" style="width:18px;height:18px;">
                                                                            <use href="#circle-fill-icon" class="circle-fill"></use>
                                                                            <use href="#exclamation-icon" class="exclamation-mark"></use>
                                                                        </svg>
                                                                    </span>
                                                                    <div class="popover fade right in" data-bind="template: { name: 'testmessage-template'}"></div>
                                                                    <!-- /ko -->
                                                                    <!-- ko if: actionSelected() == 4 -->
                                                                    <input type="text" class="program input" data-bind="value: target, valueUpdate: 'afterkeydown', style: {width: $root.buttonWidth()}" placeholder="program..." />
                                                                    <span class="popover-wrapper" alt="Program settings" title="Program settings" data-bind="event: {vclick: $parent.togglePanel}">
                                                                        <svg class="info-button hidden-phone" style="width:18px;height:18px;">
                                                                            <use href="#circle-fill-icon" class="circle-fill"></use>
                                                                            <use href="#exclamation-icon" class="exclamation-mark"></use>
                                                                        </svg>
                                                                    </span>
                                                                    <div class="popover fade right in">
                                                                        <div class="arrow"></div>
                                                                        <h3 class="popover-title">Program settings</h3>
                                                                        <div class="popover-content">
                                                                            <ul>
                                                                              <li class="repetition">
                                                                                  <label>
                                                                                      Repeat the program if the error persists:
                                                                                      <div class="margin-left-1 btn-group btn-reminder">
                                                                                          <button class="btn btn-block dropdown-toggle" data-toggle="dropdown">
                                                                                              <span class="caret"></span>
                                                                                              <div data-bind="text: $parent.repetition2label($data)"></div>
                                                                                          </button>
                                                                                          <ul class="dropdown-menu" data-bind="foreach: repetition">
                                                                                              <li data-bind="click: $parent.selectRepetition, css: {checked: selected}">
                                                                                                  <span data-bind="html: name"></span>
                                                                                              </li>
                                                                                          </ul>
                                                                                      </div>
                                                                                  </label>
                                                                              </li>
                                                                              <li class="timeout">
                                                                                  <label>
                                                                                      Program timeout:
                                                                                      <div class="margin-left-1 btn-group btn-timeout">
                                                                                          <button class="btn btn-block dropdown-toggle" data-toggle="dropdown">
                                                                                              <span class="caret"></span>
                                                                                              <div data-bind="text: $parent.timeout2label($data)"></div>
                                                                                          </button>
                                                                                          <ul class="dropdown-menu" data-bind="foreach: timeout">
                                                                                              <li data-bind="click: $parent.selectTimeout, css: {checked: selected}">
                                                                                                  <span data-bind="html: name"></span>
                                                                                              </li>
                                                                                          </ul>
                                                                                      </div>
                                                                                  </label>
                                                                              </li>
                                                                              <li>
                                                                                  <label>
                                                                                      Variables to be set in the environment: (name=value;name=value;...)
                                                                                      <input type="text" name="environment" id="environment" class="input field" data-bind="value:option" />
                                                                                  </label>
                                                                              </li>
                                                                              <li class="testinput">
                                                                                  <label>
                                                                                      Program:
                                                                                      <textarea name="target" rows="4" cols="60" class="input field" data-bind="value:target, valueUpdate: 'afterkeydown'"></textarea>
                                                                                  </label>
                                                                              </li>
                                                                              <li class="testoutput">
                                                                                  <label>
                                                                                      Test output:
                                                                                      <textarea name="testoutputarea" rows="4" cols="60" disabled="disabled" placeholder="Press Test to run the program..." class="input field"></textarea>
                                                                                  </label>
                                                                              </li>
                                                                              <li class="separator">
                                                                                  <button class="btn margin-right-1" data-bind="event: {vclick: $parent.togglePanel}">Close</button>
                                                                                  <button class="btn btn-primary" data-bind="event: {vclick: testProgram}">Test</button>
                                                                              </li>
                                                                            </ul>
                                                                        </div>
                                                                    </div>
                                                                    <!-- /ko -->
                                                                    
                                                                    <!-- ko if: actionSelected() == 5 -->
                                                                    <div class="user tableViewMenu" data-bind="style: {width: $root.buttonWidth()}">
                                                                        <div class="btn" data-bind="event: {vclick: toggleAlertServiceMenu}, style: {width: $root.buttonWidth()}">
                                                                            <span class="caret"></span>
                                                                            <span data-bind="text: alertservice2label"></span>
                                                                        </div>
                                                                        <div class="callout popup">
                                                                            <div class="tableViewScroller">
                                                                                <div class="tableViewTop current">
                                                                                    <div class="tableViewBar">
                                                                                        <div class="title">Alert Services</div>
                                                                                    </div>
                                                                                    <ul class="tableView" data-bind="foreach: alertservice">
                                                                                        <li class="select" data-bind="event: {vclick:$parent.selectAlertService}, css:{checked:selected, disabled:disabled}">
                                                                                            <span data-bind="text: name"></span>
                                                                                            <span class="accessory"></span>
                                                                                        </li>
                                                                                    </ul>
                                                                                </div>
                                                                            </div>
                                                                        </div>
                                                                    </div>
                                                                    <!-- /ko -->
                                                                    
                                                                </div> <!-- inputcolumn -->
                                                            </div> <!-- inputrow -->
                                                        </div> <!-- inputtable -->
                                                    </div> <!-- inputbox -->
                                                </div>
                                                <!-- /ko -->
                                            </div>
                                            <div class="row-fluid crud-button-group">
                                                <button class="btn btn-small toright" data-target="#confirmRuleDelete" data-toggle="modal" data-bind="event: {vclick: $root.rules.confirmDelete}">Delete</button>
                                                <button class="btn btn-small btn-primary btn-inverse toleft" data-bind="visible: ! ruleid(), event: {vclick: saveRule}">Save</button>
                                                <button class="btn btn-small btn-primary btn-inverse toleft" data-bind="visible: ruleid(), disable: !modified(), event: {vclick: updateRule}">Update</button>
                                            </div>
                                        </div>
                                    </li>
                                </ul>
                            <!-- /ko -->
                            <!-- rulesTab: delete dialog -->
                            <div id="confirmRuleDelete" class="modal hide" data-bind="with: rules.rule">
                                <div class="modal-body">
                                    <h2>Delete <span class="text-error" data-bind='text: description'></span>?</h2>
                                    <p>Are you sure you want to delete this rule? There is no undo.</p>
                                </div>
                                <div class="modal-footer">
                                    <button class="btn" data-dismiss="modal" data-bind="event: {vclick: cancelRule}">Cancel</button>
                                    <button class="btn btn-danger" data-dismiss="modal" data-bind="event: {vclick: deleteRule}">Delete</button>
                                </div>
                            </div>
                        </div>
                        <!-- /rulesTab -->

                        <!-- messageTab -->
                        <div class="tab-pane" style="display:none;" id="messageTab" data-bind="visible: true">
                            <div class="row-fluid">
                                <div class="span12">
                                    <h3>Mail Sender</h3>
                                    <ul class="tableView">
                                        <li class="messageFormat" data-bind="validationElement: message.format.sendername">
                                            <span>Full Name</span>
                                            <span class="accessory">
                                                <input name="sendername" type="text" autocomplete="off" size="255" data-bind="value: message.format.sendername" />
                                            </span>
                                        </li>
                                        <li class="messageFormat" data-bind="validationElement: message.format.senderaddress">
                                            <span>Address</span>
                                            <span class="accessory">
                                                <input name="senderaddress" type="text" autocomplete="off" size="255" data-bind="value: message.format.senderaddress" />
                                            </span>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                            <div class="row-fluid">
                                <div class="span12">
                                    <h3>Message content</h3>
                                    <ul class="tableView">
                                        <li class="tableViewDropDown">
                                            <span>Content format</span>
                                            <span class="accessory">
                                                <div class="btn-group">
                                                    <button class="btn btn-link dropdown-toggle" data-toggle="dropdown">
                                                        <span class="caret"></span>
                                                        <div data-bind="html: message.format.contenttype.label">Select format</div>
                                                    </button>
                                                    <ul class="dropdown-menu pull-right" data-bind="foreach: message.format.contenttype.menu">
                                                        <li data-bind="event: {vclick:$root.message.format.contenttype.select}, css:{checked:selected}">
                                                            <span data-bind="html: name"></span>
                                                        </li>
                                                    </ul>
                                                </div>
                                            </span>
                                        </li>
                                        <li class="tableViewDropDown">
                                            <span>Maximum events</span>
                                            <span class="accessory">
                                                <div class="btn-group">
                                                    <button class="btn btn-link dropdown-toggle" data-toggle="dropdown">
                                                        <span class="caret"></span>
                                                        <div data-bind="html: message.format.maxevents.label">Select limit</div>
                                                    </button>
                                                    <ul class="dropdown-menu pull-right" data-bind="foreach: message.format.maxevents.menu">
                                                        <li data-bind="event: {vclick:$root.message.format.maxevents.select}, css:{checked:selected}">
                                                            <span data-bind="html: name"></span>
                                                        </li>
                                                    </ul>
                                                </div>
                                            </span>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                            <div class="row-fluid">
                                <div class="span12">
                                    <h3>Alert aggregation</h3>
                                    <ul class="tableView">
                                        <li class="tableViewDropDown">
                                            <span>Interval</span>
                                            <span class="accessory">
                                                <div class="btn-group dropup">
                                                    <button class="btn btn-link dropdown-toggle" data-toggle="dropdown">
                                                        <span class="caret"></span>
                                                        <div data-bind="html: message.queue.flushinterval.label">Select time frame</div>
                                                    </button>
                                                    <ul class="dropdown-menu pull-right" data-bind="foreach: message.queue.flushinterval.menu">
                                                        <li data-bind="event: {vclick:$root.message.queue.flushinterval.select}, css:{checked:selected}">
                                                            <span data-bind="html: name"></span>
                                                        </li>
                                                    </ul>
                                                </div>
                                            </span>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                        <!-- /messageTab -->

                        <!-- mailTab -->
                        <div class="tab-pane" style="display:none;" id="mailTab" data-bind="visible: true">
                            <div class="titlerow margin-bottom-2">
                                <button class="add-button" title="Add new Mail Server" data-bind="event: {vclick: mailservers.add}, css: {disabled: $root.mailservers.createInProgress() }"></button>
                                <span class="hidden-phone toright" data-bind="css:{'add-hint':mailservers.list().length == 0}"></span>
                                <span>Set up Mail Servers for event notification.</span>
                            </div>
                            <!-- ko if: mailservers.list().length > 0 -->
                                <ul class="tableView accordion" data-bind="foreach: mailservers.list">
                                    <li class="list" data-bind="attr: { 'id': 'mailserver' + id() }">
                                        <div class="accordionRow" data-bind="event: { vclick: $root.mailservers.toggleExpand, mouseover: $root.mailservers.enableMouseover, mouseout: $root.mailservers.disableMouseover}, validationElement: hostname">
                                            <span data-bind="visible: ! editingHostName(), text: hostname, event: {vclick: editHostName}" class="editable-text"></span>
                                            <input data-bind="visible: editingHostName(), value: hostname, valueUpdate: 'afterkeydown', hasFocus: editingHostName(), event: { blur: stopEditHostName }, onEnter: stopEditHostName, click: editHostName, clickBubble: false" placeholder="Server Hostname or IP..." type="text" maxlength="255" />
                                            <span class="accessory" data-bind="css: {expanded: $root.mailservers.isExpanded($data)}"></span>
                                        </div>
                                        <div class="accordionPanel mailservers-controller" data-bind="slideVisible: $root.mailservers.isExpanded($data), slideDuration:300">
                                            <ul>
                                                <li data-bind="validationElement: port">
                                                    <span>Server port</span>
                                                    <span class="accessory">
                                                        <input placeholder="Port..." class="portSentinelClass" type="text" size="6" data-bind="value: port" />
                                                    </span>
                                                </li>
                                                <li class="switch-button">
                                                    <input name="mailusessl" type="checkbox" data-bind="checked: enableSSL" />
                                                    <label data-bind="event: {vclick: toggleSSL}" for="mailusessl">Enable SSL</label>
                                                </li>
                                                <li class="switch-button">
                                                    <input name="mailauthentication" type="checkbox" data-bind="checked: enableAuthentication" />
                                                    <label data-bind="event: {vclick: toggleAuthentication}" for="mailauthentication">Authentication</label>
                                                </li>
                                            </ul>
                                            <ul data-bind="slideVisible: enableAuthentication, slideDuration:300">
                                                <li data-bind="validationElement: username, css: {error: !username.isValid}">
                                                    <span class="margin-left-2">Username</span>
                                                    <span class="accessory">
                                                        <input placeholder="Username..." type="text" size="128" data-bind="value: username" autocomplete="off" />
                                                    </span>
                                                </li>
                                                <li data-bind="validationElement: password, css: {error: !password.isValid}">
                                                    <span class="margin-left-2">Password</span>
                                                    <span class="accessory">
                                                        <input placeholder="Password..." type="password" size="128" data-bind="value: password" autocomplete="new-password" />
                                                    </span>
                                                </li>
                                            </ul>
                                            <ul class="testResult" data-bind="slideVisible: showTestResult(), slideDuration:300">
                                                <li>
                                                    <span>Status</span>
                                                    <span class="accessory"></span>
                                                </li>
                                            </ul>
                                            <ul>
                                                <li style="border-bottom: none;">
                                                    <div class="group">
                                                        <button class="btn btn-small btn-inverse btn-primary" 
                                                            data-bind="text: !id() ? 'Save' : 'Update', 
                                                                       disable: !validate() || !isModified(), 
                                                                       event: {vclick: update}">
                                                        </button>
                                                        <button class="btn btn-small margin-left-1" data-bind="disable: !validate(), event: {vclick: test}">Test Connection</button>
                                                    </div>
                                                    <button class="btn btn-small" data-target="#confirmMailServerDelete" data-toggle="modal" data-bind="event: {vclick: $root.mailservers.confirmDelete}">Delete</button>
                                                </li>
                                            </ul>
                                        </div>
                                    </li>
                                </ul>
                            <!-- /ko -->
                            <!-- mailTab: delete dialog -->
                            <div id="confirmMailServerDelete" class="modal hide" data-bind="with: mailservers.currentMailServer">
                                <div class="modal-body">
                                    <h2>Delete <span class="text-error" data-bind='text: hostname'></span>?</h2>
                                    <p>Are you sure you want to remove this mail server? There is no undo.</p>
                                </div>
                                <div class="modal-footer">
                                    <button class="btn" data-dismiss="modal">Cancel</button>
                                    <button class="btn btn-danger" data-dismiss="modal" data-bind="event: {vclick:$root.mailservers.remove}">Delete</button>
                                </div>
                            </div>
                        </div>
                        <!-- /mailTab -->
                        
                        <!-- xmppTab -->
                        <div class="tab-pane" style="display:none;" id="xmppTab" data-bind="visible: true">
                            <div class="titlerow margin-bottom-2">
                                <button class="add-button" title="Add new Jabber Server" data-bind="event: {vclick: jabberservers.add}, css: {disabled: $root.jabberservers.createInProgress() }"></button>
                                <span class="hidden-phone toright" data-bind="css:{'add-hint':jabberservers.list().length == 0}"></span>
                                <span>Set up XMPP (Jabber) Servers for event notification.</span>
                            </div>
                            <!-- ko if: jabberservers.list().length > 0 -->
                                <ul class="tableView accordion" data-bind="foreach: jabberservers.list">
                                    <li class="list" data-bind="attr: { 'id': 'jabberserver' + id() }">
                                        <div class="accordionRow" data-bind="event: { vclick: $root.jabberservers.toggleExpand, mouseover: $root.jabberservers.enableMouseover, mouseout: $root.jabberservers.disableMouseover}, validationElement: hostname">
                                            <span data-bind="visible: ! editingHostName(), text: hostname, event: {vclick: editHostName}" class="editable-text"></span>
                                            <input data-bind="visible: editingHostName(), value: hostname, valueUpdate: 'afterkeydown', hasFocus: editingHostName(), event: { blur: stopEditHostName }, onEnter: stopEditHostName, click: editHostName, clickBubble: false" placeholder="Server Hostname or IP..." type="text" maxlength="255" />
                                            <span class="accessory" data-bind="css: {expanded: $root.jabberservers.isExpanded($data)}"></span>
                                        </div>
                                        <div class="accordionPanel jabberservers-controller" data-bind="slideVisible: $root.jabberservers.isExpanded($data), slideDuration:300">
                                            <ul>
                                                <li data-bind="validationElement: port">
                                                    <span>Server port</span>
                                                    <span class="accessory">
                                                        <input placeholder="Port..." class="portSentinelClass" type="text" size="6" data-bind="value: port" />
                                                    </span>
                                                </li>
                                                <li data-bind="validationElement: username, css: {error: !username.isValid}">
                                                    <span>Username</span>
                                                    <span class="accessory">
                                                        <input placeholder="Username..." type="text" size="128" data-bind="value: username" autocomplete="off" />
                                                    </span>
                                                </li>
                                                <li data-bind="validationElement: password, css: {error: !password.isValid}">
                                                    <span>Password</span>
                                                    <span class="accessory">
                                                        <input placeholder="Password..." type="password" size="128" data-bind="value: password" autocomplete="new-password" />
                                                    </span>
                                                </li>
                                            </ul>
                                            <ul class="testResult" data-bind="slideVisible: showTestResult(), slideDuration:300">
                                                <li>
                                                    <span>Status</span>
                                                    <span class="accessory"></span>
                                                </li>
                                            </ul>
                                            <ul>
                                                    <li style="border-bottom: none;">
                                                        <div class="group">
                                                            <button class="btn btn-small btn-inverse btn-primary" 
                                                                data-bind="text: !id() ? 'Save' : 'Update', 
                                                                           disable: !validate() || !isModified(), 
                                                                           event: {vclick: update}">
                                                            </button>
                                                            <button class="btn btn-small margin-left-1" data-bind="disable: !validate(), event: {vclick: test}">Test Connection</button>
                                                        </div> <!-- group -->
                                                        <button class="btn btn-small" data-target="#confirmJabberServerDelete" data-toggle="modal" data-bind="event: {vclick: $root.jabberservers.confirmDelete}">Delete</button>
                                                    </li>
                                            </ul>
                                        </div>
                                    </li>
                                </ul>
                            <!-- /ko -->
                            <!-- xmppTab: delete dialog -->
                            <div id="confirmJabberServerDelete" class="modal hide" data-bind="with: jabberservers.currentJabberServer">
                                <div class="modal-body">
                                    <h2>Delete <span class="text-error" data-bind='text: hostname'></span>?</h2>
                                    <p>Are you sure you want to remove this xmpp server? There is no undo.</p>
                                </div>
                                <div class="modal-footer">
                                    <button class="btn" data-dismiss="modal">Cancel</button>
                                    <button class="btn btn-danger" data-dismiss="modal" data-bind="event: {vclick:$root.jabberservers.remove}">Delete</button>
                                </div>
                            </div>
                        </div>
                        <!-- /xmppTab -->
                        
                        <!-- serviceTab -->
                        <div class="tab-pane" style="display:none;" id="serviceTab" data-bind="visible: true">
                            <div class="titlerow margin-bottom-2">
                                <button class="add-button" title="Add new service" data-bind="event: {vclick: services.add}, css: {disabled: $root.services.createInProgress()}"></button>
                                <span class="hidden-phone toright" data-bind="css:{'add-hint':services.list().length == 0}"></span>
                                <span>Services for event notification. Available as an action in <a href="?tab=rulesTab">Rules</a>. See help for details</span>
                            </div>
                            <!-- ko if: services.list().length > 0 -->
                            <ul class="tableView accordion" data-bind="foreach: services.list">
                                <li class="list" data-bind="attr: { 'id': 'service' + id() }">
                                    <div class="accordionRow" data-bind="event: { vclick: $root.services.toggleExpand, mouseover: $root.services.enableMouseover, mouseout: $root.services.disableMouseover}, validationElement: name">
                                        <div class="group">
                                            <img data-bind="attr: { src: iconSrc }" style="width:18px;height:18px;margin-right: 8px;" alt="logo">
                                            <span data-bind="visible: ! editingName(), text: name, event: {vclick: editName}" class="editable-text"></span>
                                            <input data-bind="visible: editingName(), value: name, valueUpdate: 'afterkeydown', hasFocus: editingName(), event: { blur: stopEditName }, onEnter: stopEditName, click: editName, clickBubble: false" placeholder="Service Name (short)..." type="text" maxlength="64" />
                                        </div>
                                        <span class="accessory" data-bind="css: {expanded: $root.services.isExpanded($data)}"></span>
                                    </div>
                                    <div class="accordionPanel" data-bind="slideVisible: $root.services.isExpanded($data), slideDuration:300">
                                        <div class="servicedefinition">
                                            <label>
                                                Description (optional):
                                                <input type="text" name="description" id="description" class="descSentinel" data-bind="value:description" />
                                            </label>
                                            <label>
                                                URL/Endpoint:
                                                <input type="text" name="endpoint" id="endpoint" data-bind="value:endpoint" />
                                            </label>
                                            <label>
                                                API Key/Token (if required):
                                                <input type="text" name="apikey" id="apikey" class="" data-bind="value:apikey" />
                                            </label>
                                            <label>
                                                Script Content:
                                                <textarea id="script" name="script" rows="5" cols="80" 
                                                placeholder="Write the service script..." 
                                                data-bind="value:script"></textarea>
                                            </label>
                                            <label style="display:none" data-bind="slideVisible: showTestResult(), slideDuration:300">
                                                Test Results:
                                                <textarea id="testoutput" name="testoutput" rows="6" cols="80" 
                                                placeholder="Press Test Service to run the script..." 
                                                disabled="disabled" class="testResult"></textarea>
                                            </label>
                
                                            <div class="row-fluid margin-top-1 padding-bottom-1 crud-button-group">
                                                <button class="btn btn-small btn-inverse btn-primary toleft" 
                                                        data-bind="text: !id() ? 'Save' : 'Update', 
                                                               disable: !validate() || !isModified(), 
                                                               event: {vclick: update}">
                                                </button>
                                                <button class="btn btn-small margin-left-1" 
                                                        data-bind="disable: !validate(), event: {vclick: test}">Test Service</button>
                                                <button class="btn btn-small toright" data-target="#confirmServiceDelete" data-toggle="modal" data-bind="event: {vclick: $root.services.confirmDelete}">Delete</button>
                                            </div>
                                        </div>
                                    </div> <!-- accordionPanel -->
                                </li> <!-- /list -->
                            </ul>
                            <!-- /ko -->
                            <!-- serviceTab: delete dialog -->
                            <div id="confirmServiceDelete" class="modal hide" data-bind="with: services.currentService">
                                <div class="modal-body">
                                    <h2>Delete <span class="text-error" data-bind='text: name'></span>?</h2>
                                    <p>Are you sure you want to remove this Service? There is no undo.</p>
                                </div>
                                <div class="modal-footer">
                                    <button class="btn" data-dismiss="modal">Cancel</button>
                                    <button class="btn btn-danger" data-dismiss="modal" data-bind="event: {vclick:$root.services.remove}">Delete</button>
                                </div>
                            </div> <!-- /confirmServiceDelete -->
                        </div>
                        <!-- /serviceTab -->
                        
                    </div> <!-- tab-content -->
                </div> <!-- span12 -->
            </div> <!-- row-fluid -->
<?cs /if ?>
        </div> <!-- main -->
    </div> <!-- wrap -->
    <div id="footer">
        <div class="toleft hidden-phone">Logged in as <?cs var:Request.RemoteUser ?></div>
        <div class="toright hidden-phone">
            <ul class="piped">
                <li>Copyright &copy; 2024 <a href="https://tildeslash.com/">Tildeslash</a>. All Rights Reserved.</li>
                <li><a href="https://mmonit.com/">M/Monit</a></li>
                <li><a href="https://mmonit.com/monit/">Monit</a></li>
                <li><a href="https://mmonit.com/wiki/">Wiki</a></li>
            </ul>
        </div>
        <div id="copy" class="visible-phone">Copyright &copy; 2024 <a href="https://tildeslash.com/">Tildeslash</a>. All Rights Reserved.</div>
    </div> <!-- footer -->
    <!-- Help -->
    <div id="helpbox">
        <!-- ko if: currentTab() === 'rulesTab' -->
        <div class="title">
            <h2>Rules Help</h2>
        </div>
        <div class="content paragraphify">
            <p>
                When an event message is received from Monit, M/Monit will check the event against a list of user defined rules and if a match is found, the
                action defined for the rule is executed.
            </p>
            <p>
                This page list all rules defined in M/Monit. In the list, a switch is used to indicate if a Rule is active or not (the switch is blue when
                active). M/Monit will only test incoming events against active rules, non-active rules are ignored.
            </p>
            <p>
                The rule-list can be perceived as a sieve, events are sifted through and only events that match a rule, produces an action
            </p>
            <h3>
                 New Rule
            </h3>
            <p>
                Before adding a new rule, take a moment to configure the mail server and/or jabber server first so you can select sending an
                email or an instant message as an action. To add a new rule, click the <strong>+</strong> button. To edit an existing rule
                click the rule row in the table. To change the name of a rule, click the name and edit it inline. Press Enter or click
                outside when done.
            </p>
            <h3>
                Conditions
            </h3>
            <p>
                A Rule is specified as an <i>if-then</i> statement. A rule evaluates to true if condition(s) matches the incoming event. A condition
                is a tuple of <em>[Host/Group, Service/Group, Event State and Event Type]</em>. This can be read as: If the event originated from a certain
                host and for a certain service and with a specific event state and type, then the condition match.
            </p>
            <p>
                Whether the condition triggers or suppresses an action is decided by the <i>any/none</i> selector. If set to <i>any</i> (the
                default), then any matching tuple triggers the action. If it is set to <i>none</i>, then the tuples serve as an exclusive list and
                any non-matching event will trigger the action.
            </p>
            <p>
                For instance, to get a notification when a service failed and a notification when the service comes back up again, create one condition row with
                [Host, Service, Failed + Succeed, Any]. A row of [Any Host, Any Service, Any State, Any Event] is a "catch all" condition and will generate an
                alert message for every event.
            </p>
			<h3>Event Types</h3>
			<p>
				The following <strong>event types</strong> are available and can be used to setup alerts for events you are interested in and
				to ignore or filter out other events.
			</p>
			<table class="table table-hover table-bordered">
				<thead>
					<tr>
						<th class="span3">Event Types</th>
						<th class="span9">Description</th>
					</tr>
				</thead>
				<tr>
					<td>Action</td>
					<td>
                        This is the event sent when you select a service and click one of the action buttons in the Host's Detailed status page or if
                        someone on the Monit host performs a service action from the command line, such as start, stop or restart a service.
                    </td>
				</tr>
				<tr>
					<td>Checksum</td>
					<td>A file checksum mismatch or file was changed</td>
				</tr>
				<tr>
					<td>Connection</td>
					<td>TCP/UDP connection or UNIX socket test failed</td>
				</tr>
				<tr>
					<td>Content</td>
					<td>File content test found a match</td>
				</tr>
				<tr>
					<td>Data</td>
					<td>Sent if Monit cannot read service data. E.g. cannot get filesystem usage</td>
				</tr>
				<tr>
					<td>Execution</td>
					<td>Execution of a service related script failed. E.g. start or exec failed</td>
				</tr>
				<tr>
					<td>Existence</td>
					<td>Fired if a service existence change. E.g. process is not running or filesystem does not exist</td>
				</tr>
				<tr>
					<td>Filesystem flags</td>
					<td>Filesystem flags changed</td>
				</tr>
				<tr>
					<td>GID</td>
					<td>A GID test failed. E.g. file owned by different group</td>
				</tr>
				<tr class="info">
					<td>Monit heartbeat</td>
					<td>If Monit fails to report its status within a given timelimit. The Host, the network or Monit might have failed</td>
				</tr>
				<tr>
					<td>Monit instance</td>
					<td>Monit itself was started, stopped or reloaded</td>
				</tr>
				<tr>
					<td>Permissions</td>
					<td>A permission test failed. E.g. file mode doesn't match</td>
				</tr>
				<tr>
					<td>PID</td>
					<td>A process' PID (Process Identifer) changed outside of Monit's control. E.g. someone restarted Apache directly</td>
				</tr>
				<tr>
					<td>Ping</td>
					<td>Sent if a host's network ping test failed</td>
				</tr>
				<tr>
					<td>PPID</td>
					<td>A process' Parent PID changed outside Monit's control</td>
				</tr>
				<tr>
					<td>Resource limit</td>
					<td>A service's resource limit test match. E.g. CPU usage > 60% or file system space usage > 80%</td>
				</tr>
				<tr>
					<td>Size</td>
					<td>A file object size test failed. E.g. file is larger than X MB</td>
				</tr>
				<tr>
					<td>Status</td>
					<td>The exit value from a program test failed</td>
				</tr>
				<tr>
					<td>Timeout</td>
					<td>A service test timed out</td>
				</tr>
				<tr>
					<td>Timestamp</td>
					<td>A timestamp test failed. E.g. file is older then expected</td>
				</tr>
				<tr>
					<td>UID</td>
					<td>An UID test failed. E.g. file owned by different user</td>
				</tr>
				<tr>
					<td>Uptime</td>
					<td>A process uptime test matched. E.g. get an alert if uptime is more than a year</td>
				</tr>
				<tr>
					<td>Valid type</td>
					<td>Sent if an object exist, but no longer is of a valid type. E.g. a fifo object was replaced with a regular file object of the same name</td>
				</tr>
			</table>

            <h3>
                Actions
            </h3>
            <p>
                What M/Monit should do when a rule evaluates to true is specified in one or more actions. M/Monit currently supports sending
                email, sending Jabber message, execute a service script or a program as an action.
            </p>
            <h4>1. Email</h4>
            <p>
                The mail server M/Monit should use for sending email is specified in the admin <a target="webapp"
                href="../../admin/alerts/?tab=mailTab">Mail Servers</a> page. There are two ways to specify email notification. Either by selecting a user
                registered in M/Monit or by specifying an email address directly. The [Send mail to user] drop-down target menu contains all <a target="webapp"
                href="../users/">users</a> in M/Monit. Disabled users in that list are those who do not have an email.
            </p>
            <p>
                If a service fails, M/Monit will send the alert only once. You can click the 
                <span style="vertical-align: text-bottom;">
                    <svg class="info-button" title="Program settings" style="width:16px;height:16px;">
                        <use href="#circle-fill-icon" class="circle-fill"></use>
                        <use href="#exclamation-icon" class="exclamation-mark"></use>
                    </svg>
                </span>
                icon and set a reminder to repeat the alert if the error
                persists.
            </p>
            <h4>2. Jabber</h4>
            <p>
                The Jabber server M/Monit should use for sending Jabber messages is specified
                in the admin <a target="webapp" href="../../admin/alerts/?tab=jabberTab">Jabber servers</a> page. There are two ways to specify
                Jabber notification. Either by selecting a user registered in M/Monit or by specifying a Jabber address
                directly. The [Send instant message to user] drop-down target menu contains all <a target="webapp" href="../users/">users</a>
                in M/Monit. Users with no Jabber address are disabled in that menu.
            </p>
            <p>
                As with email above, if a service fails, M/Monit will send the alert only once. You can set a reminder to
                repeat the alert if the error persists.
            </p>
            
            <h4>3. Alert Service</h4>
            <p>
                M/Monit comes pre-configured with scripts for sending alerts via popular platforms like Slack, Discord and PagerDuty. You can
                also create your own custom alert scripts to meet specific requirements. Before using an alert service script, you must first
                configure it for your environment. Follow these steps:
            </p>
            <ol>
                <li>Go to the <a target="webapp" href="../../admin/alerts/?tab=serviceTab">Alert Service</a> tab to configure the scripts.</li>
                <li>Set up the necessary credentials and/or endpoints for each service you wish to use.</li>
                <li>Once configured, return to this Rules page to use the scripts for alerts.</li>
                <li>Select the action "Execute Service" from the dropdown menu.</li>
                <li>Choose the specific alert script you want to use (e.g., Slack Alert, Discord Alert).</li>
            </ol>
            <p>
                This allows you to easily integrate M/Monit alerts with your preferred communication platforms, ensuring timely notifications for your team. <strong>Note:</strong> An
                alert service is disabled unless it is configured with either an endpoint or an api-key or both. If added, but the Service is still disabled, try to reload this page.
            </p>
                        
            <h4>4. Program</h4>
            <p>
                The Program option allows you to execute a specific binary program or a short script as an alert action. While Alert Services are recommended for complex scripts and
                reusability, the Program option is ideal for simple, direct commands or binary executables.
            </p>
            <p>
                Example uses:
            </p>
            <ul>
                <li>Sending an SNMP trap: <em>/usr/bin/snmptrap -v 2c -c public 192.168.1.100 '' .1.3.6.1.4.1.2021.251.1 s "$MONIT_SERVICE: $MONIT_EVENT"</em></li>
                <li>On macOS (for demonstration): <em>/usr/bin/say "Alert: $MONIT_SERVICE has an issue"</em></li>
            </ul>
            <p>
                The program is executed using <code>/bin/sh</code>. M/Monit provides these environment variables:
            </p>
            <ul>
                <li>$MONIT_EVENT: Event description</li>
                <li>$MONIT_SERVICE: Service name</li>
                <li>$MONIT_DATE: Event date and time</li>
                <li>$MONIT_HOST: Monit Host name</li>
                <li>$MONIT_ACTION: Monit action performed</li>
                <li>$MONIT_DESCRIPTION: Event condition description</li>
            </ul>
            <p>
                Click the 
                <span style="vertical-align: text-bottom;">
                    <svg class="info-button" title="Program settings" style="width:16px;height:16px;">
                        <use href="#circle-fill-icon" class="circle-fill"></use>
                        <use href="#exclamation-icon" class="exclamation-mark"></use>
                    </svg>
                </span>
                icon to:
            </p>
            <ul>
                <li>Set custom environment variables</li>
                <li>Test the program execution</li>
                <li>Configure timeout (default: 5 minutes)</li>
                <li>Set repetition for persistent errors</li>
            </ul>
            <p>
                <strong>Note:</strong> For complex alerting needs and reusability, consider using the Alert Service option instead of Program.
            </p>
        </div>
        <!-- /ko -->
        <!-- ko if: currentTab() === 'messageTab' -->
        <div class="title">
            <h2>Message Settings Help</h2>
        </div>
        <div class="content paragraphify">
            <h3>Sender</h3>
            <div>
                <p>
                    Specify the <strong>Full Name</strong> (optional) and <strong>Address</strong> in the user@domain
                    format, to be used in Email alerts sent from M/Monit.
                </p>
            </div>
            <h3>Message content</h3>
            <p>
                <code>Content format</code> can be one of the following types:
                <ul>
                    <li>
                        <code>Plaintext</code>, A simple plain text message. Each event is described in a set of lines. Jabber messages are always sent in this
                        format
                    </li>
                    <li>
                        <code>HTML</code>, Events are formatted into a simple HTML table - one row per event
                    </li>
                    <li>
                        <code>Multipart</code> (default), The message will contain both alternatives: the plaintext and the HTML version. A mail client will
                        display either the HTML or the plaintext version based on its abilities and preferences
                    </li>
                </ul>
            </p>
            <p>
                <code>Maximum events</code> per message can be set to limit the number and size of a message. If this limit is reached, the alert message will
                just contain information about the events count and refer the user to M/Monit’s event log for more details.
            </p>
            <h3>Alert aggregation</h3>
            <p>
                M/Monit can aggregate email and jabber alerts within a given interval before sending a message. Trading immediate notification with
                aggregation can be useful if you feel that you are receiving too many alerts. Instead of getting, for instance, 10 separate messages, you
                will instead get one message with 10 alerts. If no aggregation is selected, M/Monit will send an alert message as soon as an event is
                received. <strong>Note:</strong> Alert Services and Alert Program are not aggregated.
            </p>
        </div>
        <!-- /ko -->
        <!-- ko if: currentTab() === 'mailTab' -->
        <div class="title">
            <h2>Mail Servers Help</h2>
        </div>
        <div class="content paragraphify">
            <p>
                Specify SMTP servers M/Monit should use for alert notifications.
            </p>
            <p>
                To add a new server, click the <strong>+</strong> button and fill in all relevant fields. Remember to click the <code>Save</code> button to save
                the entry. To edit an existing server, expand its entry and modify the fields. The Save button is disabled until required fields are filled. The
                <code>Update</code> button is also disabled unless there are changes to the entry. Click the <code>Delete</code> button to delete the entry.
            </p>
            <h3>SSL</h3>
            <p>
                If the <code>Enable SSL</code> option is on, M/Monit will use <i>SMTPS</i>, unless the mail server port number is 25 or 587, in which case <i>STARTTLS</i> is used if
                required by the SMTP server.
                Use the DNS hostname of the SMTP server, not an IP-address. M/Monit will perform SSL certificate verification using the hostname when connecting to the server
                to ensure it is connected to the correct server. See also <em>&lt;SSLClientConfig&gt;</em> in the <a href="https://mmonit.com/documentation/mmonit_manual.pdf"
                target="blank">manual (PDF)</a>
            </p>
            
            <h3>Test Connection</h3>
            <p>
                It is good practice to test the configuration before saving. Click the <code>Test Connection</code> button to have M/Monit test and verify
                that a connection can be established to the SMTP server and that the mail sender’s address (from the Message Template) will be accepted. No
                message is sent during this test.
            </p>
            <h3>Message Delivery</h3>
            <p>
                When sending an email alert message, M/Monit will use the first SMTP server in the list. If it is not available, it will continue with the next
                one, and so on, until the message is sent or all servers fail.
            </p>
        </div>
        <!-- /ko -->
        <!-- ko if: currentTab() === 'xmppTab' -->
        <div class="title">
            <h2>Jabber Servers Help</h2>
        </div>
        <div class="content paragraphify">
            <p>
                Specify Jabber servers M/Monit should use for alert notification.
            </p>
            <p>
                To add a new server, click the <strong>+</strong> button and fill in all fields. Remember to click the <code>Save</code> button to save the
                entry. To edit an existing server, expand its entry and modify the fields. The Save button is disabled until fields are filled. The
                <code>Update</code> button is also disabled unless there are changes to the entry. Click the <code>Delete</code> button to delete the entry.
            </p>
            <h3>SSL</h3>
            <p>
                If the port number is 5223 M/Monit will connect using <i>SSL/TLS</i> otherwise it will switch to a secure connection and use <i>STARTTLS</i> if required by the server.
                The default jabber port number is 5222 and if in doubt, use that number. Use the DNS hostname of the Jabber server, not an IP-address. M/Monit will perform SSL
                certificate verification using the hostname when connecting to the server to ensure it is connected to the correct server. See also <em>&lt;SSLClientConfig&gt;</em> in
                the <a href="https://mmonit.com/documentation/mmonit_manual.pdf" target="blank">manual (PDF)</a>
            </p>
            <h3>Credentials</h3>
            <p>
                Username (Jabber ID) and password are required to identify the user who will send the alert message.
            </p>
            <p>
                Note that the user you specify here <em>should be different</em> from the one you will use in your jabber client. Otherwise the jabber server
                will think that you are sending messages to yourself and won't deliver the alert message to your client. We recommend using a dedicated Jabber
                user for M/Monit.
            </p>
            <h3>Test Connection</h3>
            <p>
                It is good practice to test the configuration before saving. Click the <code>Test Connection</code> button to have M/Monit test and verify that
                a connection can be established to the Jabber server and that credentials will be accepted. No message is sent during this test.
            </p>
            <h3>Message Delivery</h3>
            <p>
                When sending a Jabber alert message, M/Monit will use the first Jabber server in the list. If it is not available, it will continue with the
                next one, and so on, until the message is sent or all servers fail.
            </p>
        </div>
        <!-- /ko -->
        <!-- ko if: currentTab() === 'serviceTab' -->
        <div class="title">
            <h2>Alert Service Help</h2>
        </div>
        <div class="content paragraphify">
            <p style="text-align:center; margin: 8px 10px 0;"> 
                <a href="#slackalert">Slack Alert</a> 
                | <a href="#discordalert">Discord Alert</a> 
                | <a href="#pagerdutyalert">PagerDuty Alert</a> 
            </p>
            
            <p>
                M/Monit enhances its alerting capabilities through customizable scripts. While pre-configured scripts are available for
                services like Slack and Discord, you can also create your own alert scripts to meet specific requirements.
            </p>
            
            <p>
                Alert scripts are executed in a controlled environment using <code>/bin/sh -c script</code>. The execution environment is
                intentionally minimal:
            </p>
            
            <ul>
                <li>The <code>PATH</code> is set to: <code>/bin:/usr/bin:/usr/local/bin:/opt/local/bin</code></li>
                <li>All other environment variables are cleared for security reasons</li>
            </ul>
            
            <p>
                If your script requires additional environment variables or a modified PATH:
            </p>
            
            <ul>
                <li>Set or modify environment variables within your script as needed</li>
                <li>Use full paths for any commands not in the default PATH</li>
                <li>Consider adding necessary directories to PATH at the beginning of your script</li>
            </ul>
            
            <p>
                When creating custom alert scripts, you can use shell commands directly or invoke other interpreters like Python. Just
                remember to use full paths for any commands not in the default PATH, or add necessary directories to the PATH within your
                script.
            </p>
            
            <p>
                A set of environment variables are made available to the script at execution time, describing the event that occurred:
            </p>
            <ol>
                <li>$MONIT_EVENT: A short string describing the event that occurred</li>
                <li>$MONIT_SERVICE: The name of the service generating the event</li>
                <li>$MONIT_DATE: The date and time the event occurred (local time with UTC offset)</li>
                <li>$MONIT_HOST: The name of the Monit Host the event originated from</li>
                <li>$MONIT_ACTION: The name of the action which was performed by Monit</li>
                <li>$MONIT_DESCRIPTION: A description of the event condition. I.e. why the event was sent</li>
            </ol>
            <p>
                The value you enter in the <em>URL/Endpoint</em> field can be referred to in the script as $ENDPOINT and the value entered in the
                <em>API Key/Token</em> field can be referred to as $APIKEY.
            </p>
            
            <h2>
                Slack Integration for M/Monit Alerts
                <a name="slackalert" id="slackalert"></a>
            </h2>
            
            <p>M/Monit comes pre-configured with a Slack integration script, allowing you to easily set up real-time alert notifications in your Slack channels. Follow these steps to configure the integration:</p>
            
            <h3>1. Create a Slack App</h3>
            <ol>
                <li>Go to <a href="https://api.slack.com/apps">https://api.slack.com/apps</a> and click "Create New App".</li>
                <li>Choose "From scratch" and name your app (e.g., "M:Monit Alerts").</li>
                <li>Select the Slack workspace for receiving alerts.</li>
                <li>In the sidebar, click on "OAuth & Permissions".</li>
                <li>Scroll to "Scopes" and find "Bot Token Scopes".</li>
                <li>Click "Add an OAuth Scope" and add <code>chat:write</code>.</li>
                <li>At the top of the page, click "Install to Workspace" (or "Reinstall to Workspace" if you've installed before).</li>
                <li>Authorize the app for your workspace.</li>
                <li>After installation, copy the "<em>Bot User OAuth Token</em>" from the top of the OAuth & Permissions page.</li>
            </ol>
                        
            <h3>2. Invite the Bot to a Channel</h3>
            <ol>
                <li>In Slack, go to the channel for alerts.</li>
                <li>Type <code>/invite @YourAppName</code> to add the bot.</li>
            </ol>
            
            <h3>3. Configure M/Monit Alert Service</h3>
            <ol>
                <li>In M/Monit, click the "Slack Alert" row.</li>
                <li>In "URL/Endpoint", enter the Slack channel name (e.g., "#alerts").</li>
                <li>In "API Key/Token", paste the Bot User OAuth Token.</li>
                <li>Click "Test Service" to verify the setup.</li>
                <li>Click "Update" to update the Alert Service.</li>
            </ol>
            
            <h3>4. Set Up Alert Rules</h3>
            <ol>
                <li>Go to the "Rules" tab in M/Monit.</li>
                <li>Create or edit a rule for Slack notifications.</li>
                <li>In the actions section, choose "Execute Service" and select your Slack Alert Service.</li>
            </ol>
            
            <h3>Notes</h3>
            <ul>
                <li>The Bot User OAuth Token is long-lived and should be kept secure.</li>
                <li>For multiple Slack workspaces, create separate apps and Alert Services for each.</li>
                <li>Ensure your M/Monit server can access https://slack.com.</li>
            </ul>
            
            <p>This integration enables M/Monit to send detailed, formatted alerts directly to your specified Slack channel for all monitored events.</p>
            
            <h2>
                Discord Integration for M/Monit Alerts
                <a name="discordalert" id="discordalert"></a>
            </h2>
            <p>M/Monit can send alerts to Discord using a webhook integration. This allows you to receive real-time notifications about your monitored systems directly in your Discord channels.</p>

            <h3>1. Create a Discord Server (if you don't have one)</h3>
            <ol>
                <li>Go to <a href="https://discord.com/">https://discord.com/</a> and sign up or log in.</li>
                <li>Click the '+' icon on the left sidebar.</li>
                <li>Choose "Create My Own" and then "For a club or community".</li>
                <li>Name your server (e.g., "M/Monit Alerts") and click "Create".</li>
            </ol>

            <h3>2. Create a Channel for Alerts</h3>
            <ol>
                <li>In your new server, click the '+' icon next to "Text Channels".</li>
                <li>Name the channel (e.g., "monit-alerts") and click "Create Channel".</li>
            </ol>

            <h3>3. Set Up a Webhook</h3>
            <ol>
                <li>Right-click on the channel you just created and select "Edit Channel".</li>
                <li>Go to the "Integrations" tab.</li>
                <li>Click "Create Webhook".</li>
                <li>Name your webhook (e.g., "M/Monit Alerts").</li>
                <li>Click "Copy Webhook URL" - you'll need this for the M/Monit configuration.</li>
            </ol>

            <h3>4. Configure M/Monit Alert Service</h3>
            <ol>
                <li>In M/Monit, click the "Discord Alert" row.</li>
                <li>In the "URL/Endpoint" field, paste the webhook URL you copied from Discord.</li>
                <li>Leave the "API Key" field blank as it's not needed for Discord webhooks.</li>
                <li>Click "Test Service" to verify the setup. You should see a test message appear in your Discord channel.</li>
                <li>Click "Update" to update the Alert Service.</li>
            </ol>

            <h3>5. Set Up Alert Rules</h3>
            <ol>
                <li>Go to the "Rules" tab in M/Monit.</li>
                <li>Create or edit a rule where you want to use Discord notifications.</li>
                <li>In the "THEN perform the following actions:" section, select "Execute Service" and choose your Discord Alert Service.</li>
            </ol>

            <h3>Notes</h3>
            <ul>
                <li>Ensure your M/Monit server has internet access to reach Discord's API (https://discordapp.com).</li>
                <li>The webhook URL is sensitive information. Don't share it publicly or commit it to version control systems.</li>
                <li>You can create multiple webhooks for different channels or servers if you want to separate different types of alerts.</li>
            </ul>

            <p>This integration enables M/Monit to send detailed, formatted alerts directly to your specified Discord channel whenever monitored events occur. The alerts will include information such as the date, host, service, action, event, and description of the alert condition.</p>
            
            <h2>
                PagerDuty Integration for M/Monit Alerts
                <a name="pagerdutyalert" id="pagerdutyalert"></a>
            </h2>
            <p>M/Monit can send alerts to PagerDuty using their Events API v2. This allows you to receive real-time notifications about your monitored systems and manage incidents directly in PagerDuty.</p>

            <h3>1. Create a PagerDuty Account (if you don't have one)</h3>
            <ol>
                <li>Go to <a href="https://www.pagerduty.com/">https://www.pagerduty.com/</a> and sign up for an account.</li>
                <li>You can start with a free trial or choose a plan that suits your needs.</li>
            </ol>

            <h3>2. Create a New Service in PagerDuty</h3>
            <ol>
                <li>In your PagerDuty account, go to "Services" and click "New Service".</li>
                <li>Give your service a name (e.g., "M/Monit Alerts").</li>
                <li>Under "Integration Type", choose "Use our API directly".</li>
                <li>Select your preferred Escalation Policy.</li>
                <li>Click "Add Service" to create the service.</li>
            </ol>

            <h3>3. Get the Integration Key</h3>
            <ol>
                <li>After creating the service, you'll be shown the "Integration Key".</li>
                <li>Copy this key - you'll need it for the M/Monit configuration.</li>
                <li>If you need to find it later, go to the "Integrations" tab of your service and look for "Events API v2".</li>
            </ol>

            <h3>4. Configure M/Monit Alert Service</h3>
            <ol>
                <li>In M/Monit, click the "PagerDuty Alert" row.</li>
                <li>In the "API Key" field, paste the Integration Key you copied from PagerDuty.</li>
                <li>Leave the "URL/Endpoint" field blank as it's not needed for PagerDuty integration.</li>
                <li>Click "Test Service" to verify the setup. You should see a test incident created in your PagerDuty service.</li>
                <li>Click "Update" to update the Alert Service.</li>
            </ol>

            <h3>5. Set Up Alert Rules</h3>
            <ol>
                <li>Go to the "Rules" tab in M/Monit.</li>
                <li>Create or edit a rule where you want to use PagerDuty notifications.</li>
                <li>In the "THEN perform the following actions:" section, select "Execute Service" and choose your PagerDuty Alert Service.</li>
            </ol>

            <h3>Notes</h3>
            <ul>
                <li>Ensure your M/Monit server has internet access to reach PagerDuty's API (https://events.pagerduty.com).</li>
                <li>The Integration Key is sensitive information. Don't share it publicly or commit it to version control systems.</li>
                <li>You can create multiple services in PagerDuty if you want to separate different types of alerts or use different escalation policies.</li>
                <li>PagerDuty offers features like scheduling, escalations, and integrations with other tools that you can configure to enhance your incident management process.</li>
            </ul>

            <p>
                This integration enables M/Monit to create incidents in PagerDuty whenever monitored events occur. The incidents will include
                detailed information such as the date, host, service, action, event, and description of the alert condition, allowing your
                team to quickly understand and respond to issues.
            </p>
        </div>
        <!-- /ko -->
    </div>
    <script type="text/html" id="testmessage-template">
        <div class="arrow"></div>
        <h3 class="popover-title">Message settings</h3>
        <div class="popover-content">
            <ul>
                <li class="repetition">
                    <label>
                        Send reminder if the error persists:
                        <div class="btn-group btn-reminder margin-left-1">
                            <button class="btn btn-block dropdown-toggle" data-toggle="dropdown">
                                <span class="caret"></span>
                                <div data-bind="text: $parent.repetition2label($data)"></div>
                            </button>
                            <ul class="dropdown-menu" data-bind="foreach: repetition">
                                <li data-bind="click: $parent.selectRepetition, css: {checked: selected}">
                                    <span data-bind="html: name"></span>
                                </li>
                            </ul>
                        </div>
                    </label>
                </li>
                <li class="testoutput">
                    <label>
                        Test output:
                        <textarea name="testoutputarea" rows="4" cols="60" disabled="disabled" placeholder="Press Test to send a test message..." class="input field"></textarea>
                    </label>
                </li>
                <li class="separator">
                    <button class="btn margin-right-1" data-bind="event: {vclick: $parent.togglePanel}">Close</button>
                    <button class="btn btn-primary" data-bind="click: testMessage">Test</button>
                </li>
            </ul>
        </div>
    </script>
    <script src="../../lib/f/yui/2/utilities/utilities.js?version=430"></script>
    <script src="../../lib/f/jquery/jquery.js?version=430"></script>
    <script src="../../lib/f/jquery/jquery.mobile.vmouse.js?version=430"></script>
    <script src="../../lib/js/webapp.js?version=430"></script>
    <script src="../../lib/f/jquery/jquery.getUrlParam.js?version=430"></script>
    <script src="../../lib/f/twbootstrap/js/bootstrap.js?version=430"></script>
    <script src="../../lib/f/knockout/knockout.js?version=430"></script>
    <script src="../../lib/f/knockout/knockout.validation.js?version=430"></script>
    <script src="../../lib/js/error.js?version=430"></script>
    <script src="../../lib/js/math.js?version=430"></script>
    <script src="../../lib/js/ui.js?version=430"></script>
    <script src="../../lib/js/menu.js?version=430"></script>
    <script src="../../lib/js/tableview.js?version=430"></script>
    <script src="../../lib/js/help.js?version=430"></script>
    <script src="../../lib/js/csrf.js?version=430"></script>
    <script src="../../assets/admin/admin_alerts_rules.js?version=430"></script>
    <script src="../../assets/admin/admin_alerts_message.js?version=430"></script>
    <script src="../../assets/admin/admin_alerts_mail.js?version=430"></script>
    <script src="../../assets/admin/admin_alerts_jabber.js?version=430"></script>
    <script src="../../assets/admin/admin_alerts_service.js?version=430"></script>
    <script src="../../assets/admin/admin_alerts.js?version=430"></script>
</body>
</html>
