This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3100: unable to find CSS file

Part Number: CC3100
Other Parts Discussed in Thread: UNIFLASH, CC3200,

When I have loaded my html pages, images and .css file onto the flash the .css file appears to have no effect on the html.

I have the unit configured in AP mode.
The html and .css are all loaded to the www directory.
The images are loaded to the www/images directory.
The html and images are correctly accessed and used.

I tried to open the .css file as normal with the DOMAIN/styles.css URL in the connected device browser and this shows a 'file can't be found' error.

If I try the same with the built-in .css file with the URL DOMAIN/simple_link.css then this is correctly opened and displayed by the browser.

The html files and .css file use the same routine to write them to the flash and all report as successful.

Have I possibly missed something, such as having the .css file in www/css, which didn't appear to fix this?

Thanks,

Kevin

  • Note that I have been able to read back the .css file and confirm that it matches what I expect.

    Kevin

  • I found a question for a CC3235 with a similar issue (LAUNCHXL-CC3235SF: Server not serving-up images, css nor javascript in "www" folder (NWP)) but I can't see that the CC3100 supports secured files, although it includes 'future' provision for such.

    Kevin

  • It does appear that a ccs file saved into the www/css folder is seem by the system, but access is denied.
    If I create simple_link.css here then the built-in copy can no longer be loaded in the browser and we get a 'file can't be found' error.
    If created in the www folder the built-in copy is still accessible, but the new one not.

    I had understood that the only currently used flag for sl_FsOpen with FS_MODE_OPEN_CREATE was _FS_FILE_OPEN_FLAG_COMMIT like this:

    _i32        fileHandle = -1;
    _i32        retVal = -1;
    _u32        Token = 0;
    
    retVal = sl_FsOpen((_u8 *)"www/css/simple_link.css",FS_MODE_OPEN_CREATE((4096-512),_FS_FILE_OPEN_FLAG_COMMIT), &Token, &fileHandle);

    Kevin

  • Hi Kevin,

    You are correct that CC3100 does not have support for secure files (that was added in the CC3x20 devices). When you add the file into www/css folder, what is the error you get when you try to access it?

    Also, be sure you have a latest servicepack flashed.

    Best regards,

    Sarah

  • Sarah,

    I am able to access the file using the file system API without issue: sl_FsOpen, sl_FsClose, sl_FsDel, sl_FsGetInfo, sl_FsRead and sl_FsWrite all report success and I can see the resultant file using CCS Uniflash, too.

    However when accessing the html files, using the the http server, they load without any of the css formatting.

    Normally you can put the css file URL into your browser and it will show the content of the file, much as you can with images etc.
    In this case the browser is unable to locate and display the css file. The error message depends upon the browser used.

    Kevin

  • Hi Kevin,

    I tested this using the CC3200 out_of_box demo and user files, and it worked as expected.

    What CC3100 SDK or host driver version are you using? What servicepack is flashed to the device? Be sure this is applied after you format the serial flash.

    Best regards,

    Sarah

  • Sarah,

    I am using CC3100SDK_1.3.0 and service pack CC3100_CC3200_ServicePack_1.0.1.15-2.14.0.0, both of which I believe to be the latest.

    My code reads back the below values to verify this, and update the service pack if they don't match:
        NWP Version: 2.14.0.0
        FW Version: 1.6.0.2
        PHY Version: 1.0.3.37

    Kevin

  • Hi Kevin,

    Can you send me the css file you are using? I can try it on my setup. What host are you using?

    Best regards,

    Sarah

  • Sarah,

    I am using a modified version of the http_server example, although I have http authentication turned off.
    I use a version of the file_operations example to write the html, image and css files to the file system in flash.

    I get the same issue when using the css from the out_of_box example, as you did.

    Also I cannot open the css both when transferring from a text array or binary array, with the css source.

    Kevin

  • Hi Kevin,

    If you add the css file in UniFlash versus from the application, do you see the same issue? I'm trying to figure out what could be the difference in our setups, since the servicepack version is the only thing that can really change the internal HTTP server.

    Best regards,

    Sarah

  • Sarah,

    When loaded with Uniflash it is found and can be opened OK.
    I couldn't find an option in CCS Uniflash to download the copy that I have uploaded using the file_operations example, so that I can make a comparison.

    Kevin

  • Hi Kevin,

    For CC3100 devices, you are only able to view the file system list from UniFlash, not the contents. You can try flashing one file with UniFlash and writing the other, then reading both back to print to the terminal.

    Can you share the code snippet you are using the create and write the file? Be sure you are closing the file after writing.

    Best regards,

    Sarah

  • Sarah,

    It appears that the copy added using the application software is only partially written to flash, so I get 'Error in reading CSS file (-15)' when I am still expecting some data to read from the file, so I need to check through that code, which does work OK for my html files.

    I noticed that for the example css, that has 8775 bytes size (according to windows 10), that CCS Uniflash has allocated 4 blocks, as seen below.
    Is there a reason for that? I was expecting to require 8775 plus 512, rounded up to the nearest block of 4096 bytes, which would be 3 blocks.

    [15:44:53] INFO: 	file	start	size	fail	total size	filename
    [15:44:53] INFO: 	index	block	[BLKs]	safe	[BLKs]
    [15:44:53] INFO: ----------------------------------------------------------------------------
    [15:44:53] INFO: 	N/A	0	5	N/A	5		FATFS
    [15:44:53] INFO: 	4	5	5	yes	10		/tmp/phy.cal
    [15:44:53] INFO: 	6	15	4	no	4		www/css/style.css

    Is that something that I have just not set correctly in CCS Uniflash?

    Thanks,

    Kevin

  • Hi Kevin,

    Can you try setting the Max Size manually in UniFlash?

    Best regards,

    Sarah

  • Sarah,

    I have found that the css file from the out_of_box example has \0 on line 252, so I have converted the file to binary and set the length, rather than using a char array and pal_Strlen().

    Now I get the same file, when read back from the flash and sent to the console output, when using CCS Uniflash or the application code.
    However, I can still only see the version loaded using CCS Uniflash, in the browser.

    I have included all of the appropriate application code:

    const uint8_t g_pui8styles_ccs[] = {
    0x40, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x20, 0x22, 0x75, 0x74, 0x66, 0x2D, 0x38, 0x22,
    0x3B, 0x0D, 0x0A, 0x2F, 0x2A, 0x20, 0x43, 0x53, 0x53, 0x20, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65,
    0x6E, 0x74, 0x20, 0x2A, 0x2F, 0x0D, 0x0A, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x7B, 0x20,
    0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x30, 0x3B, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73,
    0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x66,
    0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x41, 0x72, 0x69, 0x61, 0x6C, 0x2C, 0x20, 0x48, 0x65, 0x6C,
    0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x2C, 0x20, 0x73, 0x61, 0x6E, 0x73, 0x2D, 0x73, 0x65, 0x72,
    0x69, 0x66, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x68, 0x31, 0x20, 0x7B, 0x20, 0x66, 0x6F,
    0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x36, 0x70, 0x78, 0x3B, 0x20, 0x66,
    0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F, 0x6C, 0x64, 0x3B,
    0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x20, 0x7B, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x64, 0x65, 0x63,
    0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x20, 0x7D, 0x0D,
    0x0A, 0x61, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A,
    0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x3A, 0x76, 0x69,
    0x73, 0x69, 0x74, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x30,
    0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x3A, 0x68, 0x6F, 0x76, 0x65, 0x72,
    0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30,
    0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x3A, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7B, 0x20,
    0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3B, 0x20, 0x7D,
    0x0D, 0x0A, 0x68, 0x32, 0x20, 0x7B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x25, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x69,
    0x2D, 0x6C, 0x6F, 0x67, 0x6F, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73,
    0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x32, 0x30, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B,
    0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D,
    0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61,
    0x67, 0x65, 0x73, 0x2F, 0x74, 0x69, 0x2D, 0x6C, 0x6F, 0x67, 0x6F, 0x2E, 0x70, 0x6E, 0x67, 0x22,
    0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
    0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65,
    0x72, 0x20, 0x2E, 0x72, 0x65, 0x64, 0x2D, 0x62, 0x61, 0x72, 0x2C, 0x20, 0x2E, 0x66, 0x6F, 0x6F,
    0x74, 0x65, 0x72, 0x20, 0x2E, 0x72, 0x65, 0x64, 0x2D, 0x62, 0x61, 0x72, 0x20, 0x7B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20,
    0x6E, 0x6F, 0x6E, 0x65, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x73, 0x63, 0x72, 0x6F,
    0x6C, 0x6C, 0x20, 0x30, 0x20, 0x30, 0x20, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46,
    0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73,
    0x74, 0x79, 0x6C, 0x65, 0x3A, 0x20, 0x69, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20,
    0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68,
    0x74, 0x3A, 0x20, 0x32, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69,
    0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31, 0x2E, 0x36, 0x65, 0x6D,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30,
    0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C, 0x65,
    0x66, 0x74, 0x3A, 0x20, 0x31, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A,
    0x2E, 0x66, 0x6F, 0x6F, 0x74, 0x65, 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70,
    0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2D,
    0x62, 0x61, 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67,
    0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43,
    0x43, 0x43, 0x43, 0x43, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65,
    0x72, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67,
    0x68, 0x74, 0x3A, 0x20, 0x31, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x35,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20,
    0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69,
    0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73,
    0x74, 0x61, 0x74, 0x75, 0x73, 0x2D, 0x62, 0x61, 0x72, 0x2E, 0x6F, 0x6E, 0x6C, 0x69, 0x6E, 0x65,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75,
    0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x30, 0x30, 0x39, 0x39, 0x33,
    0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74,
    0x6F, 0x70, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23, 0x46,
    0x46, 0x46, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F,
    0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F,
    0x61, 0x74, 0x3A, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77,
    0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61,
    0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20,
    0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x74,
    0x61, 0x62, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0x67, 0x69, 0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A,
    0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69,
    0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65,
    0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x75, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x6C,
    0x69, 0x73, 0x74, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x20,
    0x6F, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x6E, 0x6F,
    0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67,
    0x3A, 0x20, 0x35, 0x70, 0x78, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x35, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31,
    0x2E, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20,
    0x6C, 0x69, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61,
    0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x61, 0x20,
    0x7B, 0x0D, 0x0A, 0x20, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x2D, 0x31, 0x31, 0x38,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D,
    0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66,
    0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x62, 0x6F, 0x6C, 0x64,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x2E, 0x61, 0x63, 0x74,
    0x69, 0x76, 0x65, 0x20, 0x61, 0x20, 0x73, 0x70, 0x61, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73,
    0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x20, 0x2D, 0x31, 0x31, 0x39,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20,
    0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61,
    0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x3A, 0x20, 0x37, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x61, 0x20, 0x7B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x74,
    0x74, 0x6F, 0x6D, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23,
    0x39, 0x45, 0x39, 0x44, 0x39, 0x44, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F,
    0x61, 0x74, 0x3A, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6D,
    0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70,
    0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x37, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x64, 0x65, 0x63,
    0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x2D, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3A,
    0x20, 0x6E, 0x6F, 0x77, 0x72, 0x61, 0x70, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67,
    0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C,
    0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x74, 0x69, 0x63, 0x6F,
    0x6D, 0x33, 0x2D, 0x74, 0x61, 0x62, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x2E, 0x67, 0x69, 0x66, 0x22,
    0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x61, 0x20, 0x73, 0x70,
    0x61, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A,
    0x20, 0x23, 0x35, 0x38, 0x35, 0x38, 0x35, 0x38, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x64,
    0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x31, 0x30, 0x70,
    0x78, 0x20, 0x39, 0x70, 0x78, 0x20, 0x36, 0x70, 0x78, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x62,
    0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A,
    0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F,
    0x74, 0x69, 0x63, 0x6F, 0x6D, 0x33, 0x2D, 0x74, 0x61, 0x62, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x74,
    0x2E, 0x67, 0x69, 0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72,
    0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72,
    0x69, 0x67, 0x68, 0x74, 0x20, 0x74, 0x6F, 0x70, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B,
    0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F,
    0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E,
    0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x7B, 0x20, 0x6D, 0x69, 0x6E, 0x2D, 0x68, 0x65,
    0x69, 0x67, 0x68, 0x74, 0x3A, 0x32, 0x30, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x63, 0x6C, 0x65, 0x61,
    0x72, 0x3A, 0x62, 0x6F, 0x74, 0x68, 0x3B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A,
    0x20, 0x31, 0x35, 0x70, 0x78, 0x3B, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65,
    0x3A, 0x31, 0x32, 0x70, 0x78, 0x3B, 0x20, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68,
    0x3A, 0x39, 0x30, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x63, 0x6F, 0x6E, 0x74, 0x65,
    0x6E, 0x74, 0x20, 0x2E, 0x68, 0x69, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x2D, 0x74, 0x65, 0x78, 0x74,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69,
    0x67, 0x68, 0x74, 0x3A, 0x20, 0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D,
    0x0A, 0x2E, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x7B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x2F, 0x2A, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65,
    0x3A, 0x20, 0x64, 0x69, 0x73, 0x63, 0x20, 0x6F, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x75,
    0x72, 0x6C, 0x28, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x74,
    0x69, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2F, 0x69, 0x6D, 0x61,
    0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x5F, 0x6C,
    0x5F, 0x68, 0x74, 0x6D, 0x6C, 0x5F, 0x61, 0x2E, 0x70, 0x6E, 0x67, 0x22, 0x29, 0x3B, 0x20, 0x2A,
    0x2F, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2D, 0x6C, 0x69, 0x73,
    0x74, 0x20, 0x3E, 0x20, 0x6C, 0x69, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69,
    0x73, 0x74, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x20, 0x6F,
    0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x31, 0x30,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67,
    0x2D, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62,
    0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A,
    0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F,
    0x69, 0x63, 0x6F, 0x6E, 0x5F, 0x6C, 0x5F, 0x68, 0x74, 0x6D, 0x6C, 0x5F, 0x61, 0x2E, 0x70, 0x6E,
    0x67, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65,
    0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x6C, 0x69,
    0x6E, 0x6B, 0x73, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x20, 0x61, 0x20, 0x7B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43, 0x30,
    0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x74, 0x62, 0x6C, 0x2D,
    0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F,
    0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x62,
    0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E,
    0x67, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x0D, 0x0A, 0x2E, 0x74, 0x62, 0x6C, 0x2D, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2E, 0x74, 0x6F,
    0x70, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70,
    0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65,
    0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20,
    0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31,
    0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61,
    0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x20, 0x35, 0x70, 0x78, 0x20, 0x35, 0x70,
    0x78, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64,
    0x69, 0x6E, 0x67, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x30, 0x25, 0x3B, 0x0D,
    0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72,
    0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x7B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30,
    0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
    0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C,
    0x65, 0x20, 0x74, 0x64, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x20, 0x35, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64,
    0x65, 0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
    0x2E, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x75, 0x6D, 0x20,
    0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
    0x3A, 0x20, 0x38, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x76, 0x69,
    0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x2E, 0x73, 0x65,
    0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x0A,
    0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C,
    0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65,
    0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09,
    0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x35, 0x70, 0x78, 0x20, 0x31, 0x30, 0x70, 0x78,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x2F, 0x2A, 0x20, 0x64, 0x65, 0x6D,
    0x6F, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x2A, 0x2F, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D,
    0x6F, 0x4D, 0x65, 0x6E, 0x75, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A,
    0x33, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F,
    0x4C, 0x69, 0x6E, 0x6B, 0x2E, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20,
    0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69,
    0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D,
    0x61, 0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x68,
    0x6F, 0x6D, 0x65, 0x41, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x67, 0x69,
    0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65,
    0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C,
    0x69, 0x6E, 0x6B, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x7B,
    0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D,
    0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61,
    0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x68, 0x6F,
    0x6D, 0x65, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x2E, 0x67, 0x69, 0x66,
    0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61,
    0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C, 0x69,
    0x6E, 0x6B, 0x2E, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61,
    0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20,
    0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x69,
    0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x2E,
    0x67, 0x69, 0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F,
    0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70,
    0x78, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F,
    0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65,
    0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D,
    0x6F, 0x4C, 0x69, 0x6E, 0x6B, 0x2E, 0x73, 0x6D, 0x61, 0x72, 0x74, 0x45, 0x6E, 0x65, 0x72, 0x67,
    0x79, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F,
    0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F,
    0x2D, 0x73, 0x6D, 0x61, 0x72, 0x74, 0x45, 0x6E, 0x65, 0x72, 0x67, 0x79, 0x2E, 0x67, 0x69, 0x66,
    0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61,
    0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C, 0x69,
    0x6E, 0x6B, 0x3A, 0x68, 0x6F, 0x76, 0x65, 0x72, 0x2C, 0x20, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C,
    0x69, 0x6E, 0x6B, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62,
    0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69,
    0x6F, 0x6E, 0x3A, 0x30, 0x20, 0x2D, 0x37, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C, 0x69, 0x6E, 0x6B, 0x20, 0x7B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x62, 0x6C, 0x6F, 0x63,
    0x6B, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
    0x3A, 0x20, 0x37, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64,
    0x74, 0x68, 0x3A, 0x20, 0x37, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67,
    0x69, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x09, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x20, 0x7B, 0x0D,
    0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F,
    0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x3A, 0x20,
    0x62, 0x6F, 0x74, 0x68, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
    0x6E, 0x67, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x44, 0x72, 0x79, 0x65, 0x72, 0x20, 0x7B, 0x0D, 0x0A,
    0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x33, 0x30, 0x30, 0x70, 0x78,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x65, 0x72, 0x54, 0x65, 0x78,
    0x74, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A,
    0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x3B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64,
    0x69, 0x75, 0x73, 0x3A, 0x20, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63,
    0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72,
    0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61,
    0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x39, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09,
    0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x2E, 0x64, 0x72, 0x79, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62,
    0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x34, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23,
    0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x20, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6F,
    0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20,
    0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A,
    0x20, 0x39, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x6C,
    0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68,
    0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66,
    0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x0D, 0x0A, 0x23, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x6D, 0x61, 0x67, 0x65,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75,
    0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E,
    0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x6C, 0x69,
    0x67, 0x68, 0x74, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2E, 0x6A, 0x70, 0x67, 0x22, 0x29, 0x3B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x2D, 0x37, 0x32,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F,
    0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65,
    0x70, 0x65, 0x61, 0x74, 0x3B, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64,
    0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75,
    0x72, 0x73, 0x6F, 0x72, 0x3A, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x37, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x23, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x6D,
    0x61, 0x67, 0x65, 0x2E, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61,
    0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20,
    0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x64,
    0x65, 0x6D, 0x6F, 0x2D, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2E,
    0x6A, 0x70, 0x67, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B,
    0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A,
    0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73,
    0x70, 0x72, 0x69, 0x6E, 0x6B, 0x6C, 0x65, 0x72, 0x4F, 0x6E, 0x2C, 0x20, 0x2E, 0x73, 0x70, 0x72,
    0x69, 0x6E, 0x6B, 0x6C, 0x65, 0x72, 0x4F, 0x66, 0x66, 0x2C, 0x20, 0x2E, 0x61, 0x6C, 0x61, 0x72,
    0x6D, 0x73, 0x4F, 0x6E, 0x2C, 0x20, 0x2E, 0x61, 0x6C, 0x61, 0x72, 0x6D, 0x73, 0x4F, 0x66, 0x66,
    0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x70, 0x6F, 0x69, 0x6E,
    0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x23, 0x73, 0x70, 0x72, 0x69, 0x6E, 0x6B,
    0x6C, 0x65, 0x72, 0x20, 0x69, 0x6D, 0x67, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67,
    0x68, 0x74, 0x3A, 0x33, 0x34, 0x32, 0x70, 0x78, 0x5C, 0x30, 0x2F, 0x49, 0x45, 0x38, 0x2B, 0x39,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x75, 0x73, 0x65,
    0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x6E,
    0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6B, 0x68, 0x74, 0x6D, 0x6C,
    0x2D, 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x3A,
    0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x77, 0x65, 0x62,
    0x6B, 0x69, 0x74, 0x2D, 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20,
    0x20, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6F,
    0x2D, 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x20,
    0x20, 0x20, 0x20, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20,
    0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D,
    0x0A, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x61, 0x20,
    0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x30, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20,
    0x30, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74,
    0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D,
    0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20,
    0x69, 0x6E, 0x70, 0x75, 0x74, 0x5B, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74,
    0x22, 0x5D, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73,
    0x69, 0x7A, 0x65, 0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62,
    0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65,
    0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
    0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74,
    0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x6D, 0x69, 0x64, 0x64,
    0x6C, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49,
    0x6E, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x5B, 0x74, 0x79, 0x70, 0x65, 0x3D,
    0x22, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x22, 0x5D, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x6E, 0x6F,
    0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C,
    0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67,
    0x6E, 0x3A, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D,
    0x0A, 0x2E, 0x64, 0x69, 0x64, 0x59, 0x6F, 0x75, 0x4B, 0x6E, 0x6F, 0x77, 0x20, 0x7B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75,
    0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72,
    0x64, 0x65, 0x72, 0x3A, 0x20, 0x32, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23,
    0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A,
    0x20, 0x33, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64,
    0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x33, 0x65,
    0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75,
    0x6E, 0x64, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x46, 0x41, 0x41, 0x3B, 0x0D, 0x0A, 0x09, 0x66,
    0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x32, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x69, 0x64, 0x59, 0x6F, 0x75, 0x4B, 0x6E, 0x6F, 0x77,
    0x20, 0x73, 0x70, 0x61, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77,
    0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F,
    0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x2E, 0x62, 0x75, 0x62, 0x62, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x6E, 0x6F, 0x6E,
    0x65, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x73, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x20,
    0x30, 0x20, 0x30, 0x20, 0x23, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x32, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A,
    0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
    0x6E, 0x67, 0x3A, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70,
    0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76,
    0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x33,
    0x30, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x7A, 0x2D, 0x69, 0x6E, 0x64,
    0x65, 0x78, 0x3A, 0x20, 0x39, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64,
    0x49, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x3E, 0x20, 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x2E, 0x68, 0x77,
    0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6D,
    0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D,
    0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x09,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x2E, 0x6F, 0x66, 0x66, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70,
    0x6C, 0x61, 0x79, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62,
    0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x20, 0x7B, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x72, 0x69, 0x67,
    0x68, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67,
    0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x38, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x2E, 0x73, 0x65,
    0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69,
    0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E,
    0x62, 0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x20, 0x61, 0x3A, 0x76, 0x69, 0x73, 0x69,
    0x74, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x43, 0x43, 0x30,
    0x30, 0x30, 0x30, 0x20, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30,
    0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D,
    0x34, 0x36, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70,
    0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x32, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x38, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x34, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x2D, 0x32, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A,
    0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30,
    0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D,
    0x31, 0x39, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70,
    0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x36, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x32, 0x33, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x32, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x20, 0x77, 0x69, 0x64,
    0x74, 0x68, 0x3A, 0x31, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64,
    0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70,
    0x3A, 0x20, 0x2D, 0x36, 0x30, 0x70, 0x78, 0x3B, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39,
    0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20,
    0x23, 0x64, 0x65, 0x73, 0x63, 0x39, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33,
    0x30, 0x70, 0x78, 0x3B, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B,
    0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73,
    0x63, 0x31, 0x30, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33, 0x30, 0x70, 0x78,
    0x3B, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x34, 0x36, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x32,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x38, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A,
    0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30,
    0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x34, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D,
    0x32, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70,
    0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x39, 0x33, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x36,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x32, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x31, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33,
    0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A,
    0x20, 0x2D, 0x31, 0x32, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39,
    0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20,
    0x23, 0x64, 0x65, 0x73, 0x63, 0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x36, 0x30,
    0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D,
    0x0D, 0x0A, 0x0D, 0x0A, 0x40, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20,
    0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x6D, 0x61, 0x78, 0x2D,
    0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x38, 0x30, 0x70, 0x78, 0x29, 0x20, 0x7B, 0x0D,
    0x0A, 0x09, 0x2E, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20,
    0x7B, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x62, 0x75, 0x62, 0x62, 0x6C, 0x65, 0x20, 0x7B, 0x62, 0x6F, 0x72, 0x64, 0x65,
    0x72, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x20, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x38, 0x30, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x32, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x34, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x36, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x32, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x34, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x36, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x09,
    0x2E, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69,
    0x65, 0x73, 0x20, 0x7B, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25,
    0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74,
    0x20, 0x61, 0x20, 0x7B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x30, 0x20, 0x3B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x72, 0x69,
    0x67, 0x68, 0x74, 0x3A, 0x20, 0x30, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x23, 0x74, 0x65, 0x6D,
    0x70, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x5B, 0x74, 0x79, 0x70,
    0x65, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x5D, 0x20, 0x7B, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x20, 0x31, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x64,
    0x69, 0x64, 0x59, 0x6F, 0x75, 0x4B, 0x6E, 0x6F, 0x77, 0x20, 0x7B, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x32, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A,
    0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x65, 0x6D, 0x3B, 0x20, 0x7D, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x2E, 0x62, 0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x20,
    0x7B, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x20, 0x7D,
    0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x09, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x44, 0x72, 0x79, 0x65, 0x72,
    0x20, 0x69, 0x6D, 0x67, 0x20, 0x7B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x2D, 0x31, 0x39,
    0x70, 0x78, 0x3B, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65,
    0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x64, 0x72, 0x79,
    0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x20, 0x7B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x35,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x65, 0x72,
    0x54, 0x65, 0x78, 0x74, 0x20, 0x7B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x7D
    };
    
    #define NUM_HTTP_FILES          1
    
    typedef struct HTTP_FILE
    {
        char* FileName;
        const uint8_t* DataArray;
        uint32_t DataByteSize;
        uint32_t fsByteAllocation;
    } HTTP_FILE;
    
    HTTP_FILE Http_Files[NUM_HTTP_FILES] =
    {
     {.FileName = "www/css/styles.ccs", .DataArray = g_pui8styles_ccs, .DataByteSize = 8775, .fsByteAllocation = 16384}
    };
    
    bool g_hasPassed = true;
    
    bool Update_Files(void)
    {
        _i32        fileHandle = -1;
        _i32        retVal = -1;
        _u32        Token = 0;
        _u32        Idx = 0;
        SlFsFileInfo_t myFileInfo;
        _u32        CreateFlags = 0
                //|_FS_FILE_OPEN_FLAG_COMMIT
                //|_FS_FILE_OPEN_FLAG_SECURE
                //|_FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST
                //|_FS_FILE_OPEN_FLAG_STATIC
                //|_FS_FILE_OPEN_FLAG_VENDOR
                |_FS_FILE_PUBLIC_WRITE
                //|_FS_FILE_PUBLIC_READ
                ;
    
        // Step through the array of images and load each to the file system
        for (Idx=0; Idx<NUM_HTTP_FILES; Idx++)
        {
    #ifdef DEBUG
    		printf("Source File %d: Name=%s, Size=%d\n", Idx, Http_Files[Idx].FileName,
    			   pal_Strlen(Http_Files[Idx].DataArray));
    #endif
    		// Check the current allocated file size
    		retVal = sl_FsGetInfo((_u8 *)Http_Files[Idx].FileName, Token, &myFileInfo);
    		// File found
    		if (retVal == 0)
    		{
    #ifdef DEBUG
    			printf("Previous version of %s found. Length=%d, Allocated=%d\n",
    				   Http_Files[Idx].FileName , myFileInfo.FileLen, myFileInfo.AllocatedLen);
    #endif
    			// Check for difference in size allocated
    			if (Http_Files[Idx].fsByteAllocation != (myFileInfo.AllocatedLen + FILE_HEADER_BYTE_SIZE))
    			{
    				// Delete the previous version
    				retVal = sl_FsDel((_u8 *)Http_Files[Idx].FileName, Token);
    				if(retVal < 0)
    				{
    #ifdef DEBUG
    					printf("Error in deleting file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    					g_hasPassed = false;
    				}
    				else
    				{
    					// Create a new one
    					retVal = sl_FsOpen((_u8 *)Http_Files[Idx].FileName,
    									   FS_MODE_OPEN_CREATE((Http_Files[Idx].fsByteAllocation-METADATA_SIZE),CreateFlags),
    									   &Token, &fileHandle);
    					if(retVal < 0)
    					{
    #ifdef DEBUG
    						printf("Error in creating file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    						g_hasPassed = false;
    					}
    #ifdef DEBUG
    					// Check File Size Allocation
    					retVal = sl_FsGetInfo((_u8 *)Http_Files[Idx].FileName, Token, &myFileInfo);
    					if (retVal == 0)
    					{
    						if (myFileInfo.AllocatedLen != (Http_Files[Idx].fsByteAllocation-FILE_HEADER_BYTE_SIZE))
    						{
    							printf("File allocated %d not %d\n", (myFileInfo.AllocatedLen+FILE_HEADER_BYTE_SIZE), Http_Files[Idx].fsByteAllocation);
    						}
    					}
    #endif
    				}
    			}
    			else
    			{
    				// Open the image file for writing
    				retVal = sl_FsOpen((_u8 *)Http_Files[Idx].FileName,
    								   FS_MODE_OPEN_WRITE, &Token, &fileHandle);
    				if(retVal < 0)
    				{
    #ifdef DEBUG
    					printf("Error in opening file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    					g_hasPassed = false;
    				}
    			}
    		}
    		else
    		{
    			// File Doesn't exist, so create a new one
    			retVal = sl_FsOpen((_u8 *)Http_Files[Idx].FileName,
    							   FS_MODE_OPEN_CREATE((Http_Files[Idx].fsByteAllocation-METADATA_SIZE),CreateFlags),
    							   &Token, &fileHandle);
    			if(retVal < 0)
    			{
    #ifdef DEBUG
    				printf("Error in creating file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    				g_hasPassed = false;
    			}
    #ifdef DEBUG
    			// Check File Size Allocation
    			retVal = sl_FsGetInfo((_u8 *)Http_Files[Idx].FileName, Token, &myFileInfo);
    			if (retVal == 0)
    			{
    				if (myFileInfo.AllocatedLen != (Http_Files[Idx].fsByteAllocation-FILE_HEADER_BYTE_SIZE))
    				{
    					printf("File allocated %d not %d\n", (myFileInfo.AllocatedLen+FILE_HEADER_BYTE_SIZE), Http_Files[Idx].fsByteAllocation);
    				}
    			}
    #endif
    		}
    
    		if (g_hasPassed)
    		{
    			// Write file
    			retVal = sl_FsWrite(fileHandle, (_u32)0,
    								(_u8 *)Http_Files[Idx].DataArray, Http_Files[Idx].DataByteSize);
    			if (retVal < 0)
    			{
    #ifdef DEBUG
    				printf("Error in writing file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    				g_hasPassed = false;
    			}
    			else
    			{
    #ifdef DEBUG
    				printf("Written %d bytes of %d for %s\n", retVal, pal_Strlen(Http_Files[Idx].DataArray), Http_Files[Idx].FileName);
    #endif
    			}
    
    			/* Close the user file */
    			retVal = sl_FsClose(fileHandle, 0, 0, 0);
    			if (retVal < 0)
    			{
    #ifdef DEBUG
    				printf("Error in closing file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    				g_hasPassed = false;
    			}
    		}
        }
    
        return g_hasPassed;
    }
    

    Thanks,

    Kevin

  • Hi Kevin,

    Thanks for the code. I will take a look and get back to you in 1-2 days.

    Best regards,

    Sarah

  • Hi Kevin,

    I am seeing similar results. I assume something about the content of the file itself is not rendering correctly.

    Typically, user files are loaded via the serial flash during production, rather then written from the application code. User files can also be updated by OTA methods. Is this an option for you?

    Best regards,

    Sarah

  • Sarah,

    Unfortunately this is an in-field upgrade, to a device that acts as an AP only, so I am unable to utilise those methods.
    I also think that programming the CC3100 flash by pushing down from the micro saves a step in production and would, therefore, be my preference there too.

    I have tried reducing the css file, to that within my html file, that I have been using to work around the issue, and that has the same problem.
    This means that the functions correctly work for html but not the css, with exactly the same content, so it appears to be something to do with the css filename/type.

    I have now discovered that exactly the same is true for a javascript .js file.
    I have been using the out_of_box example, with JQuery and have had to use CCS Uniflash to successfully load that too.
    To work around this I am going to have to embed the javascript into the html too, which means converting from JQuery to native javascript which will be a little more difficult that the internal css workaround.

    So far the filesystem driver only seems to be able to write html and png image files, of those that I have tried.

    Regards,

    Kevin.

  • Hi Kevin,

    Can you try flashing the file via UniFlash, read that file back as an array, and then use that array to create a new file? I'm hoping we can isolate if the issue is formatting or not.

    It also may be helpful if you can capture NWP logs, to see if there is an internal error we are missing. See the Capture NWP Logs section of the user's guide.

    Best regards,

    Sarah