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

CHANGE ADMIN PASSWORD

-

DISCONNECT AND RESET WIFI

+

LOG SENSOR ERRORS

@@ -170,11 +170,6 @@

DEVICE STATUS

diff --git a/webif/setup_htm.h b/webif/setup_htm.h index d901666..4510b8f 100644 --- a/webif/setup_htm.h +++ b/webif/setup_htm.h @@ -434,157 +434,174 @@ const uint8_t setup_htm[] = { 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x44, 0x49, 0x53, 0x43, 0x4f, - 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x20, 0x41, 0x4e, 0x44, 0x20, 0x52, 0x45, - 0x53, 0x45, 0x54, 0x20, 0x57, 0x49, 0x46, 0x49, 0x3c, 0x2f, 0x73, 0x70, - 0x61, 0x6e, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x3d, 0x22, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x20, - 0x69, 0x64, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x77, 0x69, 0x66, - 0x69, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22, 0x52, 0x45, - 0x53, 0x45, 0x54, 0x22, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, - 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, 0x69, 0x76, 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, 0x3e, - 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x20, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x6f, 0x78, 0x22, 0x3e, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, - 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x53, 0x59, 0x53, - 0x54, 0x45, 0x4d, 0x20, 0x53, 0x54, 0x41, 0x52, 0x54, 0x3a, 0x26, 0x6e, - 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x73, - 0x70, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x62, 0x6f, 0x6f, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, - 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, - 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, 0x6d, - 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x64, 0x69, 0x73, 0x6b, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x42, 0x61, 0x72, 0x22, 0x3e, 0x46, 0x52, 0x45, 0x45, - 0x20, 0x44, 0x49, 0x53, 0x4b, 0x20, 0x53, 0x50, 0x41, 0x43, 0x45, 0x3a, - 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, - 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x72, - 0x65, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, - 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x3e, 0x50, 0x57, 0x4d, - 0x20, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x3a, 0x26, 0x6e, 0x62, 0x73, - 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x73, 0x70, 0x61, - 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x70, 0x77, 0x6d, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, - 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, + 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3e, 0x4c, 0x4f, 0x47, 0x20, 0x53, + 0x45, 0x4e, 0x53, 0x4f, 0x52, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, + 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x62, 0x75, 0x74, 0x74, + 0x6f, 0x6e, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x73, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x22, 0x3e, 0x3c, + 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, + 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x64, + 0x69, 0x76, 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, 0x3e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, + 0x20, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x3c, 0x2f, 0x68, 0x33, 0x3e, + 0x0a, 0x20, 0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x3d, 0x22, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, + 0x6f, 0x78, 0x22, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, - 0x20, 0x69, 0x64, 0x3d, 0x22, 0x77, 0x69, 0x66, 0x69, 0x73, 0x73, 0x69, - 0x64, 0x22, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, - 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, - 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x3e, 0x0a, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, - 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x0a, - 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x3d, 0x3d, 0x20, - 0x34, 0x30, 0x31, 0x20, 0x29, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, - 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x59, 0x6f, - 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x2e, 0x22, 0x20, 0x29, - 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x24, 0x28, 0x20, 0x27, - 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x28, 0x20, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x2c, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x20, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x28, 0x20, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x20, 0x29, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x27, 0x30, 0x20, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x27, 0x3b, 0x0a, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x6b, - 0x20, 0x3d, 0x20, 0x31, 0x30, 0x30, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, - 0x6c, 0x73, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x33, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x20, 0x3d, - 0x20, 0x5b, 0x20, 0x27, 0x42, 0x79, 0x74, 0x65, 0x73, 0x27, 0x2c, 0x20, - 0x27, 0x4b, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x4d, 0x42, 0x27, 0x2c, 0x20, - 0x27, 0x47, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x54, 0x42, 0x27, 0x2c, 0x20, - 0x27, 0x50, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x45, 0x42, 0x27, 0x2c, 0x20, - 0x27, 0x5a, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x59, 0x42, 0x27, 0x20, 0x5d, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x4d, 0x61, - 0x74, 0x68, 0x2e, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x28, 0x4d, 0x61, 0x74, - 0x68, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, - 0x20, 0x2f, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x6c, 0x6f, 0x67, 0x28, - 0x6b, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6c, 0x6f, 0x61, 0x74, - 0x28, 0x20, 0x28, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x2f, 0x20, - 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x6f, 0x77, 0x28, 0x20, 0x6b, 0x2c, - 0x20, 0x69, 0x20, 0x29, 0x20, 0x29, 0x2e, 0x74, 0x6f, 0x46, 0x69, 0x78, - 0x65, 0x64, 0x28, 0x20, 0x64, 0x6d, 0x20, 0x29, 0x20, 0x29, 0x20, 0x2b, - 0x20, 0x27, 0x20, 0x27, 0x20, 0x2b, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x73, - 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, 0x76, 0x61, 0x72, 0x20, 0x67, - 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x3b, - 0x0a, 0x24, 0x28, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x29, - 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x67, + 0x20, 0x69, 0x64, 0x3d, 0x22, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, + 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, + 0x6d, 0x22, 0x3e, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x20, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x3a, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, + 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x69, 0x64, + 0x3d, 0x22, 0x62, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3e, + 0x3c, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x3d, 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, + 0x64, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 0x42, 0x61, 0x72, + 0x22, 0x3e, 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x49, 0x53, 0x4b, 0x20, + 0x53, 0x50, 0x41, 0x43, 0x45, 0x3a, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, + 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, + 0x69, 0x64, 0x3d, 0x22, 0x66, 0x72, 0x65, 0x65, 0x44, 0x69, 0x73, 0x6b, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x22, 0x3e, 0x3c, 0x2f, 0x73, 0x70, 0x61, + 0x6e, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x3c, + 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x74, 0x65, + 0x6d, 0x22, 0x3e, 0x50, 0x57, 0x4d, 0x20, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x3a, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x26, 0x6e, 0x62, 0x73, + 0x70, 0x3b, 0x3c, 0x73, 0x70, 0x61, 0x6e, 0x20, 0x69, 0x64, 0x3d, 0x22, + 0x70, 0x77, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3e, 0x3c, + 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x3e, 0x3c, 0x2f, 0x70, 0x3e, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, + 0x22, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x77, + 0x69, 0x66, 0x69, 0x73, 0x73, 0x69, 0x64, 0x22, 0x3e, 0x3c, 0x2f, 0x70, + 0x3e, 0x0a, 0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x0a, 0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x3e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x28, + 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2c, 0x20, 0x64, 0x65, 0x63, 0x69, + 0x6d, 0x61, 0x6c, 0x73, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, + 0x66, 0x28, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x3d, 0x3d, 0x20, + 0x30, 0x20, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x27, + 0x30, 0x20, 0x42, 0x79, 0x74, 0x65, 0x73, 0x27, 0x3b, 0x0a, 0x20, 0x20, + 0x76, 0x61, 0x72, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x30, 0x30, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6d, 0x20, 0x3d, 0x20, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x20, 0x2b, 0x20, 0x31, 0x20, + 0x7c, 0x7c, 0x20, 0x33, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x69, + 0x7a, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x5b, 0x20, 0x27, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x27, 0x2c, 0x20, 0x27, 0x4b, 0x42, 0x27, 0x2c, 0x20, 0x27, + 0x4d, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x47, 0x42, 0x27, 0x2c, 0x20, 0x27, + 0x54, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x50, 0x42, 0x27, 0x2c, 0x20, 0x27, + 0x45, 0x42, 0x27, 0x2c, 0x20, 0x27, 0x5a, 0x42, 0x27, 0x2c, 0x20, 0x27, + 0x59, 0x42, 0x27, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x20, 0x3d, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x66, 0x6c, 0x6f, 0x6f, + 0x72, 0x28, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x29, 0x20, 0x2f, 0x20, 0x4d, 0x61, 0x74, 0x68, + 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x6b, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x20, 0x28, 0x20, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x20, 0x2f, 0x20, 0x4d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x6f, + 0x77, 0x28, 0x20, 0x6b, 0x2c, 0x20, 0x69, 0x20, 0x29, 0x20, 0x29, 0x2e, + 0x74, 0x6f, 0x46, 0x69, 0x78, 0x65, 0x64, 0x28, 0x20, 0x64, 0x6d, 0x20, + 0x29, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x27, 0x20, 0x27, 0x20, 0x2b, 0x20, + 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0a, 0x7d, 0x0a, + 0x76, 0x61, 0x72, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x3b, 0x0a, 0x24, 0x28, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x29, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x79, 0x28, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, + 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, + 0x20, 0x29, 0x0a, 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, 0x24, 0x28, 0x27, + 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x27, 0x20, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, + 0x28, 0x20, 0x27, 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 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, 0x20, 0x2b, 0x20, 0x22, 0x20, + 0x73, 0x65, 0x74, 0x75, 0x70, 0x22, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, + 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x50, + 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x2e, + 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, + 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, - 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 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, 0x20, 0x29, 0x0a, 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, 0x24, 0x28, 0x27, 0x23, 0x68, 0x6f, 0x73, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x20, 0x29, - 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x68, - 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x27, 0x20, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, - 0x0a, 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, 0x20, 0x2b, 0x20, 0x22, 0x20, 0x73, 0x65, 0x74, 0x75, 0x70, - 0x22, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, - 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x67, 0x65, 0x74, 0x4f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, + 0x7d, 0x29, 0x3b, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x67, 0x65, 0x74, 0x4f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x6f, 0x6c, 0x65, 0x64, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, + 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x50, 0x72, 0x6f, 0x62, 0x6c, 0x65, - 0x6d, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x22, 0x20, 0x29, 0x3b, 0x0a, - 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, - 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, - 0x4f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x4f, - 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 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, 0x6f, 0x6c, 0x65, 0x64, 0x6f, - 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, + 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x6f, 0x6c, 0x65, 0x64, 0x42, 0x61, + 0x72, 0x27, 0x20, 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, + 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, + 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x3d, 0x3d, 0x20, 0x27, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x27, 0x20, + 0x29, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, + 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, + 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x30, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x75, 0x70, 0x73, 0x69, + 0x64, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x27, 0x20, 0x29, 0x20, 0x24, 0x28, + 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, + 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, + 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, 0x20, 0x29, 0x20, + 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, + 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x4f, + 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, + 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x67, 0x65, 0x74, 0x4f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x73, 0x74, 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, 0x6f, 0x6c, + 0x65, 0x64, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, - 0x2e, 0x6f, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x72, 0x27, 0x20, 0x29, 0x2e, - 0x73, 0x68, 0x6f, 0x77, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x27, 0x20, 0x29, 0x20, 0x24, 0x28, 0x27, - 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, - 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, - 0x3d, 0x20, 0x27, 0x75, 0x70, 0x73, 0x69, 0x64, 0x65, 0x64, 0x6f, 0x77, - 0x6e, 0x27, 0x20, 0x29, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, - 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, - 0x28, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, + 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, + 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, @@ -599,234 +616,227 @@ const uint8_t setup_htm[] = { 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x4f, 0x6c, 0x65, 0x64, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, - 0x4f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, - 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, 0x6f, 0x6c, 0x65, 0x64, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x73, 0x74, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, - 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, - 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x73, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, - 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4f, 0x72, 0x69, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, + 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, + 0x65, 0x74, 0x54, 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 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, 0x74, 0x66, 0x74, + 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, + 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, + 0x27, 0x2e, 0x74, 0x66, 0x74, 0x42, 0x61, 0x72, 0x27, 0x20, 0x29, 0x2e, + 0x73, 0x68, 0x6f, 0x77, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x27, + 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, + 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, + 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x75, 0x70, + 0x73, 0x69, 0x64, 0x65, 0x64, 0x6f, 0x77, 0x6e, 0x27, 0x20, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, + 0x74, 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, + 0x61, 0x6c, 0x28, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, + 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, + 0x20, 0x29, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, + 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x66, 0x74, + 0x20, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, + 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, + 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, + 0x72, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x67, + 0x65, 0x74, 0x28, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x74, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3f, 0x73, 0x65, 0x6e, 0x73, 0x6f, + 0x72, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3d, 0x22, 0x29, 0x0a, + 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x73, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x27, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x70, 0x28, 0x27, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x27, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, 0x20, - 0x29, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, - 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, - 0x74, 0x54, 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, - 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 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, 0x74, 0x66, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x29, 0x0a, 0x20, - 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x74, 0x66, - 0x74, 0x42, 0x61, 0x72, 0x27, 0x20, 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77, - 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, - 0x74, 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, - 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x3d, 0x3d, 0x20, - 0x27, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x27, 0x20, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, - 0x66, 0x74, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, - 0x6c, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x75, 0x70, 0x73, 0x69, 0x64, 0x65, - 0x64, 0x6f, 0x77, 0x6e, 0x27, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x4f, - 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, - 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x31, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, - 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x20, 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, 0x20, 0x29, 0x20, 0x24, - 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, - 0x28, 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x66, 0x74, 0x20, 0x6f, 0x72, 0x69, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x22, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, - 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, - 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, - 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, - 0x65, 0x74, 0x54, 0x66, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x6e, 0x65, 0x73, 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, 0x74, - 0x66, 0x74, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, - 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, - 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x6e, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, - 0x6e, 0x74, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, 0x2b, - 0x20, 0x22, 0x25, 0x22, 0x20, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, - 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, - 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, - 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x21, 0x3d, 0x20, - 0x35, 0x30, 0x31, 0x20, 0x29, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, - 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x74, 0x66, 0x74, 0x20, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x2e, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, + 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, + 0x64, 0x61, 0x74, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x5a, 0x6f, 0x6e, 0x65, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 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, - 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x3d, 0x22, 0x29, 0x0a, - 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, - 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, - 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x54, 0x65, 0x78, 0x74, 0x42, - 0x6f, 0x78, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, - 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, - 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, - 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, - 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, - 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, - 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x67, 0x65, 0x74, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x4c, - 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x28, 0x29, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4d, + 0x61, 0x78, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4d, 0x61, 0x78, + 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 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, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3d, 0x22, 0x29, - 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, - 0x69, 0x74, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x27, 0x5c, 0x6e, 0x27, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, - 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x5b, 0x36, 0x5d, - 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, - 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x20, - 0x69, 0x74, 0x65, 0x6d, 0x5b, 0x37, 0x20, 0x2b, 0x20, 0x73, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x5d, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, - 0x42, 0x61, 0x72, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, 0x73, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, - 0x20, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x69, 0x74, 0x65, 0x6d, - 0x5b, 0x37, 0x20, 0x2b, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x5d, - 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x27, 0x2c, 0x27, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x73, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x42, 0x61, 0x72, 0x20, 0x2e, 0x69, 0x74, - 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, - 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x70, 0x72, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x28, 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, 0x43, 0x20, 0x2d, 0x20, 0x22, 0x20, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x73, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, 0x73, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x74, - 0x65, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2b, 0x2b, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, + 0x63, 0x65, 0x3f, 0x74, 0x66, 0x74, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, + 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x42, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x25, 0x22, 0x20, 0x20, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, + 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x6c, + 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, - 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x2e, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, + 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x20, 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, 0x20, 0x29, 0x20, 0x24, 0x28, + 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, + 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x66, 0x74, 0x20, 0x62, 0x72, 0x69, 0x67, + 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x22, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, + 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x28, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, + 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, + 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 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, 0x74, 0x69, 0x6d, 0x65, 0x7a, 0x6f, 0x6e, 0x65, 0x3d, + 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, + 0x27, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x54, 0x65, + 0x78, 0x74, 0x42, 0x6f, 0x78, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, + 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, + 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x20, 0x29, 0x20, 0x67, 0x65, 0x74, 0x57, 0x69, 0x66, 0x69, - 0x53, 0x53, 0x49, 0x44, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, - 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x67, 0x65, 0x74, 0x57, 0x69, 0x66, 0x69, 0x53, 0x53, 0x49, - 0x44, 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, 0x77, 0x69, 0x66, 0x69, 0x73, 0x73, - 0x69, 0x64, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, - 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x28, 0x27, 0x23, 0x77, 0x69, 0x66, 0x69, 0x73, 0x73, 0x69, - 0x64, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x57, - 0x49, 0x46, 0x49, 0x20, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x3a, - 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, - 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x77, 0x69, 0x66, 0x69, 0x73, 0x73, - 0x69, 0x64, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, - 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x20, 0x77, 0x69, 0x66, 0x69, 0x20, 0x53, 0x53, 0x49, 0x44, - 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, - 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, - 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x20, 0x67, - 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, + 0x65, 0x73, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x4c, 0x69, 0x67, 0x68, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, + 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, + 0x74, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 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, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3d, + 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, + 0x72, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x27, 0x5c, 0x6e, 0x27, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6c, + 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x5b, + 0x36, 0x5d, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, + 0x72, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x30, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, + 0x28, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x5b, 0x37, 0x20, 0x2b, 0x20, 0x73, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x5d, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x42, 0x61, 0x72, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, + 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x73, 0x68, 0x6f, + 0x77, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, + 0x61, 0x72, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x69, 0x74, + 0x65, 0x6d, 0x5b, 0x37, 0x20, 0x2b, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, + 0x72, 0x5d, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x27, 0x2c, 0x27, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x42, 0x61, 0x72, 0x20, 0x2e, + 0x69, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x27, 0x29, 0x2e, 0x65, + 0x71, 0x28, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, + 0x70, 0x72, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x28, 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, 0x43, 0x20, 0x2d, 0x20, 0x22, 0x20, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, 0x73, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, + 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, + 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, + 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x2e, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x20, 0x67, 0x65, 0x74, 0x57, 0x69, + 0x66, 0x69, 0x53, 0x53, 0x49, 0x44, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x57, 0x69, 0x66, 0x69, 0x53, 0x53, + 0x49, 0x44, 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, 0x77, 0x69, 0x66, 0x69, 0x73, + 0x73, 0x69, 0x64, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, + 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x77, 0x69, 0x66, 0x69, 0x73, 0x73, + 0x69, 0x64, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, + 0x57, 0x49, 0x46, 0x49, 0x20, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, + 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, + 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x77, 0x69, 0x66, 0x69, 0x73, + 0x73, 0x69, 0x64, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, + 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x66, 0x69, 0x20, 0x53, 0x53, 0x49, + 0x44, 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, + 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, + 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x20, + 0x67, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x67, 0x65, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, @@ -853,274 +863,270 @@ const uint8_t setup_htm[] = { 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x20, 0x67, 0x65, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, - 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, - 0x65, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 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, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, - 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x24, 0x28, 0x27, 0x23, 0x64, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, - 0x65, 0x42, 0x61, 0x72, 0x27, 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x28, - 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x66, - 0x72, 0x65, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, - 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, - 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x20, 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, 0x20, 0x29, 0x20, 0x24, 0x28, - 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, - 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, - 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, - 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, - 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, - 0x29, 0x20, 0x67, 0x65, 0x74, 0x50, 0x77, 0x6d, 0x44, 0x65, 0x70, 0x74, - 0x68, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, - 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, - 0x65, 0x74, 0x50, 0x77, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 0x28, 0x29, + 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, + 0x74, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 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, 0x70, 0x77, 0x6d, 0x64, 0x65, 0x70, 0x74, 0x68, 0x3d, - 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, - 0x27, 0x23, 0x70, 0x77, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, - 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x2b, 0x20, 0x22, 0x62, 0x69, 0x74, 0x20, 0x2d, 0x20, 0x22, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, - 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, - 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x77, 0x6d, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, - 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, - 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, + 0x63, 0x65, 0x3f, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, + 0x28, 0x27, 0x23, 0x64, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, + 0x42, 0x61, 0x72, 0x27, 0x29, 0x2e, 0x73, 0x68, 0x6f, 0x77, 0x28, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x66, 0x72, + 0x65, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x61, 0x63, 0x65, 0x27, + 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x28, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, + 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, + 0x21, 0x3d, 0x20, 0x35, 0x30, 0x31, 0x20, 0x29, 0x20, 0x24, 0x28, 0x20, + 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, + 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x20, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, + 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, + 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, + 0x20, 0x67, 0x65, 0x74, 0x50, 0x77, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, + 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, + 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, + 0x74, 0x50, 0x77, 0x6d, 0x44, 0x65, 0x70, 0x74, 0x68, 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, 0x70, 0x77, 0x6d, 0x64, 0x65, 0x70, 0x74, 0x68, 0x3d, 0x22, + 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, + 0x23, 0x70, 0x77, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x2b, 0x20, 0x22, 0x62, 0x69, 0x74, 0x20, 0x2d, 0x20, 0x22, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, + 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x77, 0x6d, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, + 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, + 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, + 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x20, 0x29, 0x20, 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, + 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 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, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x29, + 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, - 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x20, 0x29, 0x20, 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, - 0x7d, 0x0a, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x28, 0x29, - 0x0a, 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, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3d, - 0x22, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, - 0x27, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x27, 0x29, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6b, - 0x65, 0x74, 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x21, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x28, 0x20, - 0x30, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x28, 0x22, 0x2d, 0x22, 0x29, 0x20, 0x29, 0x20, 0x29, 0x20, - 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x73, 0x6b, 0x65, 0x74, 0x63, - 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x28, 0x20, - 0x30, 0x2c, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x28, 0x22, 0x2d, 0x22, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x24, 0x2e, 0x67, 0x65, 0x74, 0x4a, 0x53, 0x4f, 0x4e, - 0x28, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, - 0x69, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x43, 0x65, 0x6c, 0x6c, 0x69, - 0x65, 0x73, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, - 0x71, 0x75, 0x61, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x33, 0x32, - 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x20, 0x3d, 0x3d, 0x3d, 0x20, 0x22, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x22, 0x20, 0x26, 0x26, 0x20, 0x73, 0x6b, 0x65, 0x74, - 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x21, 0x3d, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x29, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x27, 0x20, 0x29, 0x2e, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x64, 0x28, 0x20, 0x27, 0x20, 0x2d, 0x3c, 0x61, 0x20, 0x68, - 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, - 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x43, 0x65, 0x6c, 0x6c, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x33, 0x32, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, - 0x65, 0x73, 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0x20, 0x20, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, - 0x6e, 0x6b, 0x22, 0x3e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x72, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x27, 0x20, 0x2b, 0x20, 0x64, + 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x27, 0x29, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6b, 0x65, 0x74, + 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x21, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x28, 0x20, 0x30, 0x2c, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x28, 0x22, 0x2d, 0x22, 0x29, 0x20, 0x29, 0x20, 0x29, 0x20, 0x73, 0x6b, + 0x65, 0x74, 0x63, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, + 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x65, 0x6c, 0x73, 0x65, 0x20, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x28, 0x20, 0x30, 0x2c, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x28, 0x22, 0x2d, 0x22, 0x29, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x24, 0x2e, 0x67, 0x65, 0x74, 0x4a, 0x53, 0x4f, 0x4e, 0x28, 0x22, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x43, 0x65, 0x6c, 0x6c, 0x69, 0x65, 0x73, + 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, 0x71, 0x75, + 0x61, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x33, 0x32, 0x2f, 0x72, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x20, 0x3d, 0x3d, 0x3d, 0x20, 0x22, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x22, 0x20, 0x26, 0x26, 0x20, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x21, 0x3d, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x2b, 0x20, 0x22, 0x20, 0x6f, 0x6e, 0x20, 0x47, 0x69, 0x74, 0x48, - 0x75, 0x62, 0x2e, 0x3c, 0x2f, 0x61, 0x3e, 0x22, 0x20, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, - 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, - 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x22, + 0x20, 0x29, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x27, 0x20, 0x29, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, + 0x64, 0x28, 0x20, 0x27, 0x20, 0x2d, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, + 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x65, + 0x6c, 0x6c, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x61, 0x71, 0x75, 0x61, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x33, 0x32, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, + 0x2f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x22, 0x20, 0x20, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e, 0x6b, + 0x22, 0x3e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x72, 0x65, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x20, 0x27, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2b, + 0x20, 0x22, 0x20, 0x6f, 0x6e, 0x20, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, + 0x2e, 0x3c, 0x2f, 0x61, 0x3e, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, + 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, + 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x22, 0x20, 0x2b, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, + 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x20, 0x67, 0x65, 0x74, 0x50, + 0x77, 0x6d, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x28, + 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, 0x74, 0x50, + 0x77, 0x6d, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 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, 0x70, 0x77, 0x6d, 0x66, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x79, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 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, 0x27, 0x23, 0x70, + 0x77, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x61, + 0x70, 0x70, 0x65, 0x6e, 0x64, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, + 0x2b, 0x20, 0x22, 0x48, 0x7a, 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, + 0x6c, 0x28, 0x20, 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, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, + 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x77, 0x6d, + 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3a, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, - 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x20, 0x67, 0x65, 0x74, 0x41, 0x6c, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x29, 0x20, 0x67, 0x65, - 0x74, 0x50, 0x77, 0x6d, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, - 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x65, - 0x74, 0x50, 0x77, 0x6d, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x79, 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, 0x70, 0x77, 0x6d, 0x66, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3d, 0x22, 0x29, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x20, 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, 0x27, - 0x23, 0x70, 0x77, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, - 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x2b, 0x20, 0x22, 0x48, 0x7a, 0x22, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x66, - 0x61, 0x69, 0x6c, 0x28, 0x20, 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, 0x27, 0x23, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, - 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, - 0x77, 0x6d, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x3a, - 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x65, 0x78, 0x74, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x2e, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, - 0x74, 0x41, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x3d, - 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, - 0x2e, 0x70, 0x72, 0x6f, 0x70, 0x28, 0x27, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x27, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, - 0x3b, 0x20, 0x2f, 0x2a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x61, - 0x67, 0x61, 0x69, 0x6e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x27, 0x62, 0x6f, 0x64, 0x79, 0x27, 0x29, 0x2e, - 0x63, 0x73, 0x73, 0x28, 0x27, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x27, 0x2c, 0x27, 0x31, 0x27, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x68, 0x6f, - 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x2a, - 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, - 0x0a, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, - 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x20, 0x2a, 0x2f, 0x0a, - 0x0a, 0x24, 0x28, 0x27, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, - 0x65, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6f, 0x78, 0x2c, 0x20, 0x23, 0x68, - 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x2c, 0x20, 0x23, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x2c, 0x20, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, - 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x2c, - 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, - 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x79, 0x65, 0x6c, - 0x6c, 0x6f, 0x77, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, - 0x0a, 0x24, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, - 0x6f, 0x6e, 0x28, 0x20, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x2c, - 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x27, 0x27, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, - 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5b, 0x74, - 0x79, 0x70, 0x65, 0x3d, 0x22, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, - 0x5d, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x20, 0x27, 0x63, 0x6c, 0x69, - 0x63, 0x6b, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x27, 0x27, 0x29, 0x3b, - 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, - 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, + 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x41, + 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x66, + 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x24, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, 0x70, + 0x72, 0x6f, 0x70, 0x28, 0x27, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x27, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x20, + 0x2f, 0x2a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, + 0x6c, 0x79, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x20, 0x61, 0x67, 0x61, + 0x69, 0x6e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x24, 0x28, 0x27, 0x62, 0x6f, 0x64, 0x79, 0x27, 0x29, 0x2e, 0x63, 0x73, + 0x73, 0x28, 0x27, 0x6f, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x27, 0x2c, + 0x27, 0x31, 0x27, 0x29, 0x3b, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x2f, 0x2a, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x68, 0x6f, 0x77, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x2a, 0x2f, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x20, + 0x20, 0x2f, 0x2a, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x24, + 0x28, 0x27, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x54, + 0x65, 0x78, 0x74, 0x42, 0x6f, 0x78, 0x2c, 0x20, 0x23, 0x68, 0x6f, 0x73, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2c, 0x20, + 0x23, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x2c, 0x20, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, 0x6f, + 0x6e, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x2c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x24, 0x28, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x29, 0x2e, + 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x79, 0x65, 0x6c, 0x6c, 0x6f, + 0x77, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, + 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, 0x6f, 0x6e, + 0x28, 0x20, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x2c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x28, 0x27, 0x27, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, + 0x24, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5b, 0x74, 0x79, 0x70, + 0x65, 0x3d, 0x22, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x22, 0x5d, 0x27, + 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x20, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, - 0x6d, 0x28, 0x22, 0x59, 0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, - 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x20, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2e, 0x5c, 0x6e, - 0x41, 0x72, 0x65, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x73, 0x75, 0x72, 0x65, - 0x3f, 0x22, 0x29, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, - 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x20, 0x3a, 0x20, 0x24, - 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 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, - 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, - 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x27, 0x27, 0x29, 0x3b, 0x0a, 0x7d, + 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, + 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, + 0x66, 0x20, 0x28, 0x21, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x28, + 0x22, 0x59, 0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, + 0x75, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x20, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2e, 0x5c, 0x6e, 0x41, 0x72, + 0x65, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x73, 0x75, 0x72, 0x65, 0x3f, 0x22, + 0x29, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, + 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x20, 0x3a, 0x20, 0x24, 0x28, 0x74, + 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x0a, 0x20, + 0x20, 0x7d, 0x29, 0x0a, 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, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, - 0x23, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x27, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, - 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, - 0x72, 0x65, 0x64, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, - 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x6f, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, + 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, + 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, + 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x27, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, + 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x72, + 0x65, 0x64, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, + 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, + 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, + 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 0x66, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x74, + 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3d, + 0x3d, 0x20, 0x31, 0x20, 0x20, 0x3f, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, - 0x6e, 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, - 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x20, - 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x20, 0x3f, 0x20, 0x24, 0x28, 0x27, 0x23, - 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x27, 0x75, 0x70, 0x73, 0x69, 0x64, 0x65, - 0x64, 0x6f, 0x77, 0x6e, 0x27, 0x20, 0x29, 0x3a, 0x20, 0x24, 0x28, 0x27, - 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x27, 0x6e, 0x6f, 0x72, 0x6d, 0x61, - 0x6c, 0x27, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, - 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, - 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x6c, 0x65, 0x64, 0x6f, 0x72, - 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3a, 0x20, - 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, - 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, - 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, + 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0x28, 0x20, 0x27, 0x75, 0x70, 0x73, 0x69, 0x64, 0x65, 0x64, + 0x6f, 0x77, 0x6e, 0x27, 0x20, 0x29, 0x3a, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, - 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, + 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x27, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x27, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, + 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x6c, 0x65, 0x64, 0x6f, 0x72, 0x69, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3a, 0x20, 0x24, + 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, + 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x7d, + 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, + 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, + 0x6c, 0x6f, 0x67, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, + 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x4f, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, 0x20, @@ -1156,18 +1162,37 @@ const uint8_t setup_htm[] = { 0x74, 0x61, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, - 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4f, 0x72, 0x69, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, - 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x4f, 0x6e, 0x27, - 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x27, - 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, - 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x6f, 0x6e, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4f, 0x72, + 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, + 0x24, 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x4f, 0x6e, + 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, + 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, + 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, + 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x6f, 0x6e, + 0x20, 0x3a, 0x20, 0x22, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, + 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, 0x68, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, + 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, + 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, + 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, + 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, + 0x23, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x4f, 0x66, 0x66, 0x27, 0x29, + 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x27, 0x2c, + 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, + 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x6f, 0x66, 0x66, 0x20, 0x3a, 0x20, 0x22, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, @@ -1182,160 +1207,138 @@ const uint8_t setup_htm[] = { 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, - 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x4f, 0x66, 0x66, 0x27, 0x29, 0x2e, - 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x27, 0x2c, 0x20, + 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, + 0x6b, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, + 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x3a, 0x20, 0x22, 0x22, 0x0a, + 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, + 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, + 0x74, 0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, + 0x27, 0x23, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, + 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, + 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x65, 0x78, 0x74, 0x20, + 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, + 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, 0x6f, + 0x6e, 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, + 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x22, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x24, 0x28, 0x74, 0x68, + 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x2b, 0x20, + 0x22, 0x2e, 0x2e, 0x2e, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x24, + 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, + 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x73, + 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3a, 0x20, 0x24, 0x28, 0x74, 0x68, + 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, + 0x7d, 0x29, 0x0a, 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, 0x24, 0x28, 0x20, + 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, + 0x22, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2e, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, + 0x65, 0x66, 0x3d, 0x5c, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x2b, 0x20, 0x22, + 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5c, 0x22, 0x3e, 0x43, 0x6c, 0x69, + 0x63, 0x6b, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x67, + 0x6f, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x2b, 0x20, 0x22, 0x3c, 0x2f, 0x61, 0x3e, 0x22, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x68, 0x6f, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, + 0x20, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, + 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x6c, 0x69, + 0x67, 0x68, 0x74, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x27, 0x7d, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x68, 0x6f, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, + 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, + 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, + 0x28, 0x20, 0x27, 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x20, 0x29, 0x2e, 0x63, 0x73, 0x73, + 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x27, 0x3a, 0x27, 0x72, 0x65, 0x64, 0x27, 0x7d, 0x29, 0x3b, 0x0a, + 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, + 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, + 0x6f, 0x6e, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x6f, 0x66, 0x66, 0x20, 0x3a, - 0x20, 0x22, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, - 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, + 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x24, 0x28, 0x74, + 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x29, + 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x6f, + 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x53, + 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, + 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x6c, + 0x65, 0x64, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x20, 0x3a, + 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, + 0x28, 0x29, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 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, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, + 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, + 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, + 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, - 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x27, 0x29, 0x2e, 0x6f, - 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x27, 0x2c, 0x20, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x20, 0x3a, 0x20, 0x22, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, - 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, 0x28, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6c, 0x69, 0x67, - 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, - 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, - 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, - 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x68, 0x6f, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, - 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x24, 0x28, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, - 0x22, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x22, 0x20, 0x2b, 0x20, 0x24, - 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, - 0x20, 0x2b, 0x20, 0x22, 0x2e, 0x2e, 0x2e, 0x22, 0x20, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x3a, 0x20, 0x24, - 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, - 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 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, - 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, - 0x6c, 0x28, 0x20, 0x22, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x2e, 0x20, 0x3c, 0x61, - 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x5c, 0x22, 0x68, 0x74, 0x74, 0x70, - 0x3a, 0x2f, 0x2f, 0x22, 0x20, 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, - 0x2b, 0x20, 0x22, 0x2e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5c, 0x22, 0x3e, - 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, - 0x6f, 0x20, 0x67, 0x6f, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x20, 0x2b, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x2b, 0x20, 0x22, 0x3c, 0x2f, 0x61, 0x3e, - 0x22, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, - 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x27, 0x20, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, - 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, - 0x27, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x27, - 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, - 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x27, 0x29, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, - 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, - 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x28, 0x20, 0x27, 0x23, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x20, 0x29, 0x2e, 0x63, - 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, - 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x72, 0x65, 0x64, 0x27, 0x7d, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, - 0x0a, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x73, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, - 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x27, - 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x24, - 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, - 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, - 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, - 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, - 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x6f, 0x6c, 0x65, 0x64, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, + 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, + 0x4f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, + 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, + 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x42, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x6c, 0x69, 0x64, + 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, + 0x74, 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, + 0x6c, 0x28, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x28, + 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, + 0x28, 0x29, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x25, 0x22, 0x20, 0x29, + 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x74, + 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, + 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 0x66, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, + 0x66, 0x74, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x3a, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 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, 0x24, 0x28, 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, - 0x27, 0x23, 0x6f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x73, 0x74, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, - 0x61, 0x6c, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, - 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, - 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, - 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, - 0x74, 0x4f, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x73, - 0x74, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, - 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x42, + 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x6c, 0x69, - 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x28, 0x27, - 0x23, 0x74, 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x29, 0x2e, 0x68, 0x74, - 0x6d, 0x6c, 0x28, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6e, 0x74, - 0x28, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, - 0x6c, 0x28, 0x29, 0x20, 0x29, 0x20, 0x2b, 0x20, 0x22, 0x25, 0x22, 0x20, - 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, - 0x74, 0x66, 0x74, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x53, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x6f, 0x6e, - 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x74, 0x66, 0x74, 0x62, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x20, 0x3a, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, - 0x76, 0x61, 0x6c, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 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, 0x24, 0x28, 0x27, 0x23, 0x74, 0x66, 0x74, - 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x6c, - 0x69, 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, - 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, - 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x41, 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, + 0x64, 0x65, 0x72, 0x27, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, + 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x65, 0x74, 0x54, 0x66, 0x74, 0x4d, 0x61, 0x78, 0x42, 0x72, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x28, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x74, 0x69, 0x6d, 0x65, @@ -1365,94 +1368,85 @@ const uint8_t setup_htm[] = { 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, 0x68, 0x28, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, - 0x6e, 0x65, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6f, 0x78, 0x27, 0x29, 0x2e, - 0x63, 0x73, 0x73, 0x28, 0x20, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x72, 0x65, 0x64, 0x27, - 0x7d, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, - 0x0a, 0x7d, 0x29, 0x3b, 0x20, 0x2f, 0x2a, 0x20, 0x6c, 0x61, 0x73, 0x74, - 0x20, 0x69, 0x6e, 0x20, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x65, - 0x74, 0x75, 0x70, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x2e, - 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x76, 0x61, 0x72, 0x20, 0x73, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x28, 0x27, 0x2e, 0x73, 0x65, 0x6e, + 0x20, 0x24, 0x28, 0x27, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, + 0x65, 0x54, 0x65, 0x78, 0x74, 0x42, 0x6f, 0x78, 0x27, 0x29, 0x2e, 0x63, + 0x73, 0x73, 0x28, 0x20, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x72, 0x65, 0x64, 0x27, 0x7d, + 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, + 0x7d, 0x29, 0x3b, 0x20, 0x2f, 0x2a, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, + 0x69, 0x6e, 0x20, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x65, 0x74, + 0x75, 0x70, 0x20, 0x2a, 0x2f, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, 0x73, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, + 0x27, 0x2c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, + 0x61, 0x74, 0x61, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, + 0x73, 0x74, 0x28, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x6c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x3a, 0x20, 0x24, 0x28, 0x74, + 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x20, 0x3d, + 0x3d, 0x3d, 0x20, 0x22, 0x4f, 0x46, 0x46, 0x22, 0x20, 0x3f, 0x20, 0x22, + 0x4f, 0x4e, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x4f, 0x46, 0x46, 0x22, 0x0a, + 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x64, 0x6f, 0x6e, 0x65, + 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x64, + 0x61, 0x74, 0x61, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, + 0x27, 0x23, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x67, + 0x69, 0x6e, 0x67, 0x27, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x70, 0x28, 0x27, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x27, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x27, 0x23, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x27, 0x53, 0x45, 0x4e, 0x53, 0x4f, + 0x52, 0x20, 0x4c, 0x4f, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x20, 0x49, 0x53, + 0x20, 0x4e, 0x4f, 0x57, 0x20, 0x27, 0x2b, 0x64, 0x61, 0x74, 0x61, 0x29, + 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, 0x66, 0x61, + 0x69, 0x6c, 0x28, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x28, 0x64, 0x61, 0x74, 0x61, 0x29, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x24, 0x28, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x27, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, + 0x65, 0x78, 0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, + 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x27, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, - 0x28, 0x20, 0x22, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x3a, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, - 0x2e, 0x76, 0x61, 0x6c, 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, - 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x0a, 0x20, 0x20, 0x7d, 0x29, - 0x0a, 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, 0x24, 0x28, 0x20, 0x27, 0x23, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x27, 0x22, 0x20, - 0x2b, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x2b, 0x20, 0x22, 0x27, 0x22, - 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, - 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x27, 0x20, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, - 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x63, 0x73, 0x73, - 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, - 0x64, 0x27, 0x3a, 0x27, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x67, 0x72, 0x65, - 0x65, 0x6e, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, - 0x20, 0x20, 0x2e, 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, - 0x75, 0x74, 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, + 0x27, 0x29, 0x2e, 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x27, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x76, 0x61, 0x72, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, + 0x3d, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x28, 0x27, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x29, 0x3b, + 0x0a, 0x20, 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x3a, 0x20, 0x24, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x2e, 0x76, 0x61, + 0x6c, 0x28, 0x29, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3a, 0x20, 0x73, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 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, 0x24, 0x28, 0x20, 0x27, 0x23, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, + 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, 0x20, 0x22, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x27, 0x22, 0x20, 0x2b, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x2b, 0x20, 0x22, 0x27, 0x22, 0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, 0x20, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, - 0x27, 0x72, 0x65, 0x64, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, - 0x29, 0x3b, 0x0a, 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x24, 0x28, 0x27, 0x23, - 0x63, 0x6c, 0x65, 0x61, 0x72, 0x77, 0x69, 0x66, 0x69, 0x27, 0x29, 0x2e, - 0x6f, 0x6e, 0x28, 0x27, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x27, 0x2c, 0x20, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x20, 0x64, 0x61, - 0x74, 0x61, 0x20, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, - 0x28, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x28, 0x20, 0x22, - 0x41, 0x72, 0x65, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x73, 0x75, 0x72, 0x65, - 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x64, 0x61, 0x74, 0x61, 0x3f, - 0x5c, 0x6e, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6c, 0x69, 0x63, - 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x79, 0x65, 0x73, 0x20, 0x79, 0x6f, 0x75, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, - 0x20, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x65, 0x62, - 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x2e, 0x22, - 0x20, 0x29, 0x20, 0x29, 0x0a, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x24, 0x2e, 0x70, 0x6f, 0x73, 0x74, 0x28, 0x20, 0x22, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x73, 0x65, 0x74, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x77, 0x69, 0x66, 0x69, - 0x20, 0x3a, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 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, 0x27, 0x23, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x27, 0x20, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x28, - 0x20, 0x22, 0x59, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6e, 0x6f, - 0x77, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x45, 0x53, 0x50, 0x33, 0x32, 0x2e, 0x22, 0x20, 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, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x75, 0x74, - 0x68, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x3b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x3b, 0x0a, - 0x7d, 0x29, 0x3b, 0x0a, 0x0a, 0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x27, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x27, + 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x0a, 0x20, 0x20, 0x2e, + 0x66, 0x61, 0x69, 0x6c, 0x28, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x28, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x29, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x24, 0x28, 0x20, 0x27, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x27, + 0x20, 0x29, 0x2e, 0x65, 0x71, 0x28, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, + 0x72, 0x20, 0x29, 0x2e, 0x63, 0x73, 0x73, 0x28, 0x7b, 0x27, 0x62, 0x61, + 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x27, 0x3a, 0x27, 0x72, + 0x65, 0x64, 0x27, 0x7d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x7d, 0x29, 0x3b, + 0x0a, 0x7d, 0x29, 0x3b, 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 setup_htm_len = 17455; +const unsigned int setup_htm_len = 17383; diff --git a/webservertask.ino b/webservertask.ino index 9bdd88b..f2da897 100644 --- a/webservertask.ino +++ b/webservertask.ino @@ -162,7 +162,7 @@ void webServerTask ( void * pvParameters ) else if ( request->hasArg( "diskspace" ) ) { response = request->beginResponseStream( HEADER_HTML ); - response->printf( "%lu" ,FFat.freeBytes() ); + response->printf( "%lu", FFat.freeBytes() ); //response->print( String(FFat.totalBytes() - FFat.freeBytes()) ); return request->send( response ); } @@ -278,6 +278,11 @@ void webServerTask ( void * pvParameters ) return request->send( response ); } + else if ( request->hasArg( "sensorlogging" ) ) + { + return request->send( 200, HEADER_HTML, LOG_SENSOR_ERRORS ? "ON" : "OFF" ); + } + else if ( request->hasArg( "sensorname" ) ) { if ( !numberOfFoundSensors ) @@ -318,7 +323,10 @@ void webServerTask ( void * pvParameters ) { for ( uint8_t sensorNumber = 0; sensorNumber < numberOfFoundSensors; sensorNumber++ ) { - response->printf( "%s,%.3f\n", sensor[sensorNumber].name, sensor[sensorNumber].tempCelcius ); + if ( !sensor[sensorNumber].error ) + response->printf( "%s,%.3f\n", sensor[sensorNumber].name, sensor[sensorNumber].tempCelcius ); + else + response->printf( "%s,ERROR\n", sensor[sensorNumber].name ); } } return request->send( response ); @@ -586,6 +594,21 @@ void webServerTask ( void * pvParameters ) return request->send( response ); } + else if ( request->hasArg( "sensorlogging" ) ) + { + if ( request->arg( "sensorlogging").equalsIgnoreCase( "on" ) ) + { + LOG_SENSOR_ERRORS = true; + return request->send( 200, HEADER_HTML, "ON" ); + } + else if ( request->arg( "sensorlogging" ).equalsIgnoreCase( "off" ) ) + { + LOG_SENSOR_ERRORS = false; + return request->send( 200, HEADER_HTML, "OFF" ); + } + else return request->send( 400, HEADER_HTML, "Invalid option." ); + } + else if ( request->hasArg( "sensorname" ) ) { if ( request->arg( "sensorname" ).length() >= sizeof( sensor->name ) )