static L localSoftwareMadeWebs() { new Matches m; new L programsToScan; for (S s : listFileNames(getProgramDir(circlesEditorDBID()))) pcall { if (swic(s, "webs.posted.at.", m)) programsToScan.add(fsI($1)); } new L webs; for (S progID : programsToScan) pcall { L l = scanLog_safeUnstructure(progID, "webs-made.txt"); for (O o : l) pcall { S structure = (S) getOpt(o, 'structure); if (structure != null) webs.add((Web) unstructure(structure)); } } ret webs; }