What provider must be used, along with the client-side cursor library, to gain access to the Shape command language to create hierarchical record sets?