* When uploading to a Personal Shared Folder, do not display an error message about free space, as, due to it being a Shared Folder, no space details are ever provided
* Add isValidUTCDateTime function to validate timestamp as received from OneDrive API to ensure it is valid
* Use new function before attempting to call SysTime.fromISOExtString to ensure this call will be successful
* If there is no timestamp in the JSON, set it to the system time
* Add assertion when building an item from DB data
* Add new function (isValidUTF8) to check UTF-8 validity of a string before timestamp regex check
* In a --resync scenario, if the file hash is the same, use the online timestamp as source of truth
* Ensure that the session URL data is a valid JSON response before use
* Ensure a local time in UTC is being used if the JSON data has no date
* Ensure the DB is opened in the most threadsafe manner possible
* Add patch provided by @phlibi to add synchronized() around DB access methods
* Align timestamp creation method with itemdb if element is missing
* Ensure that the parent root of a given 'sync_list' entry is correctly processed if the rule contains N elements
* Update how 'sync_list' rule processing is logged
* Add debugging for createLocalPathStructure() function to ensure data is available if needed
* Fix 'std.json.JSONException@std/json.d(641): Key not found: id' when generating a /delta response for a personal shared folder
* Update 'sync_list' isPathExcluded() function as this was excluding paths that should be included, thus, when in --monitor mode, local changes that were valid for inclusion via inotify were being missed
* Due to the significant issues with Debian and it's default version of 'curl' ensure that the Debian Docker image will update 'curl' from the relevant backports repository to avoid these issues
* If 'sync_list' is being used, and the file online contains URL encoded items, and cannot be URL decoded, catch the exception generated and generate an error message regarding the issue to advise the user to rename the offending item online.
* When quota["remaining"].integer is converted, if negative, this leads to an issue due to 'ulong' type being used. Update how this value is converted, and the variable type to ensure that a negative number is stored as a negative number.
* Fix logging output by removing duplicate output
* Align logging messages to be consistent
* Fix up output alignment for '0' and 'Not Available'
* Add --enable-debug to Docker files when building client application so that if the client crashes in any way, there is some meaningful crash data available to diagnose and assist in fixing the actual issue encountered.
* The OneDrive API does not present a hash for all files, most notably those that are zero byte in size (this may be fixed by the OneDrive API in the future). Add a wrapper to the existing makeItem function to test the file size before working out if this is a going to be a problem and if it is, then print out an error message if the file size is greater than 0 including either the full filename path or the items id.
* Remove sha1 from being used by the client as this is being depreciated by Microsoft in July 2023 - https://devblogs.microsoft.com/microsoft365dev/deprecation-of-sha1hash-on-onedrive-personal/
* Complete the removal of crc32 as this is also no longer present for a long time, but some code elements still existed
* Only compute quickXorHash, not quickXorHash and sha256Hash as computing sha256Hash is CPU expensive
* Update cache database stored items to only store quickXorHash and sha256Hash values (remove crc32 and sha1)