import json, base64, struct, sys d = json.load(open(sys.argv[1], encoding='utf-8-sig')) kd = base64.b64decode(d['m_KeyDataString']) bd = base64.b64decode(d['m_BucketDataString']) ed = base64.b64decode(d['m_EntryDataString']) ids = d['m_InternalIds'] provs = d['m_ProviderIds'] types = [t['m_ClassName'] for t in d['m_resourceTypes']] def read_key(off): t = kd[off]; off += 1 if t in (0, 1): n = struct.unpack_from('' bc = struct.unpack_from('= 0 else '' out = open(sys.argv[2], 'w', encoding='utf-8') out.write('key\tprimaryKey\tinternalId\ttype\tprovider\tdependencyKey\n') for k, (doff, ents) in zip(keys, buckets): for ei in ents: iid, prov, pk, rt, dep = row(entries[ei]) out.write(f'{k}\t{pk}\t{iid}\t{rt}\t{prov.split(".")[-1]}\t{dep}\n') out.close() print(len(keys), 'keys', ec, 'entries')