/** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ /** * @file * Pathologic text filter for Drupal. * * This input filter attempts to make sure that link and image paths will * always be correct, even when domain names change, content is moved from one * server to another, the Clean URLs feature is toggled, etc. */ /** * Implements hook_filter_info(). */ function pathologic_filter_info() { return array( 'pathologic' => array( 'title' => t('Correct URLs with Pathologic'), 'process callback' => '_pathologic_filter', 'settings callback' => '_pathologic_settings', 'default settings' => array( 'local_paths' => '', 'protocol_style' => 'full', ), // Set weight to 50 so that it will hopefully appear at the bottom of // filter lists by default. 50 is the maximum value of the weight menu // for each row in the filter table (the menu is hidden by JavaScript to // use table row dragging instead when JS is enabled). 'weight' => 50, ) ); } /** * Settings callback for Pathologic. */ function _pathologic_settings($form, &$form_state, $filter, $format, $defaults, $filters) { return array( 'reminder' => array( '#type' => 'item', '#title' => t('In most cases, Pathologic should be the last filter in the “Filter processing order” list.'), '#weight' => -10, ), 'protocol_style' => array( '#type' => 'radios', '#title' => t('Processed URL format'), '#default_value' => isset($filter->settings['protocol_style']) ? $filter->settings['protocol_style'] : $defaults['protocol_style'], '#options' => array( 'full' => t('Full URL (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 . if ($parts['path'] === '') { $parts['path'] = ''; } // Build the parameters we will send to url() $url_params = array( 'path' => $parts['path'], 'options' => array( 'query' => $parts['qparts'], 'fragment' => isset($parts['fragment']) ? $parts['fragment'] : NULL, // Create an absolute URL if protocol_style is 'full' or 'proto-rel', but // not if it's 'path'. 'absolute' => $cached_settings['current_settings']['protocol_style'] !== 'path', // If we seem to have found a language for the path, pass it along to // url(). Otherwise, ignore the 'language' parameter. 'language' => isset($parts['language_obj']) ? $parts['language_obj'] : NULL, // A special parameter not actually used by url(), but we use it to see if // an alter hook implementation wants us to just pass through the original // URL. 'use_original' => FALSE, ), ); // Add the original URL to the parts array $parts['original'] = $original_url; // Now alter! // @see http://drupal.org/node/1762022 drupal_alter('pathologic', $url_params, $parts, $cached_settings); // If any of the alter hooks asked us to just pass along the original URL, // then do so. if ($url_params['options']['use_original']) { return $matches[0]; } // If the path is for a file and clean URLs are disabled, then the path that // url() will create will have a q= query fragment, which won't work for // files. To avoid that, we use this trick to temporarily turn clean URLs on. // This is horrible, but it seems to be the sanest way to do this. // @see http://drupal.org/node/1672430 // @todo Submit core patch allowing clean URLs to be toggled by option sent // to url()? if (!empty($cached_settings['is_file'])) { $cached_settings['orig_clean_url'] = !empty($GLOBALS['conf']['clean_url']); if (!$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = TRUE; } } // Now for the url() call. Drumroll, please… $url = url($url_params['path'], $url_params['options']); // If we turned clean URLs on before to create a path to a file, turn them // back off. if ($cached_settings['is_file'] && !$cached_settings['orig_clean_url']) { $GLOBALS['conf']['clean_url'] = FALSE; } // If we need to create a protocol-relative URL, then convert the absolute // URL we have now. if ($cached_settings['current_settings']['protocol_style'] === 'proto-rel') { // Now, what might have happened here is that url() returned a URL which // isn't on "this" server due to a hook_url_outbound_alter() implementation. // We don't want to convert the URL in that case. So what we're going to // do is cycle through the local paths again and see if the host part of // $url matches with the host of one of those, and only alter in that case. $url_parts = @parse_url($url); if (!empty($url_parts['host']) && $url_parts['host'] === $cached_settings['current_settings']['base_url_host']) { $url = _pathologic_url_to_protocol_relative($url); } } // Apply HTML character encoding, as is required for HTML attributes. // @see http://drupal.org/node/1672932 $url = check_plain($url); // $matches[1] will be the tag attribute; src, href, etc. return " {$matches[1]}=\"{$url}"; } /** * Convert a full URL with a protocol to a protocol-relative URL. * * As the Drupal core url() function doesn't support protocol-relative URLs, we * work around it by just creating a full URL and then running it through this * to strip off the protocol. * * Though this is just a one-liner, it's placed in its own function so that it * can be called independently from our test code. */ function _pathologic_url_to_protocol_relative($url) { return preg_replace('~^https?://~', '//', $url); } EL VUELO DE MILLARAY, COMUNERA MAPUCHE | SICSAL

Se encuentra usted aquí

EL VUELO DE MILLARAY, COMUNERA MAPUCHE

Autor | Autores: 
José Frías del Santo

Millaray Cayuqueo, nació en los campos cercanos a la  Comunidad de Chol Chol, en el Wallmapu al sur de Chile. Su familia, que era numerosa y muy pobre,  pronto le enseñó que ser mapuche es como una herencia maldita, que urge olvidar la lengua, las costumbres ancestrales y asumir la cultura huinca para librarse del estigma discriminatorio con que se ha tratado a su pueblo por generaciones,  desde la conquista española y la posterior invasión militar chilena.

Millaray, con apenas 14 años, fue arrancada de sus raíces y enviada a la capital del país, Santiago, como tantas hermanas de su pueblo, a trabajar de empleada en hogares acomodados,  cuyos modales muy a menudo “modernos y consumistas” se impregnan en el  alma de estas jóvenes, hasta generar en su espíritu un desgarro lapidario  de sus raíces a las que pronto aprenden a despreciar.

Por suerte, Millaray pronto conoció Anecap, una organización de mujeres empleadas domésticas, donde se respetaba su condición de trabajadora y valoraba su cosmovisión, y donde no sólo pudo reafirmar su ancestral pasado, sino que, además, alimentar y poner al servicio de las compañeras de labores sus cualidades de líder. Junto con ello conoció el amor, tuvo hijos y también el dolor de la pronta separación dado que Luis, su pareja, buscó solucionar las penurias económicas con alcohol. Se destruyó la convivencia, la ternura, el respeto  y  todo un proceso en poco tiempo terminó.

A partir de aquello, sintió la libertad para iniciar una nueva etapa en subida y pronto nació en  su corazón una nostalgia que  se convirtió en un ardiente deseo de volver a vivir en las tierras de las que nunca deseó partir. Y regresó al cobijo de la familia. La emoción de recorrer de nuevo sus campos fue algo mágico, pues habían pasado 22 años desde su partida. Pero la alegría duró poco; a medida que fue visitando a sus amistades y parientes cercanos, le contaban los atropellos que  venían sufriendo por parte de las fuerzas policiales, judiciales y, en suma, del Estado. Todo aquello  le abrumaba.

Unos le  narraban del maltrato a los huerkenes y machis, por el solo hecho de liderar las comunidades más organizadas.  Otros se referían acerca  de los jóvenes baleados  y muertos por la espalda o gravemente heridos.

Más allá, le hablaban de la violencia con que las policías irrumpían en sus hogares, con bombas lacrimógenas, perdigones, balas de goma y de metal, rompiendo todo, aterrorizando a los y las pequeñas, golpeando, con insultos racistas,  amarrando a los niños, atropellando a sus madres, estableciendo procedimientos sistemáticos de tortura psicológica y deteniendo a cuanto mapuche joven encontraban en su camino.

Pudo saber que, tras ser detenidos, sufrían crueles torturas, obligándoles a inculparse de acciones que a menudo  realizaban infiltrados de la misma policía.

 Puestos a disposición judicial, casi siempre les aplicaban una ley de la dictadura, llamada ley antiterrorista, que viola todas las garantías procesales y el debido proceso según normas internacionales.   Creaban  “montajes aberrantes” que no se sostenían en prueba alguna. Pero igual la prensa y otros medios del sistema, se encargaba de mostrarles como feroces criminales  ante toda la opinión pública, para terminar su calvario en inhumanos presidios, de los que muchos debieron esperar largos años hasta poder demostrar en tribunales su inocencia.

Especial presión aplicaban a los- las jóvenes comprometidos en la causa de recuperación de tierras, interrogando y deteniendo, hasta en el interior de sus colegios. 

Millaray no podía creer todo lo que estaba  escuchando hasta el día en que visitaba a la machi Adriana Loncomilla se encontró con un allanamiento, luego del cual la dejaron amarrada y tirada  en el suelo, con todo su cuerpo golpeado, sangrando, y  sus dos hijos pequeños solos,  a su lado, llorando desesperadamente. Esa noche Millaray no pudo dormir de pena e impotencia.

A la mañana siguiente,  buscó a su querido abuelo Juan y, sin poder contener las lagrimas,  le preguntó: “abuelo, ¿porqué están haciendo esto con nuestro pueblo?”

El abuelo Juan se sintió conmovido por la congoja de Millaray, así es que  preparó su mate y se dispuso  a explicarle:

“Mi querida Millaray, en todo nuestro continente el colonialismo e imperio, a través de luchas sangrientas, han pulverizado tradiciones enteras y han profanado valores milenarios, cosificando primero la naturaleza y luego los ideales de los seres humanos.  El bienestar de algunos se ha logrado a través de la imposición del miedo y de la exclusión de las mayorías, especialmente de los campesinos, indígenas y trabajadores”.

“También en nuestra nación mapuche, el  Estado chileno decidió tomarse el territorio al sur del Bío-Bío, para - según supimos- incorporarlo al desarrollo agrícola del país.  Con este objetivo dictaron leyes para que  estas tierras fueran declaradas fiscales, creándose la provincia de Arauco. ¡Y maldita sea que a sí fue!”

¿Y cómo lo lograron abuelo?, insistió Millaray.  El abuelo continuó: “Inventaron una  guerra de ocupación entre 1862 y 1883, eufemísticamente la denominaron  de “pacificación”  en la que   aplicaron  una violencia atroz, según contaba mi abuela que lo sufrió muy de cerca: quemaron rucas y sembrados, mataron, robaron, apresaron,… ¡algo que no tiene nombre y que no debemos olvidar,  Millaray!   Así, los mapuches fuimos  arrinconados en reducciones a través del otorgamiento de los denominados «títulos de merced», quedando confinados a alrededor de 500 mil hectáreas, apenas el  5% de nuestro territorio original. Lo demás  fue entregado a colonos extranjeros y chilenos, que constituyeron enormes latifundios”.

Y agregó el abuelo: “¿piensas que se contentaron con eso?  Pues no, ya que con posterioridad al proceso de radicación, los mapuches seguimos siendo víctimas de despojos a través de amedrentamientos, engaños y farsas judiciales, aprovechándose de la ignorancia a este respecto de nuestros padres”.

“A consecuencia de ello, sufrimos  un paulatino  proceso de pauperización hasta hoy y tú ves que mientras los beneficios y el crecimiento se concentran en los barrios acomodados, que tu bien conociste en tus trabajos para las familias más ricas de Santiago, o en  las empresas forestales e hidroeléctricas que siguen adueñándose de  espacios cada vez más amplios, en desmedro de lo que tú estás viendo  en las comunidades, lo que amenaza nuestra continuidad histórica y cultural que, como sabes, está plenamente vinculada a la tierra.”

Horrorizada, Millaray exclamó:” ¡Qué historia tan dramática, abuelo Juan!  ¿Y qué está ocurriendo ahora?”

“Seguramente habrás escuchado versiones muy engañosas, por eso, debes poner  atención.  Lo que pasa es que a pesar de todos los atropellos sufridos, la fuerza espiritual de nuestra cosmovisión y  espiritualidad, nunca pudieron doblegarla. Y ocurrió que los más jóvenes  fueron tomando conciencia de los atropellos recibidos y que había que hacer algo por recuperar lo perdido.  De a poco se agruparon con sectores más alejados y sus organizaciones tomaron fuerza, realizaron encuentros masivos, consensuaron  peticiones y lograron  acuerdos con la autoridad.  Pero, sistemáticamente fueron casi siempre incumplidas.  Cansados de la vía legal,  en diciembre de 1997 algunos organizaron  la primera ocupación de terrenos de una gran empresa forestal en Lumaco, ello más bien como una medida para llamar la atención de la autoridad, de las grandes madereras  y de la ciudadanía, sobre su situación”.

“¿Y qué pasó abuelo?”, siguió preguntando Millaray.  El abuelo respondió: “La reacción del estado chileno no se dejo esperar.  Los  dirigentes fueron perseguidos, detenidos, acusados falsamente de numerosos delitos contra la propiedad, encarcelados, criminalizados, sus familias y comunidades acosadas por las policías…..  A partir de ese hecho se desencadenó una espiral de violencia, en que las continuas protestas de los mapuches en contra del Estado que los discriminaba y las empresas forestales que los privaban de sus medios de subsistencia, fueron reprimidas con crueldad creciente por la policía y demás órganos del Estado. 

¿Entiendes ahora lo que está ocurriendo  en el Wal Mapu,  mi querida Millaray?”

Ella quedó largo rato en silencio, se levantó, abrazó con ternura al abuelo agradeciéndole su paciente narración y partió. Caminó todo el día entre araucarias, esteros, lagos, cerros y sembrados, pensando en todo aquello,  hasta que la fría noche le animó a regresar.

Pasaron semanas en que  Millaray se veía muy ensimismada y, a su vez,  buscando conversar con las familias más activas sobre cuál debía ser  su lugar en aquel contexto.   

Fue en una muy nutrida celebración de un Machitun, que  optó por integrarse a una organización dedicada a  la recuperación de los territorios usurpados, mediante tomas no violentas.  Junto con ella también se integraron sus hijos,  Lautaro  y Rayén. Participaron en la vida de las comunidades afectadas por los abusos y en numerosas movilizaciones vinculadas a la causa mapuche, sin más armas que sus cuerpos y convicciones.  No tardó en percibirse la  capacidad de Millaray y su valentía en la denuncia en la calle y ante cualquier autoridad.  Fueron muchas las actividades, encuentros, movimientos. En esa lucha se fueron fraguando vínculos sólidos y cálidos, gracias a los cuales Millaray sentía que al fin había encontrado el más profundo sentido de su vida. 

Pero un  día de lluvioso amanecer,  llegó a  la casa un batallón de policías con una agresividad incontenible, destrozando cercos, matando animales, rompiendo puertas, ventanas, revolvieron todo y se llevaron preso a su hijo Lautaro, que ya era todo un  hombre tierno y sereno. Lo acusaron de cuánta barbaridad pudieron imaginar: quemas de fundos  y vehículos, atentados contra fiscales, robos, tenencia de armas, asociación terrorista, etc. Millaray recordaba bien que el abuelo Juan le había contado y advertido.

Y siguió el proceso: malos tratos, tortura, presión para que se autoinculpara.  Finalmente,  fue condenado a ¡30 años de presidio mayor!  Encerraron a su hijo, pero no los  ideales de Lautaro y de toda la comunidad.  Al contrario, éstos se fortalecieron.

Junto a su hijo,  sintió Millaray que hirieron su alma, pero no sus sueños ni  esperanzas.   La vida se convirtió en un torbellino: trabajo en la organización, denuncias nacionales e internacionales de lo que estaba pasando y el infierno que significaba viajar a la cárcel y  las humillaciones a que allá era sometidas las madres de los internos.

Esta fue su cotidianidad. Hasta que un día, 10 años después descansó, cuando su  corazón  dejó de latir  y de sufrir.  Ngenechen también lloró  la muerte de Millaray  y escucha cada día, el clamor de su pueblo. Sus lágrimas se convierten en abundante lluvia que fecunda los campos de los mapuches.

A partir de entonces, Millaray extiende su canto por todas las comunidades y campos, a lomos de las frías brisas de la tierra.  Se puede escuchar  a Millaray en la voz del viento gritar: “¡Qué delito es ser pobre, peor aún ser mapuche!  Más no por ello lograrán derrotarnos. ¡Jamás!  Y hasta que nuestra  nación sea libre,  volaremos con nuestras machis y loncos,  volaremos con los pájaros, volaremos entre las olas del majestuoso Pacifico del Sur, volaremos entre las nevadas cumbres y bosques de araucarias…  Volaremos y abriremos todas las cárceles que encierran a nuestro pueblo, para liberar a mi hijo Lautaro y; junto con él, a toda la gente digna que no se resigna al denigrante chorreo del sistema neoliberal que nos oprime.  Volaremos junto a miles de almas ultrajadas del continente,  hasta que las profundas utopías mapuche y de todos los pueblos  indígenas, florezcan como el rojo copihue.”

Y Ngenechen, buen conocedor de que  las  utopías de Millaray y su pueblo ya comienzan a brotar y que pronto serán inevitables realidades,  sonrió.

……………………………………….Notas explicativas:

Wall Mapu: es el nombre dado a la nación mapuche del sur del continente.

Huinca: denominación propia de los no mapuches.  (Significa “ladrón”).

Guillatún: Ceremonia religiosa mapuche

Ruca: vivienda tradicional de las comunidades mapuche.

Huerken: autoridad tradicional mapuche.

Machi: autoridad religiosa, consejera y protectora del pueblo mapuche

Ngenechen: Ser supremo de los mapuche.

Copihue: flor tradicional del pueblo mapuche.

...................................................................

(Este cuento se escribió para el concurso de la Agenda Latinoamericana 2015. No fue premiado,  pero, ayuda a entender la realidad del pueblo Mapuche. Lo publicamos aquí, en reconocimiento a la lucha de los pueblos originarios y como solidaridad de la Red SICSAL)

Temáticas: 

Tema Danland para Drupal creado por Danetsoft y Danang Probo Sayekti inspirado en Maksimer