(.require [library [lux (.except) [abstract [equivalence (.only Equivalence)]] [data [binary (.only Binary)] ["[0]" sum] ["[0]" product]]]] ["[0]" /// ["[1][0]" hash (.only Hash SHA1 MD5)]]) (type .public Status (Variant {#Unverified} {#Partial (Either (Hash SHA1) (Hash MD5))} {#Verified (Hash SHA1) (Hash MD5)})) (def any_equivalence (Equivalence Any) (implementation (def (= _ _) true))) (def .public equivalence (Equivalence Status) (all sum.equivalence ..any_equivalence (all sum.equivalence ///hash.equivalence ///hash.equivalence) (all product.equivalence ///hash.equivalence ///hash.equivalence) )) (def .public (verified payload) (-> Binary Status) {#Verified (///hash.sha1 payload) (///hash.md5 payload)})