diff --git a/aquacontrol32.ino b/aquacontrol32.ino
index 7328349..5d747e0 100644
--- a/aquacontrol32.ino
+++ b/aquacontrol32.ino
@@ -141,9 +141,10 @@ struct channelData_t
struct sensorData_t /* struct to keep track of Dallas DS18B20 sensors */
{
- byte addr[8];
- float tempCelcius;
- char name[15];
+ byte addr[8];
+ float tempCelcius;
+ char name[15];
+ bool error = false;
};
/* const */
@@ -191,10 +192,9 @@ uint8_t tftOrientation = TFT_ORIENTATION_NORMAL;
uint8_t oledContrast; /* 0 .. 15 */
uint8_t oledOrientation = OLED_ORIENTATION_NORMAL;
+bool LOG_SENSOR_ERRORS = false;
/*****************************************************************************************
-
end of global variables
-
*****************************************************************************************/
void tftTask( void * pvParameters );
void oledTask( void * pvParameters );
diff --git a/compile.sh b/compile.sh
index ded162a..16265d6 100755
--- a/compile.sh
+++ b/compile.sh
@@ -1,12 +1,11 @@
-echo Compiling aquacontrol32 version: $(git describe --tags --always)
-echo Branch: $(git branch | grep \* | cut -d ' ' -f2)
-echo
+currentVersion=""
if [ $(git branch | grep \* | cut -d ' ' -f2) == "master" ]
then
- echo "const char * sketchVersion = \"$(git describe --tags --always)\";" > gitTagVersion.h
+ currentVersion=$(git describe --tags --always)
else
- echo "const char * sketchVersion = \"$(git describe --tags --always):$(git branch | grep \* | cut -d ' ' -f2)\";" > gitTagVersion.h
+ currentVersion=$(git branch | grep \* | cut -d ' ' -f2):$(git rev-parse --short HEAD)
fi
-echo $(git describe --tags --always):$(git branch | grep \* | cut -d ' ' -f2)
+echo "const char * sketchVersion = \"$currentVersion\";" > gitTagVersion.h
+echo Compiling aquacontrol32 version: $currentVersion
~/arduino-1.8.9/arduino --board espressif:esp32:mhetesp32minikit --verify test.ino --pref custom_DebugLevel=esp32_none --port /dev/ttyUSB0 --pref upload.speed=921600 --pref build.path=temp --preserve-temp-files --pref build.partition=default_ffat
rm gitTagVersion.h
diff --git a/flash.sh b/flash.sh
index 1f872fa..8375738 100755
--- a/flash.sh
+++ b/flash.sh
@@ -1,12 +1,11 @@
-echo Compiling and flashing aquacontrol32 version: $(git describe --tags --always)
-echo Branch: $(git branch | grep \* | cut -d ' ' -f2)
-echo
+currentVersion=""
if [ $(git branch | grep \* | cut -d ' ' -f2) == "master" ]
then
- echo "const char * sketchVersion = \"$(git describe --tags --always)\";" > gitTagVersion.h
+ currentVersion=$(git describe --tags --always)
else
- echo "const char * sketchVersion = \"$(git describe --tags --always):$(git branch | grep \* | cut -d ' ' -f2)\";" > gitTagVersion.h
+ currentVersion=$(git branch | grep \* | cut -d ' ' -f2):$(git rev-parse --short HEAD)
fi
-echo $(git describe --tags --always):$(git branch | grep \* | cut -d ' ' -f2)
+echo "const char * sketchVersion = \"$currentVersion\";" > gitTagVersion.h
+echo Compiling and flashing aquacontrol32 version: $currentVersion
~/arduino-1.8.9/arduino --board espressif:esp32:mhetesp32minikit --upload test.ino --pref custom_DebugLevel=esp32_none --port /dev/ttyUSB0 --pref upload.speed=921600 --preserve-temp-files --pref build.path=temp --pref build.partition=default_ffat --pref build.flash_freq=80m
rm gitTagVersion.h
diff --git a/loggertask.ino b/loggertask.ino
index 5a06c7c..26dd09c 100644
--- a/loggertask.ino
+++ b/loggertask.ino
@@ -157,3 +157,19 @@ const char * resetString( const RESET_REASON reason )
};
return resetStr[reason];
}
+
+void writeSensorErrorLog( const uint8_t &whichSensor, const char * errorStr, const byte data[9] )
+{
+ time_t rawtime;
+ struct tm * timeinfo;
+ time ( &rawtime );
+ timeinfo = localtime ( &rawtime );
+ char timeBuff[20];
+ strftime ( timeBuff, sizeof(timeBuff), "%x %X", timeinfo );
+ char buffer[100];
+ snprintf( buffer, sizeof( buffer ), "%s - sensor: '%s' %s %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", timeBuff, sensor[whichSensor].name, errorStr,
+ data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8] );
+
+ writelnFile( FFat, "/sensor_error.txt", buffer );
+ ESP_LOGE( TAG, "%s", buffer );
+}
diff --git a/oledtask.ino b/oledtask.ino
index 4a666dc..d2ea951 100644
--- a/oledtask.ino
+++ b/oledtask.ino
@@ -79,7 +79,10 @@ void IRAM_ATTR oledTask( void * pvParameters )
uint8_t charCount = 0;
for ( uint8_t sensorNumber = 0; sensorNumber < numberOfFoundSensors; sensorNumber++ )
{
- charCount += snprintf( content + charCount, sizeof( content ) - charCount, "%.1f°C " , sensor[sensorNumber].tempCelcius );
+ if ( !sensor[sensorNumber].error )
+ charCount += snprintf( content + charCount, sizeof( content ) - charCount, "%.1f°C " , sensor[sensorNumber].tempCelcius );
+ else
+ charCount += snprintf( content + charCount, sizeof( content ) - charCount, "ERROR " , sensor[sensorNumber].tempCelcius );
}
}
else
@@ -93,4 +96,3 @@ void IRAM_ATTR oledTask( void * pvParameters )
vTaskDelay( oledTaskdelayTime );
}
}
-
diff --git a/temptask.ino b/temptask.ino
index e10db41..91d1119 100644
--- a/temptask.ino
+++ b/temptask.ino
@@ -78,14 +78,16 @@ void IRAM_ATTR tempTask( void * pvParameters )
break;
default:
ESP_LOGE( TAG, "OneWire device is not a DS18x20 family device.");
- return;
}
int16_t raw;
- if ( OneWire::crc8(data, 8) != data[8])
+ if ( data[8] == 0xFF || OneWire::crc8(data, 8) != data[8])
{
+
// CRC of temperature reading indicates an error, so we print a error message and discard this reading
- ESP_LOGE( TAG, "%u - CRC error from device %u", millis() / 1000.0, thisSensor );
+ sensor[thisSensor].error = true;
+ if ( LOG_SENSOR_ERRORS ) writeSensorErrorLog( thisSensor, "BAD_CRC", data );
+ ESP_LOGE( TAG, "Sensor %i error. data: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", thisSensor, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8] );
}
else
{
@@ -107,8 +109,10 @@ void IRAM_ATTR tempTask( void * pvParameters )
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
+
}
sensor[thisSensor].tempCelcius = raw / 16.0;
+ sensor[thisSensor].error = false;
}
}
}
diff --git a/tfttask.ino b/tfttask.ino
index 8d14ffe..5ec804e 100644
--- a/tfttask.ino
+++ b/tfttask.ino
@@ -40,7 +40,7 @@ class tftButton
uint16_t bordercolor;
uint16_t labelcolor;
tftFontsize_t fontsize;
- char text[20];
+ char text[25];
char label[15];
};
@@ -491,7 +491,7 @@ static inline __attribute__((always_inline)) void showIPAddress( )
tft.print( buff );
}
-static inline __attribute__((always_inline)) void drawSensors( const bool &forceDraw )
+void drawSensors( const bool &forceDraw )
{
if ( numberOfFoundSensors )
{
@@ -499,18 +499,23 @@ static inline __attribute__((always_inline)) void drawSensors( const bool &force
for ( uint8_t thisSensor = 0; thisSensor < numberOfFoundSensors; thisSensor++ )
{
- if ( sensor[ thisSensor ].tempCelcius != currentTemp[ thisSensor ] || forceDraw ) /* only update temp if changed */
+ if ( sensor[ thisSensor ].tempCelcius != currentTemp[ thisSensor ] || sensor[thisSensor].error || forceDraw ) /* only update temp if changed */
{
- if ( sensor[ thisSensor ].tempCelcius < -55 || sensor[ thisSensor ].tempCelcius > 125 ) /* temp is outside DS18B20 specs */
+ if ( sensor[ thisSensor ].error )
{
- tempArea[thisSensor].labelcolor = ILI9341_RED; /* show temp as in error */
- ESP_LOGE( TAG, "Out of range temperature." );
- sensor[ thisSensor ].tempCelcius = currentTemp[ thisSensor ]; /* show previous temp */
+ tempArea[thisSensor].labelcolor = ILI9341_YELLOW; /* show temp as in error */
+ snprintf( tempArea[thisSensor].text, sizeof( tempArea[thisSensor].text ), " ERROR " );
+ button.updateText( tempArea[thisSensor] );
+ currentTemp[thisSensor] = -273;
+ return;
+ }
+ else
+ {
+ snprintf( tempArea[thisSensor].text, sizeof( tempArea[thisSensor].text ), " %.1f%c ", sensor[thisSensor].tempCelcius, char(247) );
+ button.updateText( tempArea[thisSensor] );
}
- snprintf( tempArea[thisSensor].text, sizeof( tempArea[thisSensor].text ), " %.1f%c ", sensor[thisSensor].tempCelcius, char(247) );
- button.updateText( tempArea[thisSensor] );
- currentTemp[ thisSensor ] = sensor[ thisSensor ].tempCelcius;
}
+ currentTemp[ thisSensor ] = sensor[ thisSensor ].tempCelcius;
}
}
}
diff --git a/webif/index.htm b/webif/index.htm
index 605f484..82a2857 100644
--- a/webif/index.htm
+++ b/webif/index.htm
@@ -133,7 +133,11 @@
while ( channelValue[sensorNumber + 7].length > 0 )
{
var temp = channelValue[sensorNumber + 7].split(",");
- str += String( '
' + temp[0].toLowerCase() + "
" + temp[1].substring( 0, temp[1].indexOf( "." ) + 2 ) + "°
" );
+ console.log(temp);
+ if ( temp[1] != "ERROR" )
+ str += String( '' + temp[0].toLowerCase() + "
" + temp[1].substring( 0, temp[1].indexOf( "." ) + 2 ) + "°
" );
+ else
+ str += String( '' + temp[0].toLowerCase() + "
ERROR
" );
sensorNumber++;
}
if (str.length)
diff --git a/webif/index_htm.h b/webif/index_htm.h
index a6742ad..6ed06ac 100644
--- a/webif/index_htm.h
+++ b/webif/index_htm.h
@@ -243,283 +243,296 @@ const uint8_t index_htm[] = {
0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x5b, 0x73, 0x65,
0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x2b,
0x20, 0x37, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x2c,
- 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74,
- 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28,
- 0x20, 0x27, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
- 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x22, 0x3e, 0x27, 0x20, 0x2b,
- 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x6f, 0x4c,
- 0x6f, 0x77, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x28, 0x29, 0x20, 0x2b,
- 0x20, 0x22, 0x3c, 0x62, 0x72, 0x3e, 0x22, 0x20, 0x2b, 0x20, 0x74, 0x65,
- 0x6d, 0x70, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72,
- 0x69, 0x6e, 0x67, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x74, 0x65, 0x6d,
- 0x70, 0x5b, 0x31, 0x5d, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f, 0x66,
- 0x28, 0x20, 0x22, 0x2e, 0x22, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x20,
- 0x29, 0x20, 0x2b, 0x20, 0x22, 0xc2, 0xb0, 0x3c, 0x2f, 0x70, 0x3e, 0x22,
- 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65,
- 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2b, 0x2b,
- 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20,
- 0x69, 0x66, 0x20, 0x28, 0x73, 0x74, 0x72, 0x2e, 0x6c, 0x65, 0x6e, 0x67,
- 0x74, 0x68, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20,
+ 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28,
+ 0x74, 0x65, 0x6d, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5b, 0x31,
+ 0x5d, 0x20, 0x21, 0x3d, 0x20, 0x22, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x22,
+ 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
+ 0x74, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
+ 0x28, 0x20, 0x27, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x22, 0x3e, 0x27, 0x20,
+ 0x2b, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x2e, 0x74, 0x6f,
+ 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x28, 0x29, 0x20,
+ 0x2b, 0x20, 0x22, 0x3c, 0x62, 0x72, 0x3e, 0x22, 0x20, 0x2b, 0x20, 0x74,
+ 0x65, 0x6d, 0x70, 0x5b, 0x31, 0x5d, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74,
+ 0x72, 0x69, 0x6e, 0x67, 0x28, 0x20, 0x30, 0x2c, 0x20, 0x20, 0x74, 0x65,
+ 0x6d, 0x70, 0x5b, 0x31, 0x5d, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4f,
+ 0x66, 0x28, 0x20, 0x22, 0x2e, 0x22, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x32,
+ 0x20, 0x29, 0x20, 0x2b, 0x20, 0x22, 0xc2, 0xb0, 0x3c, 0x2f, 0x70, 0x3e,
+ 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
+ 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x73, 0x74, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x53, 0x74, 0x72, 0x69, 0x6e,
+ 0x67, 0x28, 0x20, 0x27, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x22, 0x3e, 0x27,
+ 0x20, 0x2b, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x2e, 0x74,
+ 0x6f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x28, 0x29,
+ 0x20, 0x2b, 0x20, 0x22, 0x3c, 0x62, 0x72, 0x3e, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x3c, 0x2f, 0x70, 0x3e, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x75,
+ 0x6d, 0x62, 0x65, 0x72, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x74,
+ 0x72, 0x2e, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x29, 0x0a, 0x20, 0x20,
+ 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28,
+ 0x20, 0x22, 0x23, 0x74, 0x65, 0x6d, 0x70, 0x42, 0x6f, 0x78, 0x22, 0x20,
+ 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x22, 0x23, 0x74, 0x65, 0x6d,
- 0x70, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77,
- 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28,
- 0x20, 0x22, 0x23, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73,
- 0x22, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x73, 0x74,
- 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20,
- 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73,
- 0x73, 0x3d, 0x22, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x42,
- 0x6f, 0x78, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62,
- 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f,
- 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x65, 0x69, 0x67, 0x65, 0x3b, 0x22, 0x3e,
- 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79,
- 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72,
- 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x48, 0x4f, 0x4d, 0x45, 0x3c,
- 0x2f, 0x61, 0x3e, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
- 0x22, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22,
- 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x73, 0x22, 0x3e, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c,
- 0x53, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73,
- 0x73, 0x3d, 0x22, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e,
- 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x65, 0x74,
- 0x75, 0x70, 0x22, 0x3e, 0x53, 0x45, 0x54, 0x55, 0x50, 0x3c, 0x2f, 0x61,
- 0x3e, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
- 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68,
- 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x22,
- 0x3e, 0x45, 0x44, 0x49, 0x54, 0x4f, 0x52, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
- 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79,
- 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72,
- 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x3e, 0x4c, 0x4f,
- 0x47, 0x53, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x63, 0x6c,
+ 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x20, 0x29, 0x2e, 0x68, 0x74,
+ 0x6d, 0x6c, 0x28, 0x20, 0x73, 0x74, 0x72, 0x20, 0x29, 0x3b, 0x0a, 0x20,
+ 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d,
+ 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c,
+ 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x68, 0x61,
+ 0x64, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
+ 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x65,
+ 0x69, 0x67, 0x65, 0x3b, 0x22, 0x3e, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69,
+ 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22,
+ 0x3e, 0x48, 0x4f, 0x4d, 0x45, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x61, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79, 0x73, 0x74, 0x65,
+ 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x22, 0x3e, 0x43,
+ 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x53, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x73, 0x65, 0x74, 0x75, 0x70, 0x22, 0x3e, 0x53, 0x45,
+ 0x54, 0x55, 0x50, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x61, 0x20, 0x63, 0x6c,
0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c,
- 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x66,
- 0x69, 0x6c, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x22, 0x3e,
- 0x46, 0x49, 0x4c, 0x45, 0x20, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x52,
- 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x3c, 0x64, 0x69,
- 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x42,
- 0x6f, 0x78, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
- 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x6f, 0x78, 0x22, 0x3e,
- 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x33, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x68,
- 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x4c, 0x6f, 0x61,
- 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x2e, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e,
- 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76,
- 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42,
- 0x6f, 0x78, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
- 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x6f, 0x78, 0x22, 0x20,
- 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x61, 0x63, 0x6b, 0x67,
- 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
- 0x62, 0x65, 0x69, 0x67, 0x65, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x20, 0x69,
- 0x64, 0x3d, 0x22, 0x73, 0x79, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20,
- 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53,
- 0x74, 0x72, 0x22, 0x3e, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x2e,
- 0x2e, 0x2e, 0x3c, 0x62, 0x72, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b,
- 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
- 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x22, 0x20, 0x69,
- 0x64, 0x3d, 0x22, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x22, 0x3e, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x2e,
- 0x2e, 0x2e, 0x3c, 0x62, 0x72, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b,
- 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c,
- 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x62, 0x61, 0x72, 0x73,
- 0x42, 0x6f, 0x78, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
- 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x6f, 0x78, 0x22,
- 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61,
- 0x73, 0x73, 0x3d, 0x22, 0x62, 0x61, 0x72, 0x22, 0x20, 0x73, 0x74, 0x79,
- 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x30, 0x25, 0x3b,
- 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x30, 0x25, 0x3b, 0x22, 0x3e,
- 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69,
- 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x61, 0x72,
- 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66,
- 0x74, 0x3a, 0x32, 0x30, 0x25, 0x3b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x65,
+ 0x64, 0x69, 0x74, 0x6f, 0x72, 0x22, 0x3e, 0x45, 0x44, 0x49, 0x54, 0x4f,
+ 0x52, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69,
+ 0x6e, 0x6b, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x6c, 0x6f,
+ 0x67, 0x73, 0x22, 0x3e, 0x4c, 0x4f, 0x47, 0x53, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x20, 0x3c, 0x61, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x6d, 0x61, 0x6e,
+ 0x61, 0x67, 0x65, 0x72, 0x22, 0x3e, 0x46, 0x49, 0x4c, 0x45, 0x20, 0x4d,
+ 0x41, 0x4e, 0x41, 0x47, 0x45, 0x52, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x70, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22,
+ 0x74, 0x69, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65,
+ 0x64, 0x42, 0x6f, 0x78, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x68, 0x33,
+ 0x20, 0x69, 0x64, 0x3d, 0x22, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d,
+ 0x65, 0x22, 0x3e, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x2e,
+ 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76,
+ 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65,
+ 0x64, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d,
+ 0x22, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x65, 0x69, 0x67, 0x65, 0x3b,
+ 0x22, 0x3e, 0x3c, 0x70, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x79, 0x73,
+ 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x22, 0x3e, 0x4c, 0x6f,
+ 0x61, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x2e, 0x2e, 0x3c, 0x62, 0x72, 0x3e,
+ 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x70,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70,
+ 0x53, 0x74, 0x72, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x6c, 0x69, 0x67,
+ 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3e, 0x4c, 0x6f,
+ 0x61, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x2e, 0x2e, 0x3c, 0x62, 0x72, 0x3e,
+ 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64,
+ 0x3d, 0x22, 0x62, 0x61, 0x72, 0x73, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77,
+ 0x65, 0x64, 0x42, 0x6f, 0x78, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64,
+ 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x61,
+ 0x72, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65,
+ 0x66, 0x74, 0x3a, 0x30, 0x25, 0x3b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x3a, 0x30, 0x25, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x3d, 0x22, 0x62, 0x61, 0x72, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c,
- 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x34, 0x30, 0x25, 0x3b,
+ 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x32, 0x30, 0x25, 0x3b,
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x30, 0x25, 0x3b, 0x22, 0x3e,
0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69,
0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x61, 0x72,
0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66,
- 0x74, 0x3a, 0x36, 0x30, 0x25, 0x3b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x74, 0x3a, 0x34, 0x30, 0x25, 0x3b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
0x3a, 0x30, 0x25, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x3d, 0x22, 0x62, 0x61, 0x72, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c,
- 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x38, 0x30, 0x25, 0x3b,
+ 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x36, 0x30, 0x25, 0x3b,
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x30, 0x25, 0x3b, 0x22, 0x3e,
0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69,
- 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70, 0x63, 0x74,
- 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66,
- 0x74, 0x3a, 0x30, 0x3b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x30,
- 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x30, 0x25, 0x3c, 0x2f, 0x70, 0x3e,
- 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69,
- 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70, 0x63, 0x74,
+ 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x61, 0x72,
0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66,
- 0x74, 0x3a, 0x32, 0x30, 0x25, 0x3b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d,
- 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x30, 0x25, 0x3c, 0x2f,
- 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c,
- 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70,
- 0x63, 0x74, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c,
- 0x65, 0x66, 0x74, 0x3a, 0x34, 0x30, 0x25, 0x3b, 0x62, 0x6f, 0x74, 0x74,
- 0x6f, 0x6d, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x30, 0x25,
- 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20,
- 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
- 0x22, 0x70, 0x63, 0x74, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d,
- 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x36, 0x30, 0x25, 0x3b, 0x62, 0x6f,
+ 0x74, 0x3a, 0x38, 0x30, 0x25, 0x3b, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3a, 0x30, 0x25, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
+ 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x70, 0x63, 0x74, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c,
+ 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x30, 0x3b, 0x62, 0x6f,
0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e,
0x30, 0x25, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e,
0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
0x73, 0x3d, 0x22, 0x70, 0x63, 0x74, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c,
- 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x38, 0x30, 0x25, 0x3b,
+ 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x32, 0x30, 0x25, 0x3b,
0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c,
0x70, 0x3e, 0x30, 0x25, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
- 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x73,
- 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x30,
- 0x3b, 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e,
- 0x31, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a,
- 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
- 0x3d, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c,
- 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x32, 0x30, 0x25, 0x3b,
- 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x32,
- 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20,
- 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
- 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65,
- 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x34, 0x30, 0x25, 0x3b, 0x74,
- 0x6f, 0x70, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x33, 0x3c,
- 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20,
- 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
- 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d,
- 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x36, 0x30, 0x25, 0x3b, 0x74, 0x6f,
- 0x70, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x34, 0x3c, 0x2f,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70, 0x63, 0x74, 0x22, 0x20, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x34, 0x30,
+ 0x25, 0x3b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x30, 0x3b, 0x22,
+ 0x3e, 0x3c, 0x70, 0x3e, 0x30, 0x25, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70, 0x63, 0x74, 0x22, 0x20,
+ 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a,
+ 0x36, 0x30, 0x25, 0x3b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x30,
+ 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x30, 0x25, 0x3c, 0x2f, 0x70, 0x3e,
+ 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69,
+ 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x70, 0x63, 0x74,
+ 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66,
+ 0x74, 0x3a, 0x38, 0x30, 0x25, 0x3b, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d,
+ 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x30, 0x25, 0x3c, 0x2f,
0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c,
0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e,
0x61, 0x6d, 0x65, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
- 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x38, 0x30, 0x25, 0x3b, 0x74, 0x6f, 0x70,
- 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x35, 0x3c, 0x2f, 0x70,
- 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69,
- 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22,
- 0x74, 0x65, 0x6d, 0x70, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x63, 0x6c, 0x61,
- 0x73, 0x73, 0x3d, 0x22, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64,
- 0x42, 0x6f, 0x78, 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22,
- 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63,
- 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x65, 0x69, 0x67, 0x65, 0x3b, 0x22,
- 0x3e, 0x3c, 0x70, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70,
- 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
- 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x22, 0x3e, 0x3c,
- 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x24, 0x28, 0x20, 0x64, 0x6f,
- 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x29, 0x2e, 0x72, 0x65, 0x61,
- 0x64, 0x79, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x67, 0x65,
- 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
- 0x6d, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65,
- 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x63, 0x6f, 0x6c, 0x6f,
- 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c,
- 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x0a, 0x20, 0x20, 0x24, 0x2e,
- 0x67, 0x65, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67,
- 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3f, 0x68, 0x6f, 0x73,
- 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20,
- 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b,
- 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x22, 0x23,
- 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x29, 0x2e,
- 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29,
- 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75,
- 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x3d,
- 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x74, 0x6f, 0x55, 0x70, 0x70, 0x65,
- 0x72, 0x43, 0x61, 0x73, 0x65, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
- 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69,
- 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29,
- 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73,
- 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x22, 0x66, 0x61, 0x69,
- 0x6c, 0x65, 0x64, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20,
- 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x29, 0x3b, 0x0a,
- 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e,
- 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x67, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43,
- 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
- 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f,
- 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x66, 0x75,
- 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x43, 0x68,
+ 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x30, 0x3b, 0x74, 0x6f, 0x70, 0x3a, 0x30,
+ 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x31, 0x3c, 0x2f, 0x70, 0x3e, 0x3c,
+ 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e, 0x61, 0x6d, 0x65,
+ 0x22, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66,
+ 0x74, 0x3a, 0x32, 0x30, 0x25, 0x3b, 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x3b,
+ 0x22, 0x3e, 0x3c, 0x70, 0x3e, 0x32, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f,
+ 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+ 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74,
+ 0x3a, 0x34, 0x30, 0x25, 0x3b, 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x3b, 0x22,
+ 0x3e, 0x3c, 0x70, 0x3e, 0x33, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20,
+ 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a,
+ 0x36, 0x30, 0x25, 0x3b, 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x3b, 0x22, 0x3e,
+ 0x3c, 0x70, 0x3e, 0x34, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69,
+ 0x76, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x20, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x6c, 0x65, 0x66, 0x74, 0x3a, 0x38,
+ 0x30, 0x25, 0x3b, 0x74, 0x6f, 0x70, 0x3a, 0x30, 0x3b, 0x22, 0x3e, 0x3c,
+ 0x70, 0x3e, 0x35, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76,
+ 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69,
+ 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x42, 0x6f,
+ 0x78, 0x22, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x68,
+ 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x42, 0x6f, 0x78, 0x22, 0x20, 0x73,
+ 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62,
+ 0x65, 0x69, 0x67, 0x65, 0x3b, 0x22, 0x3e, 0x3c, 0x70, 0x20, 0x69, 0x64,
+ 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x74, 0x65, 0x6d, 0x70,
+ 0x53, 0x74, 0x72, 0x22, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x3c, 0x2f, 0x64,
+ 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e,
+ 0x0a, 0x24, 0x28, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+ 0x20, 0x29, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x28, 0x20, 0x66, 0x75,
+ 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20,
+ 0x20, 0x2f, 0x2f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x74, 0x68,
+ 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64,
+ 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65,
+ 0x73, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x67, 0x65, 0x74, 0x28, 0x20, 0x22,
+ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x3f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
+ 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65,
+ 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64,
+ 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x24, 0x28, 0x20, 0x22, 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61,
+ 0x6d, 0x65, 0x22, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20,
+ 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e,
+ 0x74, 0x6f, 0x55, 0x70, 0x70, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x28,
+ 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20,
+ 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f,
+ 0x67, 0x28, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x67, 0x65,
+ 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61,
+ 0x6d, 0x65, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29,
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73,
+ 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b,
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x43, 0x68,
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x28,
- 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x67, 0x65, 0x74, 0x28, 0x20,
- 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x74, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x3f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x63,
- 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x3d, 0x22, 0x20, 0x29, 0x0a, 0x20, 0x20,
- 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29,
- 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x64,
- 0x61, 0x74, 0x61, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x5c,
- 0x6e, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e,
- 0x66, 0x6f, 0x72, 0x45, 0x61, 0x63, 0x68, 0x28, 0x20, 0x66, 0x75, 0x6e,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2c,
- 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x62, 0x61,
- 0x72, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78,
- 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x20, 0x7b, 0x20, 0x27, 0x62, 0x61,
- 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c,
- 0x6f, 0x72, 0x27, 0x3a, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x27,
- 0x62, 0x6f, 0x78, 0x2d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x27, 0x3a,
- 0x20, 0x22, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70, 0x78, 0x20, 0x34, 0x33,
- 0x70, 0x78, 0x20, 0x30, 0x70, 0x78, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x69,
- 0x74, 0x65, 0x6d, 0x20, 0x7d, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29,
- 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66,
- 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
- 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64,
- 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x22, 0x29,
- 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20,
- 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x66, 0x75, 0x6e,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20,
- 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x75, 0x6e,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x43, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x28, 0x29, 0x7b,
- 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x67, 0x65, 0x74, 0x28, 0x20, 0x22, 0x2f,
- 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x3f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x3d, 0x22, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e,
- 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x3d, 0x20,
- 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22,
- 0x5c, 0x6e, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73,
- 0x2e, 0x66, 0x6f, 0x72, 0x45, 0x61, 0x63, 0x68, 0x28, 0x20, 0x66, 0x75,
- 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d,
- 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x29, 0x7b, 0x0a, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x6e,
- 0x61, 0x6d, 0x65, 0x20, 0x70, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x69,
- 0x6e, 0x64, 0x65, 0x78, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20,
- 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x74, 0x72, 0x69, 0x6d, 0x28, 0x29, 0x20,
+ 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d,
+ 0x29, 0x3b, 0x0a, 0x0a, 0x2f, 0x2f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x73, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x67, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x24,
+ 0x2e, 0x67, 0x65, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+ 0x67, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3f, 0x63, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x3d,
+ 0x22, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e,
+ 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20,
+ 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x70,
+ 0x6c, 0x69, 0x74, 0x28, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x3b, 0x0a, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x66, 0x6f, 0x72, 0x45, 0x61, 0x63,
+ 0x68, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
+ 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x24, 0x28, 0x27, 0x2e, 0x62, 0x61, 0x72, 0x27, 0x29, 0x2e, 0x65, 0x71,
+ 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28,
+ 0x20, 0x7b, 0x20, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x27, 0x3a, 0x20, 0x69,
+ 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x27, 0x62, 0x6f, 0x78, 0x2d, 0x73, 0x68,
+ 0x61, 0x64, 0x6f, 0x77, 0x27, 0x3a, 0x20, 0x22, 0x30, 0x70, 0x78, 0x20,
+ 0x30, 0x70, 0x78, 0x20, 0x34, 0x33, 0x70, 0x78, 0x20, 0x30, 0x70, 0x78,
+ 0x20, 0x22, 0x20, 0x2b, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x7d, 0x20,
0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a,
0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e,
0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63,
0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x22,
0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69,
- 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79,
- 0x73, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29,
- 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, 0x64, 0x61,
- 0x74, 0x65, 0x42, 0x61, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x28, 0x29,
- 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x70, 0x65,
- 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x73, 0x65,
- 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x75,
- 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x72, 0x67, 0x72, 0x61, 0x70,
- 0x68, 0x2c, 0x20, 0x31, 0x30, 0x30, 0x30, 0x20, 0x29, 0x3b, 0x20, 0x20,
- 0x2f, 0x2f, 0x64, 0x6f, 0x6e, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20,
- 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x75, 0x66,
- 0x66, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
- 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x2f,
- 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
- 0x3e, 0x0a
+ 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x73, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61,
+ 0x79, 0x73, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
+ 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74,
+ 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+ 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a,
+ 0x7d, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x67, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
+ 0x6d, 0x65, 0x73, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x67,
+ 0x65, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65,
+ 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3f, 0x63, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x3d, 0x22, 0x20, 0x29,
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66,
+ 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74,
+ 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
+ 0x61, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
+ 0x6d, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73,
+ 0x70, 0x6c, 0x69, 0x74, 0x28, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x3b, 0x0a,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x66, 0x6f, 0x72, 0x45, 0x61,
+ 0x63, 0x68, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x24, 0x28, 0x27, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x70, 0x27,
+ 0x29, 0x2e, 0x65, 0x71, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x2e, 0x74,
+ 0x72, 0x69, 0x6d, 0x28, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29,
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66,
+ 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65,
+ 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64,
+ 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x29, 0x3b,
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x66, 0x75, 0x6e, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x72, 0x67,
+ 0x72, 0x61, 0x70, 0x68, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65,
+ 0x72, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72,
+ 0x76, 0x61, 0x6c, 0x28, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42,
+ 0x61, 0x72, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2c, 0x20, 0x31, 0x30, 0x30,
+ 0x30, 0x20, 0x29, 0x3b, 0x20, 0x20, 0x2f, 0x2f, 0x64, 0x6f, 0x6e, 0x65,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e,
+ 0x67, 0x20, 0x73, 0x74, 0x75, 0x66, 0x66, 0x0a, 0x20, 0x20, 0x20, 0x20,
+ 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x3e, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0a,
+ 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0a
};
-const unsigned int index_htm_len = 6254;
+const unsigned int index_htm_len = 6416;
diff --git a/webif/setup.htm b/webif/setup.htm
index 422d2f7..ecd9c99 100644
--- a/webif/setup.htm
+++ b/webif/setup.htm
@@ -156,7 +156,7 @@ DEVICE SETUP
ADMIN SETUP
@@ -170,11 +170,6 @@
DEVICE STATUS