
http://example.com/foo/bar
)'),
'proto-rel' => t('Protocol relative URL (//example.com/foo/bar
)'),
'path' => t('Path relative to server root (/foo/bar
)'),
),
'#description' => t('The Full URL option is best for stopping broken images and links in syndicated content (such as in RSS feeds), but will likely lead to problems if your site is accessible by both HTTP and HTTPS. Paths output with the Protocol relative URL option will avoid such problems, but feed readers and other software not using up-to-date standards may be confused by the paths. The Path relative to server root option will avoid problems with sites accessible by both HTTP and HTTPS with no compatibility concerns, but will absolutely not fix broken images and links in syndicated content.'),
'#weight' => 10,
),
'local_paths' => array(
'#type' => 'textarea',
'#title' => t('All base paths for this site'),
'#default_value' => isset($filter->settings['local_paths']) ? $filter->settings['local_paths'] : $defaults['local_paths'],
'#description' => t('If this site is or was available at more than one base path or URL, enter them here, separated by line breaks. For example, if this site is live at http://example.com/
but has a staging version at http://dev.example.org/staging/
, you would enter both those URLs here. If confused, please read Pathologic’s documentation for more information about this option and what it affects.', array('!docs' => 'http://drupal.org/node/257026')),
'#weight' => 20,
),
);
}
/**
* Pathologic filter callback.
*
* Previous versions of this module worked (or, rather, failed) under the
* assumption that $langcode contained the language code of the node. Sadly,
* this isn't the case.
* @see http://drupal.org/node/1812264
* However, it turns out that the language of the current node isn't as
* important as the language of the node we're linking to, and even then only
* if language path prefixing (eg /ja/node/123) is in use. REMEMBER THIS IN THE
* FUTURE, ALBRIGHT.
*
* The below code uses the @ operator before parse_url() calls because in PHP
* 5.3.2 and earlier, parse_url() causes a warning of parsing fails. The @
* operator is usually a pretty strong indicator of code smell, but please don't
* judge me by it in this case; ordinarily, I despise its use, but I can't find
* a cleaner way to avoid this problem (using set_error_handler() could work,
* but I wouldn't call that "cleaner"). Fortunately, Drupal 8 will require at
* least PHP 5.3.5, so this mess doesn't have to spread into the D8 branch of
* Pathologic.
* @see https://drupal.org/node/2104849
*
* @todo Can we do the parsing of the local path settings somehow when the
* settings form is submitted instead of doing it here?
*/
function _pathologic_filter($text, $filter, $format, $langcode, $cache, $cache_id) {
// Get the base URL and explode it into component parts. We add these parts
// to the exploded local paths settings later.
global $base_url;
$base_url_parts = @parse_url($base_url . '/');
// Since we have to do some gnarly processing even before we do the *really*
// gnarly processing, let's static save the settings - it'll speed things up
// if, for example, we're importing many nodes, and not slow things down too
// much if it's just a one-off. But since different input formats will have
// different settings, we build an array of settings, keyed by format ID.
$cached_settings = &drupal_static(__FUNCTION__, array());
if (!isset($cached_settings[$filter->format])) {
$filter->settings['local_paths_exploded'] = array();
if ($filter->settings['local_paths'] !== '') {
// Build an array of the exploded local paths for this format's settings.
// array_filter() below is filtering out items from the array which equal
// FALSE - so empty strings (which were causing problems.
// @see http://drupal.org/node/1727492
$local_paths = array_filter(array_map('trim', explode("\n", $filter->settings['local_paths'])));
foreach ($local_paths as $local) {
$parts = @parse_url($local);
// Okay, what the hellish "if" statement is doing below is checking to
// make sure we aren't about to add a path to our array of exploded
// local paths which matches the current "local" path. We consider it
// not a match, if…
// @todo: This is pretty horrible. Can this be simplified?
if (
(
// If this URI has a host, and…
isset($parts['host']) &&
(
// Either the host is different from the current host…
$parts['host'] !== $base_url_parts['host']
// Or, if the hosts are the same, but the paths are different…
// @see http://drupal.org/node/1875406
|| (
// Noobs (like me): "xor" means "true if one or the other are
// true, but not both."
(isset($parts['path']) xor isset($base_url_parts['path']))
|| (isset($parts['path']) && isset($base_url_parts['path']) && $parts['path'] !== $base_url_parts['path'])
)
)
) ||
// Or…
(
// The URI doesn't have a host…
!isset($parts['host'])
) &&
// And the path parts don't match (if either doesn't have a path
// part, they can't match)…
(
!isset($parts['path']) ||
!isset($base_url_parts['path']) ||
$parts['path'] !== $base_url_parts['path']
)
) {
// Add it to the list.
$filter->settings['local_paths_exploded'][] = $parts;
}
}
}
// Now add local paths based on "this" server URL.
$filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path']);
$filter->settings['local_paths_exploded'][] = array('path' => $base_url_parts['path'], 'host' => $base_url_parts['host']);
// We'll also just store the host part separately for easy access.
$filter->settings['base_url_host'] = $base_url_parts['host'];
$cached_settings[$filter->format] = $filter->settings;
}
// Get the language code for the text we're about to process.
$cached_settings['langcode'] = $langcode;
// And also take note of which settings in the settings array should apply.
$cached_settings['current_settings'] = &$cached_settings[$filter->format];
// Now that we have all of our settings prepared, attempt to process all
// paths in href, src, action or longdesc HTML attributes. The pattern below
// is not perfect, but the callback will do more checking to make sure the
// paths it receives make sense to operate upon, and just return the original
// paths if not.
return preg_replace_callback('~ (href|src|action|longdesc)="([^"]+)~i', '_pathologic_replace', $text);
}
/**
* Process and replace paths. preg_replace_callback() callback.
*/
function _pathologic_replace($matches) {
// Get the base path.
global $base_path;
// Get the settings for the filter. Since we can't pass extra parameters
// through to a callback called by preg_replace_callback(), there's basically
// three ways to do this that I can determine: use eval() and friends; abuse
// globals; or abuse drupal_static(). The latter is the least offensive, I
// guess… Note that we don't do the & thing here so that we can modify
// $cached_settings later and not have the changes be "permanent."
$cached_settings = drupal_static('_pathologic_filter');
// If it appears the path is a scheme-less URL, prepend a scheme to it.
// parse_url() cannot properly parse scheme-less URLs. Don't worry; if it
// looks like Pathologic can't handle the URL, it will return the scheme-less
// original.
// @see https://drupal.org/node/1617944
// @see https://drupal.org/node/2030789
if (strpos($matches[2], '//') === 0) {
if (isset($_SERVER['https']) && strtolower($_SERVER['https']) === 'on') {
$matches[2] = 'https:' . $matches[2];
}
else {
$matches[2] = 'http:' . $matches[2];
}
}
// Now parse the URL after reverting HTML character encoding.
// @see http://drupal.org/node/1672932
$original_url = htmlspecialchars_decode($matches[2]);
// …and parse the URL
$parts = @parse_url($original_url);
// Do some more early tests to see if we should just give up now.
if (
// If parse_url() failed, give up.
$parts === FALSE
|| (
// If there's a scheme part and it doesn't look useful, bail out.
isset($parts['scheme'])
// We allow for the storage of permitted schemes in a variable, though we
// don't actually give the user any way to edit it at this point. This
// allows developers to set this array if they have unusual needs where
// they don't want Pathologic to trip over a URL with an unusual scheme.
// @see http://drupal.org/node/1834308
// "files" and "internal" are for Path Filter compatibility.
&& !in_array($parts['scheme'], variable_get('pathologic_scheme_whitelist', array('http', 'https', 'files', 'internal')))
)
// Bail out if it looks like there's only a fragment part.
|| (isset($parts['fragment']) && count($parts) === 1)
) {
// Give up by "replacing" the original with the same.
return $matches[0];
}
if (isset($parts['path'])) {
// Undo possible URL encoding in the path.
// @see http://drupal.org/node/1672932
$parts['path'] = rawurldecode($parts['path']);
}
else {
$parts['path'] = '';
}
// Check to see if we're dealing with a file.
// @todo Should we still try to do path correction on these files too?
if (isset($parts['scheme']) && $parts['scheme'] === 'files') {
// Path Filter "files:" support. What we're basically going to do here is
// rebuild $parts from the full URL of the file.
$new_parts = @parse_url(file_create_url(file_default_scheme() . '://' . $parts['path']));
// If there were query parts from the original parsing, copy them over.
if (!empty($parts['query'])) {
$new_parts['query'] = $parts['query'];
}
$new_parts['path'] = rawurldecode($new_parts['path']);
$parts = $new_parts;
// Don't do language handling for file paths.
$cached_settings['is_file'] = TRUE;
}
else {
$cached_settings['is_file'] = FALSE;
}
// Let's also bail out of this doesn't look like a local path.
$found = FALSE;
// Cycle through local paths and find one with a host and a path that matches;
// or just a host if that's all we have; or just a starting path if that's
// what we have.
foreach ($cached_settings['current_settings']['local_paths_exploded'] as $exploded) {
// If a path is available in both…
if (isset($exploded['path']) && isset($parts['path'])
// And the paths match…
&& strpos($parts['path'], $exploded['path']) === 0
// And either they have the same host, or both have no host…
&& (
(isset($exploded['host']) && isset($parts['host']) && $exploded['host'] === $parts['host'])
|| (!isset($exploded['host']) && !isset($parts['host']))
)
) {
// Remove the shared path from the path. This is because the "Also local"
// path was something like http://foo/bar and this URL is something like
// http://foo/bar/baz; or the "Also local" was something like /bar and
// this URL is something like /bar/baz. And we only care about the /baz
// part.
$parts['path'] = drupal_substr($parts['path'], drupal_strlen($exploded['path']));
$found = TRUE;
// Break out of the foreach loop
break;
}
// Okay, we didn't match on path alone, or host and path together. Can we
// match on just host? Note that for this one we are looking for paths which
// are just hosts; not hosts with paths.
elseif ((isset($parts['host']) && !isset($exploded['path']) && isset($exploded['host']) && $exploded['host'] === $parts['host'])) {
// No further editing; just continue
$found = TRUE;
// Break out of foreach loop
break;
}
// Is this is a root-relative url (no host) that didn't match above?
// Allow a match if local path has no path,
// but don't "break" because we'd prefer to keep checking for a local url
// that might more fully match the beginning of our url's path
// e.g.: if our url is /foo/bar we'll mark this as a match for
// http://example.com but want to keep searching and would prefer a match
// to http://example.com/foo if that's configured as a local path
elseif (!isset($parts['host']) && (!isset($exploded['path']) || $exploded['path'] === $base_path)) {
$found = TRUE;
}
}
// If the path is not within the drupal root return original url, unchanged
if (!$found) {
return $matches[0];
}
// Okay, format the URL.
// If there's still a slash lingering at the start of the path, chop it off.
$parts['path'] = ltrim($parts['path'],'/');
// Examine the query part of the URL. Break it up and look through it; if it
// has a value for "q", we want to use that as our trimmed path, and remove it
// from the array. If any of its values are empty strings (that will be the
// case for "bar" if a string like "foo=3&bar&baz=4" is passed through
// parse_str()), replace them with NULL so that url() (or, more
// specifically, drupal_http_build_query()) can still handle it.
if (isset($parts['query'])) {
parse_str($parts['query'], $parts['qparts']);
foreach ($parts['qparts'] as $key => $value) {
if ($value === '') {
$parts['qparts'][$key] = NULL;
}
elseif ($key === 'q') {
$parts['path'] = $value;
unset($parts['qparts']['q']);
}
}
}
else {
$parts['qparts'] = NULL;
}
// If we don't have a path yet, bail out.
if (!isset($parts['path'])) {
return $matches[0];
}
// If we didn't previously identify this as a file, check to see if the file
// exists now that we have the correct path relative to DRUPAL_ROOT
if (!$cached_settings['is_file']) {
$cached_settings['is_file'] = !empty($parts['path']) && is_file(DRUPAL_ROOT . '/'. $parts['path']);
}
// Okay, deal with language stuff.
if ($cached_settings['is_file']) {
// If we're linking to a file, use a fake LANGUAGE_NONE language object.
// Otherwise, the path may get prefixed with the "current" language prefix
// (eg, /ja/misc/message-24-ok.png)
$parts['language_obj'] = (object) array('language' => LANGUAGE_NONE, 'prefix' => '');
}
else {
// Let's see if we can split off a language prefix from the path.
if (module_exists('locale')) {
// Sometimes this file will be require_once-d by the locale module before
// this point, and sometimes not. We require_once it ourselves to be sure.
require_once DRUPAL_ROOT . '/includes/language.inc';
list($language_obj, $path) = language_url_split_prefix($parts['path'], language_list());
if ($language_obj) {
$parts['path'] = $path;
$parts['language_obj'] = $language_obj;
}
}
}
// If we get to this point and $parts['path'] is now an empty string (which
// will be the case if the path was originally just "/"), then we
// want to link to Este sábado 14 de agosto, la Fundación Arteria, en alianza con la Fundación Gilberto Alzate Avendaño, presenta nuevamente los ArteCircuitos en modalidad virtual, realizando un recorrido por los talleres de 8 artistas del sector de San Diego, localidad de Santa Fe (Bogotá). Los ArteCircuitos serán emitidos a partir de las 2 p. m. por www.facebook.com/arteriap, www.periodicoarteria.com, www.facebook.com/fundaciongilbertoalzate y www.fuga.gov.co.
En esta tercera versión de los ArteCircuitos en modalidad virtual, los artistas dan a conocer los espacios íntimos que son sus talleres, dando luz sobre sus procesos creativos y las propuestas que allí plasman, especialmente aquéllas realizadas en tiempos de pandemia.
Al igual que en los ArteCircuitos presenciales, esta nueva forma de vivir la experiencia del arte mantiene la vinculación con comercios de la zona, de manera que puedas disfrutar de la oferta cultural y gastronómica que ofrece el centro de Bogotá. Utilizando el código #ArteCircuitos, se podrán redimir descuentos y beneficios en los lugares aliados del evento.
Es así como el programa ArteCircuitos sigue siendo como una plataforma para la articulación de las ofertas culturales y artísticas en diferentes zonas de la ciudad, que apunta al crecimiento y robustecimiento de estos sectores mediante el apoyo a las actividades de circulación de los lugares que integran los Circuitos, a la vez que desarrolla procesos de formación e intercambio de conocimientos y experiencias.
Desde su inicio en 2016, el programa ArteCircuitos, de la Fundación Arteria, ha realizado 77 recorridos, tanto en modalidad presencial como virtual, en siete zonas diferentes de Bogotá, en municipios vecinos, como Cajicá, Tobia, Tenjo y Subachoque, en Cundinamarca; y en ciudades de otros departamentos como Villa de Leyva (Boyacá), Villavicencio, Pereira y Barranquilla.
También han sido realizados ArteCircuitos especiales para eventos como el IX Premio Luis Caballero, los XVI Salones Regionales de Artistas y el 45 Salón Nacional de Artistas. A través de este programa, han sido beneficiadas más de 94.600 personas.
Programación de los ArteCircuitos de San Diego
Agéndate el próximo sábado 14 de agosto para asistir desde las 2 p. m. a los recorridos virtuales por los talleres de 8 artistas de San Diego:
Lina Alba. Las Nieves
En su obra se manifiesta la necesidad de encontrar nuevos mitos, nuevas maneras de comprender la realidad, maneras de relacionarnos para comprender la verdadera esencia colectiva, que no inicia sólo en las luchas comunes, sino más bien en las relaciones directas con quienes rodeamos y nos rodean, amigos y desconocidos. El individuo en guerra con el ciudadano, el grito, el gran hermano.
Carolina Convers. La Macarena
Invoca consistentemente la figura femenina, enfocándose en la construcción de lo que la sociedad considera como femenino: el arquetipo virtuoso e ideal, contenido en la mujer oprimida, ordenada, obediente y sumisa. Así, su obra alude a aquello que confrontamos permanentemente en nuestra cotidianidad: la sociedad, nuestras creencias, nuestra vaga existencia y, por encima de todo, nosotros mismos.
Érika Díaz. Las Nieves
Ha desarrollado su trabajo a partir de la práctica tridimensional, experimentando varias formas alrededor de la cerámica y del vestido, explorando sus posibilidades, no a través de las telas, sino con diferentes materiales. Con esto, explora temas como la identidad, la honestidad y tabús con respecto al cuerpo.
Vicenta Victoria Gómez. Veracruz
Encuentra en su vida, en las cosas que la rodean –en lo que observa, camina, respira y siente– potencias de creación que desarrolla a través de diversos medios plásticos como el dibujo, la escultura, la instalación, la acción y el vídeo. En sus experiencias de trabajo, los medios plásticos suelen desbordarse y transgredir el límite en su definición. Su trabajo también se caracteriza por la serialidad y repetición como métodos de investigación.
Édgar Guzmanruiz. Las Nieves
Busca construir puentes de relación entre arte y arquitectura, en intervenciones que se intersectan, se superponen, se desbordan o son contenidas por el espacio de exhibición. Mientras unas obras están más ligadas al contexto del lugar de exposición, otras buscan una comunicación universal, más allá de una cultura específica. Así, son constantes la utilización de pocos elementos, y el interés por la sombra, el vacío, la ausencia, las huellas del tiempo, la muerte.
Jaime Franco. Las Nieves
Su obra se debate entre dos maneras de aproximarse al objeto artístico: la cuidadosa reconstrucción de estructuras arquitectónicas, donde todo es realizado a través de rigurosos cálculos matemáticos, y el intento por descubrir la naturaleza misma de la pintura, las relaciones muchas veces accidentales que se dan entre los colores, las formas y los trazos en su recorrido por la superficie del lienzo.
Luis Luna. Las Nieves
Alquimista del color que, a través de su peculiar forma de manejar el espacio, el tiempo y la imagen, ha revitalizado la pintura con la yuxtaposición de materiales y ensamblajes sin salirse de su extraordinario lenguaje pictórico. Su obra logra estimular reflexiones, sugerir actitudes, incitar perspectivas, enfoques y visiones, en una especie de comunicación interactiva en la cual el artista provee el punto de partida, y el observador suministra el ánimo, la búsqueda y su particular orientación.
Gustavo Villa. Las Nieves
Sus objetos, acciones e intervenciones son el resultado de las distintas mediaciones de procesos que buscan cargar el material y la imagen de una suerte de energía susceptible de verse como un rastro acumulativo de experiencia vital. Así, desatan su fuerza mediante diálogos transdisciplinares, en donde el cruce mediático amplía y problematiza la misma noción de “medio” a través de complejas e híbridas relaciones formales difíciles de clasificar.
Aliados
Desde el día del evento y hasta el sábado 21 de agosto, los espectadores podrán redimir los siguientes beneficios en los comercios del centro de Bogotá utilizando el código #ArteCircuitos:
Alejandría Libro. Las Aguas.
Un lugar para la compra de libros, sitio cultural, entretenimiento y buen rock. Con el uso del código de #ArteCircuitos, por compras mayores a un valor de $50.000, se dará un descuento del 15% del valor total de la compra en libros y productos del café.
Calle 19 # 4-71 Local 227. WhatsApp: 3202216674. Envíos a nivel nacional, con recargo por la entrega.
Atención de lunes a domingo.
Almacén Soluciones. La Macarena.
Desde 1979, Soluciones comercializa productos de regalo elaborados en Colombia. Con el uso del código de #ArteCircuitos, recibe un descuento del 10% en todos los productos.
Torres del Parque, en la Cra. 5 # 26C -15.
Atención de lunes a sábado.
Ázimos. La Macarena.
Panadería, pastelería, restaurante y café que trabaja día a día con técnicas artesanales, ingredientes e insumos naturales, de pequeños y medianos proveedores en su mayoría locales.
Con el uso del código de #ArteCircuitos, recibe un descuento del 10% en la cuenta de servicio a la mesa (válido sólo para productos consumidos en el local, no incluye productos de la tienda ni domicilios).
Carrera 5 # 26C-54.
Atención de martes a domingo.
Benito Gastro Bar. La Candelaria.
Ubicado en la entrada principal del Chorro de Quevedo, trae una propuesta de cocina y coctelería ancestral en un ambiente retro que te transporta en el tiempo. Además, es un espacio petfriendly.
Con el uso del código de #ArteCircuitos, recibe un descuento del 10% del total de la cuenta.
Calle 12B # 1A-70.
Atención de lunes a domingo.
Café Origami. La Macarena.
Espacio para disfrutar del diseño y del arte, especialmente el origami. Cuenta con una amplia gama de especialidades en café, bebidas, deliciosos platos y servicios especiales.
Con el uso del código de #ArteCircuitos, recibe un descuento del 10% en productos del menú y un video tutorial de origami de ‘¿Cómo hacer una nutria en origami?’.
Carrera 4A # 26C-04.
Atención de miércoles a domingo.
El Aquelarre. La Candelaria.
Restaurante-bar con la mejor gastronomía y mixología de autor de la ciudad, las más misteriosas recetas y el ambiente más exclusivo del centro histórico. Ubicado en el corazón de La Candelaria, con espectáculos de música en vivo los fines de semana.
Con el uso del código de #ArteCircuitos, recibe un descuento del 10% del total de la cuenta.
Calle 11 # 2-80.
Atención de lunes a domingo.
Govindas. Las Nieves.
Restaurante vegetariano reconocido en el centro de Bogotá. Con el uso del código de #ArteCircuitos, recibe un descuento del 5% en el menú del día y en cuatro especiales: el filete vegetariano, la hamburguesa en combo, los tamales tolimenses vegetarianos y la lasaña.
Calle 20 # 6-35. WhatsApp: 3152666155.
Cobertura en el centro de Bogotá, entre la carrera 2 y la Caracas, al norte hasta la Macarena y al sur hasta la plaza de Bolívar, con recargo por el domicilio.
Atención de lunes a domingo.
Groso Pastelería Argentina. La Macarena y La Candelaria.
Café con productos y sabores argentinos en la ciudad de Bogotá. Con el uso del código de #ArteCircuitos, recibe un descuento del 20% en compras superiores a $20.000.
Cra. 4A 26C-05 y Cra. 3 # 11-24. WhatsApp: 3209970468.
Área de cobertura: Toda Bogotá, con recargo por el domicilio según la ubicación.
Atención de lunes a domingo.
Ilhe Habana. La Macarena.
Un rincón de Cuba en Bogotá, para degustar la cocina y coctelería cubana y deleitarse al ritmo de sones, cha cha chá, mambo y boleros. Con el uso del código de #ArteCircuitos, recibe un descuento del 10% del total de la cuenta.
Cra. 3A # 26B-72. Teléfono: 2848169. WhatsApp: 3115350242.
Área de cobertura: Toda Bogotá, con recargo por el domicilio.
Atención de lunes a domingo.
Lachoco Latera Chocolatería. La Macarena.
Chocolate artesanal hecho a mano a base de manteca de cacao, además de productos elaborados con ingredientes naturales, sin aditivos, preservantes, conservantes, saborizantes o aromas artificiales.
Con el uso del código de #ArteCircuitos, recibe un descuento del 10% en productos marca Lachoco.
Cra. 4A # 26B-12. WhatsApp: 3012985389.
Área de cobertura: Toda Bogotá, con recargo por el domicilio.
Atención de lunes a domingo.
Sandwich Taller. La Macarena.
Espacio de investigación de la cocina colombiana hecha a fuego lento y a la brasa, con panes caseros del día, jugos y rones del mundo. Con el uso del código de #ArteCircuitos, recibe un descuento del 15% en toda la carta.
Cra. 4A # 27-57. Teléfono: 8054645. WhatsApp: 3133565151.
Área de cobertura: 5 km a la redonda del local, con recargo por el domicilio.
Atención de lunes a domingo.
Santa Fe Cafe & Restaurante. La Macarena.
Santa Fe es un Café & Restaurante de cocina colombiana tradicional y de autor, reconocido como el Mejor Restaurante de Nueva Cocina Colombiana 2019 en los Premios La Barra, también como el lugar del Mejor Ajiaco Tradicional en Bogotá por La Academia Colombiana de Gastronomía y la Alcaldía Distrital.
Con el uso del código de #ArteCircuitos, recibe un descuento del 20% por consumos a domicilio, y para consumos en el restaurante se dará una Copa de Vino Argentino Joven Cepa Bonarda como acompañante del plato fuerte.
Calle 26B 4 # 4-30. Celular: 3183705338.
Área de cobertura: Toda Bogotá, con recargo por el domicilio y solicitando con tiempo.
Atención de lunes a domingo.
Nota: Los descuentos que se ofrecen serán redimibles entre el 14 y 21 de agosto. La cobertura, los horarios y horas de atención corresponden a cada uno de los aliados.
Sigue la transmisión por www.facebook.com/arteriap, www.periodicoarteria.com, www.facebook.com/fundaciongilbertoalzate y www.fuga.gov.co.
#ArteCircuitos #LaExperienciadelArte #FundaciónArteria #YoLeoArteria