[Turn on line numbering]arg gen, def, fltr, match; var ancs, data, pp, p; if (!.has_flag('variables, sender())) throw(~perm, sender() + " cannot read variables on " + this()); if (def) ancs = [def]; else ancs = .(gen[1])(gen[2]) || [this()]; data = []; for pp in (data().to_list().reverse()) { if (valid(pp[1]) && pp[1] in ancs) { for p in (pp[2]) { if (tostr(p[1]).(match)(fltr) != 0) data += [[pp[1], @p]]; } } } return data;
["// Created as a part of ColdCore, see: @help Credit"]