docs: function parse_xlsxcfb(cfb, _opts) {
  	var opts = _opts || {};
  	var f = 'Workbook', data = CFB.find(cfb, f);
  	try {
  	f = '/!DataSpaces/Version';
  	data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);
  	/*var version = */parse_DataSpaceVersionInfo(data.content);
  
  	/* 2.3.4.1 */
  	f = '/!DataSpaces/DataSpaceMap';
  	data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);
  	var dsm = parse_DataSpaceMap(data.content);
  	if(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage")
  		throw new Error("ECMA-376 Encrypted file bad " + f);
  
  	/* 2.3.4.2 */
  	f = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';
  	data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);
  	var seds = parse_DataSpaceDefinition(data.content);
  	if(seds.length != 1 || seds[0] != "StrongEncryptionTransform")
  		throw new Error("ECMA-376 Encrypted file bad " + f);
  
  	/* 2.3.4.3 */
  	f = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';
  	data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);
  	/*var hdr = */parse_Primary(data.content);
  	} catch(e) {}
  
  	f = '/EncryptionInfo';
  	data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);
  	var einfo = parse_EncryptionInfo(data.content);
  
  	/* 2.3.4.4 */
  	f = '/EncryptedPackage';
  	data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f);
  
  /*global decrypt_agile */
  if(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || "", opts);
  /*global decrypt_std76 */
  if(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || "", opts);
  	throw new Error("File is password-protected");
  }