abandonware algorithm clickwrap computer software consequential damages contract copyleft digital millennium copyright act encryption free software license-free software list of software licenses precedent renting reverse engineering shrink wrap contract software license software patent trade secret uniform commercial code uniform computer information transactions act united states warranty