text:
/**
 * echarts组件:工具箱
 *
 * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。
 * @author Kener (@Kener-林峰, linzhifeng@baidu.com)
 *
 */
define(function (require) {
    /**
     * 构造函数
     * @param {Object} messageCenter echart消息中心
     * @param {ZRender} zr zrender实例
     * @param {HtmlElement} dom 目标对象
     */
    function Toolbox(messageCenter, zr, dom) {
        var Base = require('./base');
        Base.call(this, zr);

        var ecConfig = require('../config');
        var zrConfig = require('zrender/config');
        var zrEvent = require('zrender/tool/event');

        var option;
        var component;

        var self = this;
        self.type = ecConfig.COMPONENT_TYPE_TOOLBOX;

        var _zlevelBase = self.getZlevelBase();
        var _magicType;
        var _magicMap;
        var _iconList;
        var _iconShapeMap = {};
        var _itemGroupLocation;
        var _enableColor = 'red';
        var _disableColor = '#ccc';
        var _markColor;
        var _markStart;
        var _marking;
        var _markShape;

        var _zoomStart;
        var _zooming;
        var _zoomShape;
        var _zoomQueue;

        var _dataView;

        function _buildShape() {
            _iconList = [];
            var feature = option.toolbox.feature;
            for (var key in feature){
                if (feature[key]) {
                    switch (key) {
                        case 'mark' :
                            _iconList.push('mark');
                            _iconList.push('markUndo');
                            _iconList.push('markClear');
                            break;
                        case 'magicType' :
                            for (var i = 0, l = feature[key].length; i < l; i++
                            ) {
                                _iconList.push(feature[key][i] + 'Chart');
                            }
                            break;
                        case 'dataZoom' :
                            _iconList.push('dataZoom');
                            _iconList.push('dataZoomReset');
                            break;
                        case 'saveAsImage' :
                            if (!G_vmlCanvasManager) {
                                _iconList.push('saveAsImage');
                            }
                            break;
                        default :
                            _iconList.push(key);
                            break;
                    }
                }
            }
            if (_iconList.length > 0) {
                _itemGroupLocation = _getItemGroupLocation();

                _buildBackground();
                _buildItem();

                for (var i = 0, l = self.shapeList.length; i < l; i++) {
                    self.shapeList[i].id = zr.newShapeId(self.type);
                    zr.addShape(self.shapeList[i]);
                }
                if (_iconShapeMap['mark']) {
                    _iconDisable(_iconShapeMap['markUndo']);
                    _iconDisable(_iconShapeMap['markClear']);
                }
                if (_iconShapeMap['dataZoomReset'] && _zoomQueue.length === 0) {
                    _iconDisable(_iconShapeMap['dataZoomReset']);
                }
            }
        }

        /**
         * 构建所有图例元素
         */
        function _buildItem() {
            var toolboxOption = option.toolbox;
            var iconLength = _iconList.length;
            var lastX = _itemGroupLocation.x;
            var lastY = _itemGroupLocation.y;
            var itemSize = toolboxOption.itemSize;
            var itemGap = toolboxOption.itemGap;
            var itemShape;

            var color = toolboxOption.color instanceof Array
                        ? toolboxOption.color : [toolboxOption.color];
            /*
            var textPosition;
            if (toolboxOption.orient == 'horizontal') {
                textPosition = toolboxOption.y != 'bottom'
                               ? 'bottom' : 'top';
            }
            else {
                textPosition = toolboxOption.x != 'left'
                               ? 'left' : 'right';
            }
            */
           _iconShapeMap = {};

            for (var i = 0; i < iconLength; i++) {
                // 图形
                itemShape = {
                    shape : 'icon',
                    zlevel : _zlevelBase,
                    style : {
                        x : lastX,
                        y : lastY,
                        width : itemSize,
                        height : itemSize,
                        iconType : _iconList[i],
                        strokeColor : color[i % color.length],
                        shadowColor: '#ccc',
                        shadowBlur : 2,
                        shadowOffsetX : 2,
                        shadowOffsetY : 2,
                        brushType: 'stroke'
                    },
                    highlightStyle : {
                        lineWidth : 2,
                        shadowBlur: 5,
                        strokeColor : color[i % color.length]
                    },
                    hoverable : true,
                    clickable : true
                };

                switch(_iconList[i]) {
                    case 'mark':
                        itemShape.onclick = _onMark;
                        _markColor = itemShape.style.strokeColor;
                        break;
                    case 'markUndo':
                        itemShape.onclick = _onMarkUndo;
                        break;
                    case 'markClear':
                        itemShape.onclick = _onMarkClear;
                        break;
                    case 'dataZoom':
                        itemShape.onclick = _onDataZoom;
                        break;
                    case 'dataZoomReset':
                        itemShape.onclick = _onDataZoomReset;
                        break;
                    case 'dataView' :
                        if (!_dataView) {
                            var componentLibrary = require('../component');
                            var DataView = componentLibrary.get('dataView');
                            _dataView = new DataView(
                                messageCenter, zr, option, dom
                            );
                        }
                        itemShape.onclick = _onDataView;
                        break;
                    case 'restore':
                        itemShape.onclick = _onRestore;
                        break;
                    case 'saveAsImage':
                        itemShape.onclick = _onSaveAsImage;
                        break;
                    default:
                        if (_iconList[i].match('Chart')) {
                            itemShape._name = _iconList[i].replace('Chart', '');
                            if (itemShape._name == _magicType) {
                                itemShape.style.strokeColor = _enableColor;
                            }
                            itemShape.onclick = _onMagicType;
                        }
                        break;
                }

                self.shapeList.push(itemShape);
                _iconShapeMap[_iconList[i]] = itemShape;

                if (toolboxOption.orient == 'horizontal') {
                    lastX += itemSize + itemGap;
                }
                else {
                    lastY += itemSize + itemGap;
                }
            }
        }

        function _buildBackground() {
            var toolboxOption = option.toolbox;
            var pTop = toolboxOption.padding[0];
            var pRight = toolboxOption.padding[1];
            var pBottom = toolboxOption.padding[2];
            var pLeft = toolboxOption.padding[3];

            self.shapeList.push({
                shape : 'rectangle',
                zlevel : _zlevelBase,
                hoverable :false,
                style : {
                    x : _itemGroupLocation.x - pLeft,
                    y : _itemGroupLocation.y - pTop,
                    width : _itemGroupLocation.width + pLeft + pRight,
                    height : _itemGroupLocation.height + pTop + pBottom,
                    brushType : toolboxOption.borderWidth === 0
                                ? 'fill' : 'both',
                    color : toolboxOption.backgroundColor,
                    strokeColor : toolboxOption.borderColor,
                    lineWidth : toolboxOption.borderWidth
                }
            });
        }

        /**
         * 根据选项计算图例实体的位置坐标
         */
        function _getItemGroupLocation() {
            var toolboxOption = option.toolbox;
            var iconLength = _iconList.length;
            var itemGap = toolboxOption.itemGap;
            var itemSize = toolboxOption.itemSize;
            var totalWidth = 0;
            var totalHeight = 0;

            if (toolboxOption.orient == 'horizontal') {
                // 水平布局,计算总宽度,别忘减去最后一个的itemGap
                totalWidth = (itemSize + itemGap) * iconLength - itemGap;
                totalHeight = itemSize;
            }
            else {
                // 垂直布局,计算总高度
                totalHeight = (itemSize + itemGap) * iconLength - itemGap;
                totalWidth = itemSize;
            }

            var x;
            var zrWidth = zr.getWidth();
            switch (toolboxOption.x) {
                case 'center' :
                    x = Math.floor((zrWidth - totalWidth) / 2);
                    break;
                case 'left' :
                    x = toolboxOption.padding[3] + toolboxOption.borderWidth;
                    break;
                case 'right' :
                    x = zrWidth
                        - totalWidth
                        - toolboxOption.padding[1]
                        - toolboxOption.borderWidth;
                    break;
                default :
                    x = toolboxOption.x - 0;
                    x = isNaN(x) ? 0 : x;
                    break;
            }

            var y;
            var zrHeight = zr.getHeight();
            switch (toolboxOption.y) {
                case 'top' :
                    y = toolboxOption.padding[0] + toolboxOption.borderWidth;
                    break;
                case 'bottom' :
                    y = zrHeight
                        - totalHeight
                        - toolboxOption.padding[2]
                        - toolboxOption.borderWidth;
                    break;
                case 'center' :
                    y = Math.floor((zrHeight - totalHeight) / 2);
                    break;
                default :
                    y = toolboxOption.y - 0;
                    y = isNaN(y) ? 0 : y;
                    break;
            }

            return {
                x : x,
                y : y,
                width : totalWidth,
                height : totalHeight
            };
        }

        function _onMark(param) {
            var target = param.target;
            if (_marking || _markStart) {
                // 取消
                _resetMark();
                zr.refresh();
            }
            else {
                // 启用Mark
                _resetZoom();   // mark与dataZoom互斥

                zr.modShape(target.id, {style: {strokeColor: _enableColor}});
                zr.refresh();
                _markStart = true;
                setTimeout(function(){
                    zr
                    && zr.on(zrConfig.EVENT.CLICK, _onclick)
                    && zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
                }, 10);
            }
            return true; // 阻塞全局事件
        }

        function _onDataZoom(param) {
            var target = param.target;
            if (_zooming || _zoomStart) {
                // 取消
                _resetZoom();
                zr.refresh();
                dom.style.cursor = 'default';
            }
            else {
                // 启用Zoom
                _resetMark();   // mark与dataZoom互斥

                zr.modShape(target.id, {style: {strokeColor: _enableColor}});
                zr.refresh();
                _zoomStart = true;
                setTimeout(function(){
                    zr
                    && zr.on(zrConfig.EVENT.MOUSEDOWN, _onmousedown)
                    && zr.on(zrConfig.EVENT.MOUSEUP, _onmouseup)
                    && zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
                }, 10);

                dom.style.cursor = 'crosshair';
            }
            return true; // 阻塞全局事件
        }

        function _onmousemove(param) {
            if (_marking) {
                _markShape.style.xEnd = zrEvent.getX(param.event);
                _markShape.style.yEnd = zrEvent.getY(param.event);
                zr.addHoverShape(_markShape);
            }
            if (_zooming) {
                _zoomShape.style.width =
                    zrEvent.getX(param.event) - _zoomShape.style.x;
                _zoomShape.style.height =
                    zrEvent.getY(param.event) - _zoomShape.style.y;
                zr.addHoverShape(_zoomShape);
                dom.style.cursor = 'crosshair';
            }
            if (_zoomStart
                && (dom.style.cursor != 'pointer' && dom.style.cursor != 'move')
            ) {
                dom.style.cursor = 'crosshair';
            }
        }

        function _onmousedown(param) {
            if (param.target) {
                return;
            }
            _zooming = true;
            var x = zrEvent.getX(param.event);
            var y = zrEvent.getY(param.event);
            var zoomOption = option.dataZoom || {};
            _zoomShape = {
                shape : 'rectangle',
                id : zr.newShapeId('zoom'),
                zlevel : _zlevelBase,
                style : {
                    x : x,
                    y : y,
                    width : 1,
                    height : 1,
                    brushType: 'both'
                },
                highlightStyle : {
                    lineWidth : 2,
                    color: zoomOption.fillerColor
                           || ecConfig.dataZoom.fillerColor,
                    strokeColor : zoomOption.handleColor
                                  || ecConfig.dataZoom.handleColor,
                    brushType: 'both'
                }
            };
            zr.addHoverShape(_zoomShape);
            return true; // 阻塞全局事件
        }

        function _onmouseup(/*param*/) {
            if (!_zoomShape
                || Math.abs(_zoomShape.style.width) < 10
                || Math.abs(_zoomShape.style.height) < 10
            ) {
                _zooming = false;
                return true;
            }
            if (_zooming && component.dataZoom) {
                _zooming = false;

                var zoom = component.dataZoom.rectZoom(_zoomShape.style);
                if (zoom) {
                    _zoomQueue.push({
                        start : zoom.start,
                        end : zoom.end,
                        start2 : zoom.start2,
                        end2 : zoom.end2
                    });
                    _iconEnable(_iconShapeMap['dataZoomReset']);
                    zr.refresh();
                }
            }
            return true; // 阻塞全局事件
        }

        function _onclick(param) {
            if (_marking) {
                _marking = false;
                self.shapeList.push(_markShape);
                _iconEnable(_iconShapeMap['markUndo']);
                _iconEnable(_iconShapeMap['markClear']);
                zr.addShape(_markShape);
                zr.refresh();
            } else if (_markStart) {
                _marking = true;
                var x = zrEvent.getX(param.event);
                var y = zrEvent.getY(param.event);
                _markShape = {
                    shape : 'line',
                    id : zr.newShapeId('mark'),
                    zlevel : _zlevelBase,
                    style : {
                        xStart : x,
                        yStart : y,
                        xEnd : x,
                        yEnd : y,
                        lineWidth : self.deepQuery(
                                        [option],
                                        'toolbox.feature.mark.lineStyle.width'
                                    ) || 2,
                        strokeColor : self.deepQuery(
                                          [option],
                                          'toolbox.feature.mark.lineStyle.color'
                                      ) || _markColor,
                        lineType : self.deepQuery(
                                       [option],
                                       'toolbox.feature.mark.lineStyle.type'
                                   ) || 'dashed'
                    }
                };
                zr.addHoverShape(_markShape);
            }
        }

        function _onMarkUndo() {
            if (_marking) {
                _marking = false;
            } else {
                var len = self.shapeList.length - 1;    // 有一个是背景shape
                if (_iconList.length == len - 1) {
                    _iconDisable(_iconShapeMap['markUndo']);
                    _iconDisable(_iconShapeMap['markClear']);
                }
                if (_iconList.length < len) {
                    var target = self.shapeList[self.shapeList.length - 1];
                    zr.delShape(target.id);
                    zr.refresh();
                    self.shapeList.pop();
                }
            }
            return true;
        }

        function _onMarkClear() {
            if (_marking) {
                _marking = false;
            }
            // 有一个是背景shape
            var len = self.shapeList.length - _iconList.length - 1;
            var hasClear = false;
            while(len--) {
                zr.delShape(self.shapeList.pop().id);
                hasClear = true;
            }
            if (hasClear) {
                _iconDisable(_iconShapeMap['markUndo']);
                _iconDisable(_iconShapeMap['markClear']);
                zr.refresh();
            }
            return true;
        }

        function _onDataZoomReset() {
            if (_zooming) {
                _zooming = false;
            }
            _zoomQueue.pop();
            //console.log(_zoomQueue)
            if (_zoomQueue.length > 0) {
                component.dataZoom.absoluteZoom(
                    _zoomQueue[_zoomQueue.length - 1]
                );
            }
            else {
                component.dataZoom.rectZoom();
                _iconDisable(_iconShapeMap['dataZoomReset']);
                zr.refresh();
            }

            return true;
        }

        function _resetMark() {
            _marking = false;
            if (_markStart) {
                _markStart = false;
                if (_iconShapeMap['mark']) {
                    // 还原图标为未生效状态
                    zr.modShape(
                        _iconShapeMap['mark'].id,
                        {
                            style: {
                                strokeColor: _iconShapeMap['mark']
                                                 .highlightStyle
                                                 .strokeColor
                            }
                         }
                    );
                }

                zr.un(zrConfig.EVENT.CLICK, _onclick);
                zr.un(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
            }
        }

        function _resetZoom() {
            _zooming = false;
            if (_zoomStart) {
                _zoomStart = false;
                if (_iconShapeMap['dataZoom']) {
                    // 还原图标为未生效状态
                    zr.modShape(
                        _iconShapeMap['dataZoom'].id,
                        {
                            style: {
                                strokeColor: _iconShapeMap['dataZoom']
                                                 .highlightStyle
                                                 .strokeColor
                            }
                         }
                    );
                }

                zr.un(zrConfig.EVENT.MOUSEDOWN, _onmousedown);
                zr.un(zrConfig.EVENT.MOUSEUP, _onmouseup);
                zr.un(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
            }
        }

        function _iconDisable(target) {
            zr.modShape(target.id, {
                hoverable : false,
                clickable : false,
                style : {
                    strokeColor : _disableColor
                }
            });
        }

        function _iconEnable(target) {
            zr.modShape(target.id, {
                hoverable : true,
                clickable : true,
                style : {
                    strokeColor : target.highlightStyle.strokeColor
                }
            });
        }

        function _onDataView() {
            _dataView.show(option);
            return true;
        }

        function _onRestore(){
            _resetMark();
            _resetZoom();
            messageCenter.dispatch(ecConfig.EVENT.RESTORE);
            return true;
        }

        function _onSaveAsImage() {
            var saveOption = option.toolbox.feature.saveAsImage;
            var imgType = saveOption.type || 'png';
            if (imgType != 'png' && imgType != 'jpeg') {
                imgType = 'png';
            }
            var image = zr.toDataURL('image/' + imgType);
            var downloadDiv = document.createElement('div');
            downloadDiv.id = '__echarts_download_wrap__';
            downloadDiv.style.cssText = 'position:fixed;'
                + 'z-index:99999;'
                + 'display:block;'
                + 'top:0;left:0;'
                + 'background-color:rgba(33,33,33,0.5);'
                + 'text-align:center;'
                + 'width:100%;'
                + 'height:100%;'
                + 'line-height:'
                + document.documentElement.clientHeight + 'px;';

            downloadDiv.onclick = _close;
            var downloadLink = document.createElement('a');
            //downloadLink.onclick = _saveImageForIE;
            downloadLink.href = image;
            downloadLink.setAttribute(
                'download',
                (saveOption.name
                 ? saveOption.name
                 : (option.title && (option.title.text || option.title.subtext))
                   ? (option.title.text || option.title.subtext)
                   : 'ECharts')
                + '.' + imgType
            );
            downloadLink.innerHTML = '<img src="' + image
                + '" title="'
                + (!!(window.attachEvent
                     && navigator.userAgent.indexOf('Opera') === -1)
                  ? '右键->图片另存为'
                  : (saveOption.lang ? saveOption.lang : '点击保存'))
                + '"/>';

            downloadDiv.appendChild(downloadLink);
            document.body.appendChild(downloadDiv);
            downloadLink = null;
            downloadDiv = null;

            function _close() {
                var d = document.getElementById('__echarts_download_wrap__');
                d.onclick = null;
                d.innerHTML = '';
                document.body.removeChild(d);
                d = null;
            }
            /*
            function _saveImageForIE() {
                window.win = window.open(image);
                win.document.execCommand("SaveAs");
                win.close()
            }
            */
            return;
        }

        function _onMagicType(param) {
            _resetMark();
            var itemName = param.target._name;
            if (itemName == _magicType) {
                // 取消
                _magicType = false;
            }
            else {
                // 启用
                _magicType = itemName;
            }
            messageCenter.dispatch(
                ecConfig.EVENT.MAGIC_TYPE_CHANGED,
                param.event,
                {magicType : _magicType}
            );
            return true;
        }

        function reset(newOption) {
            if (newOption.toolbox
                && newOption.toolbox.show
                && newOption.toolbox.feature.magicType
                && newOption.toolbox.feature.magicType.length > 0
            ) {
                var magicType = newOption.toolbox.feature.magicType;
                var len = magicType.length;
                _magicMap = {};     // 标识可控类型
                while (len--) {
                    _magicMap[magicType[len]] = true;
                }

                len = newOption.series.length;
                var oriType;        // 备份还原可控类型
                var axis;
                while (len--) {
                    oriType = newOption.series[len].type;
                    if (_magicMap[oriType]) {
                        axis = newOption.xAxis instanceof Array
                               ? newOption.xAxis[
                                     newOption.series[len].xAxisIndex || 0
                                 ]
                               : newOption.xAxis;
                        if (axis && axis.type == 'category') {
                            axis.__boundaryGap =
                                typeof axis.boundaryGap != 'undefined'
                                ? axis.boundaryGap : true;
                        }
                        axis = newOption.yAxis instanceof Array
                               ? newOption.yAxis[
                                     newOption.series[len].yAxisIndex || 0
                                 ]
                               : newOption.yAxis;
                        if (axis && axis.type == 'category') {
                            axis.__boundaryGap =
                                typeof axis.boundaryGap != 'undefined'
                                ? axis.boundaryGap : true;
                        }
                        newOption.series[len].__type = oriType;
                    }
                }
            }
            _magicType = false;

            var zoomOption = newOption.dataZoom;
            if (zoomOption && zoomOption.show) {
                var start = typeof zoomOption.start != 'undefined'
                            && zoomOption.start >= 0
                            && zoomOption.start <= 100
                            ? zoomOption.start : 0;
                var end = typeof zoomOption.end != 'undefined'
                          && zoomOption.end >= 0
                          && zoomOption.end <= 100
                          ? zoomOption.end : 100;
                if (start > end) {
                    // 大小颠倒自动翻转
                    start = start + end;
                    end = start - end;
                    start = start - end;
                }
                _zoomQueue = [{
                    start : start,
                    end : end,
                    start2 : 0,
                    end2 : 100
                }];
            }
            else {
                _zoomQueue = [];
            }
        }

        function getMagicOption(){
            if (_magicType) {
                // 启动
                for (var i = 0, l = option.series.length; i < l; i++) {
                    if (_magicMap[option.series[i].type]) {
                        option.series[i].type = _magicType;
                    }
                }
                var boundaryGap = _magicType == ecConfig.CHART_TYPE_LINE
                                  ? false : true;
                var len;
                if (option.xAxis instanceof Array) {
                    len = option.xAxis.length;
                    while (len--) {
                        // 横纵默认为类目
                        if ((option.xAxis[len].type || 'category')
                             == 'category'
                         ) {
                            option.xAxis[len].boundaryGap = boundaryGap;
                        }
                    }
                }
                else {
                    if (option.xAxis
                        && (option.xAxis.type || 'category') == 'category'
                    ) {
                        option.xAxis.boundaryGap = boundaryGap;
                    }
                }

                if (option.yAxis instanceof Array) {
                    len = option.yAxis.length;
                    while (len--) {
                        if ((option.yAxis[len].type) == 'category') {
                            option.yAxis[len].boundaryGap = boundaryGap;
                        }
                    }
                }
                else {
                    if (option.yAxis && option.yAxis.type == 'category') {
                        option.yAxis.boundaryGap = boundaryGap;
                    }
                }
            }
            else {
                // 还原
                var axis;
                for (var i = 0, l = option.series.length; i < l; i++) {
                    if (_magicMap[option.series[i].type]) {
                        option.series[i].type = option.series[i].__type;
                        if (option.xAxis instanceof Array) {
                            axis = option.xAxis[
                                       option.series[i].xAxisIndex || 0
                                   ];
                            if (axis.type == 'category') {
                                axis.boundaryGap = axis.__boundaryGap;
                            }
                        }
                        else {
                            axis = option.xAxis;
                            if (axis && axis.type == 'category') {
                                axis.boundaryGap = axis.__boundaryGap;
                            }
                        }

                        if (option.yAxis instanceof Array) {
                            axis = option.yAxis[
                                       option.series[i].yAxisIndex || 0
                                   ];
                            if (axis.type == 'category') {
                                axis.boundaryGap = axis.__boundaryGap;
                            }
                        }
                        else {
                            axis = option.yAxis;
                            if (axis && axis.type == 'category') {
                                axis.boundaryGap = axis.__boundaryGap;
                            }
                        }
                    }
                }
            }

            return option;
        }

        function render(newOption, newComponent){
            _resetMark();
            _resetZoom();
            newOption.toolbox = self.reformOption(newOption.toolbox);
            // 补全padding属性
            newOption.toolbox.padding = self.reformCssArray(
                newOption.toolbox.padding
            );
            option = newOption;
            component = newComponent;

            self.shapeList = [];

            if (newOption.toolbox.show) {
                _buildShape();
            }

            hideDataView();
        }

        function resize() {
            _resetMark();
            self.clear();
            if (option.toolbox.show) {
               _buildShape();
           }
           if (_dataView) {
               _dataView.resize();
           }
        }

        function hideDataView() {
            if (_dataView) {
                _dataView.hide();
            }
        }

        /**
         * 释放后实例不可用
         */
        function dispose() {
            if (_dataView) {
                _dataView.dispose();
            }

            self.clear();
            self.shapeList = null;
            self = null;
        }

        /**
         * 刷新
         */
        function refresh(newOption) {
            if (newOption) {
                newOption.toolbox = self.reformOption(newOption.toolbox);
                // 补全padding属性
                newOption.toolbox.padding = self.reformCssArray(
                    newOption.toolbox.padding
                );
                option = newOption;
            }
        }

        // 重载基类方法
        self.dispose = dispose;

        self.render = render;
        self.resize = resize;
        self.hideDataView = hideDataView;
        self.getMagicOption = getMagicOption;
        self.reset = reset;
        self.refresh = refresh;
    }

    require('../component').define('toolbox', Toolbox);

    return Toolbox;
});


text:
AI Auction
Investment Risk Indicators
Our newsfeed on your Website
Artists and prices
Art associations
Schedule auctions
ARTIMX indices
Artists ratings
Art Market Analysis & Forecast
Art Investment Ideas
Tips novice collectors
XXI Century
The Artist of The Week
Art Economy & Law
Art World Observer
Artworks` Adventures
Stories about Artists
Appraisal, Restoration, Preservation
Annual reports on the art market
New names
Auctions of art
Exhibitions of works of art
Reviews of Auctions in Russia
Forum Hot Topics
Natta Konysheva
#3 Т.Г.Пауткина
Прибалтийский художник
A. I. Ashurov, 2 picture Deserves.Hood.The RSFSR
Guide to photo reports from exhibitions
Travel Forum ARTinvestment.RU
#25 Т.Г.Пауткина, Домик
#24 Т.Г.Пауткина, Тепло
#23 Т.Г.Пауткина, Королевство без короля
"Russian week" in 2020, London: facts, figures and key findings
ARTinvestment.RU 30 июля 2020
AI collected basic information at the end of the summer series of Russian sales in London
Ivan AIVAZOVSKY the Bay of Naples. 1878
One of the top-лотов auction Sotheby's Russian Pictures 26.05.2020–02.06.2020
Estimate: £0,8–1,2 million
The result: £2,295 million
Photo: Courtesy Sotheby's
Source: sothebys.com
on 21 July, at Christie's, with the latest e-rate (the expression at the time was falling out of use the phrase "hammer blow"), completed the British part of the Russian trade of the summer series 2020. Before the start of the series, we suggested that the "Russian week" will be in all senses is unreliable. Will success — them write off to the hedonistic tired of collectors from the quarantine by misfortune — will meet her crisis. The result of the recent London auctions was that we didn't anticipate was the third reaction of the audience: many of our interlocutors, and a separate publication reported that "the market never left, he is alive and continues to evolve." Try to understand which of the opinions is closer to the truth.
so, in monetary terms, the three leading auction houses, traditionally associated with Russian art in the West, — Sotheby's, Christie's and MacDougall's — collected $16.68 million, the figure is 64% lower than fees in June 2019. It should be remembered that the summer "Russian auction" last season was very successful largely due to several high-profile sales (in particular, the sale of "still life with lilacs" by Kuzma Petrov-Водкина at Christie's auction for $11,76 million, which provided 25% of the total year turnover). Therefore, to compare the results of the current June — Jul all-таки correct from 2018-м. Against this background, the picture is more optimistic that the numbers this summer, "only" 46% lower than 2018-го.
Further, it should be understood that the "big four" this year, temporarily left Bonham's (4 % of the volume of sales by the end of 2019, but still), MacDougall's held electronic bidding is only the second attempt (the first time was a technical collapse on the platform-посреднике), and Christie's combined auction of Russian paintings and decorative-прикладным art in a single directory, significantly cutting the number of lots, and even held them a month later all the other auction houses. In other words, in addition to the economic recession, the "Russian week" in parallel, reeling through time and space. However, the proportion of lots sold — 60% this summer compared to 62% of summer 2019 — speaks about the quality work with collectors, with an objective reduction of purchasing power.
But — and this should be noted separately — the number of lots has declined only 21 % (not half, like at the evening auction of international art top-класса). It is no secret that the decline in the number of lots in quarantine many months is determined not only by economic and logistical constraints. And the auction house, after realizing the number of potential buyers, reluctant to take on the auction that cannot be delivered outside the country. What does this say in relation to Russian art, in addition to the "living and evolving market"? That most of the work at the end of trading received a British residence permit and remained in London. By the way, at the end of the June auction Sotheby's brought some interesting data: in particular, almost 20 % of consumers made a first purchase at the auctionthe auction, just over 30 % of buyers were aged 40 years or younger.
table 1. Sales of art during the summer of "Russian weeks" in the British auctions, 2017-2020
sales Volume, million $
All the lots, pieces
Soldon lots,
sht.
2017, June
2020, may — July
Dynamics of the 2017-2018, %
to 3.6
2018-2019 Dynamics, %
and 5.2
Dynamics 2019-2020, %
table 2. Sales of art during the summer of "Russian weeks" in auction houses, 2020
net sales $ million
MacDougall's
Total sales $ mn
the record Price of "Russian auction" went to Sotheby's: the work of Ivan Aivazovsky "the Bay of Naples," 1878, was sold for £2,295 million ($2.89 million) — is almost three times more expensive than the lower estimate. In the rating, taking into account the history of open auction sales by the artist, this figure has taken the second place. In General, the sale of four works of Aivazovsky provided Sotheby's 49.7 per cent of total revenue trades (£2,795 million). Need to identify and record the distance that some work has overcome on the way from the starting value to the hammer price. In particular, it concerns selections of four works of Vladimir Stozharova: a total of four landscape brought about £200 thousand While the final cost of some works exceeded the initial figures estimate more than 10 times. For example, "Autumn. Families" in 1956, while the estimate£6-8 thousand, was sold for £60 thousand Another incredible growth rates showed a "portrait of the actress O. S." in 1974, Igor K. Obrosova sold in 38-шагового bargain for £75 million, while the estimate of £5-7 thousand.
But one of the main hopes of trading — submitted to cover the landscape by Alexei Savrasov, "Views of Moscow", while the estimate £350-500 thousand, — has not justified itself: the landscape was unsold. As suggested by guests webinar AI, held at the end of "Russian auction", the bidders are inspired by the opportunity to have on the wall of a picturesque reflection of the phrase "Moscow — big village". The total cost of the 10 most expensive summer series "Russian weeks" — $5.21 million — is only 31% of the total sales of the three auction houses. Perhaps, this ratio can be called the most optimistic of the entire review: the collector of the specimen 2020 is not only ready to buy "stars", but also to create new "stars".
table 3. Top-10 sales of Russian artists during the "Russian weeks" in the British auctions, 2020
the title of the work
the mean estimat (A), $ thousand
the Price including BP* (In), $ THD
Δ (Q:A) %
I. K. Aivazovsky
Bay of Naples
Sotheby's, London
a Ship passing in the night
Arkhipov A. E.
Christie's, London
Rokhlin, V. N.
View Of Tiflis
P. P. Konchalovsky
K. A. Korovin
Eiffel tower at night
MacDougall's, London
Green oaks at dusk
Rozhdestvensky K. N.
a Girl without a passport
I. I. Shishkin
the Bench in the shade
Total sales $
* BP —Buyers Premium — Commission of the buyer.
Comment AI: Bonham's self-destructed from "Russian weeks", focusing on what she knows best, — to sell expensive whisky, jewellery and sports cars. MacDougall's unexpectedly showed very good sales of modern authors, while the majority of transactions took place online after-торгов in private (I remember a line from a song: "Though believe, though check..." — with the only difference that we believe willingly, and can not be verified in any way). Sotheby's safely left the two auction day — and not lost, but Christie's decided to play it safe, after bids in July. And it seems, has paid off: in early summer, we easily spent money, but closer to the middle I realized that all the money invested in eggs by Oksana Mas and Japanese sungu. And become more economical.
Interestingly, the current cold summer has not cooled the desire of lesser auction houses to work with Russian artists: seven European auctions — from Monaco to Copenhagen — held the auction, which included a combination of Russian Art in their own names (to them we will dedicate a separate article). Adding this to what was said in the review, summarize:
• the pandemic has not affected the desire of auction houses to engage in Russian art — at the level of enterprises of the departments either do their (temporary) closure. Accordingly, their employees not only feel but also see the [email protected] semicolon
• the pandemic has not affected the desire of collectors to buy Russian art — in the extent to which could affect. "Russian week" have practically identical data with international trading: the same percent reduction and the average value of lots in the background of several high-profile sales. Another thing is that top-лоты vary in numbers, but with that we are humbled before the crisis, isn't it?
• the pandemic a little stirred up the interest of buyers to new names and contemporary art. In this case, "slightly" — is deliberately understated feature. Not to jinx it.
If, however, the only phrase that describes "Russian week" — 2020, it reads: in the period of crisis full of hope dawn Aivazovsky want to buy more than a poor farmstead Savrasov.
Denis Belkevich, AI
Permanent link to:
https://artinvestment.ru/en/invest/analytics/20200730_Russian_Summer_2020.html
https://artinvestment.ru/invest/analytics/20200730_Russian_Summer_2020.html
When quoting reference to the https://artinvestment.ru without fail
Attention! All materials of the site and database of auction results ARTinvestment.RU, including illustrated reference information about the works sold at auctions, are intended for use exclusively for informational, scientific, educational and cultural purposes in accordance with Art. 1274 of the Civil Code. Use for commercial purposes or in violation of the rules established by the Civil Code of the Russian Federation is not allowed. ARTinvestment.RU is not responsible for the content of materials submitted by third parties. In case of violation of the rights of third parties, the site administration reserves the right to remove them from the site and from the database on the basis of an application from an authorized body.
16.08.2022 Расследование ФБР подрывает репутацию Художественного музея Орландо Отменены три выставки, из собрания отозваны отдельные работы
14.08.2020 Face mask for $1.5 million In this sum cost the unnamed "billionaire from Shanghai" ordering a mask of gold and diamonds from the jewelry company Yvel
14.08.2020 A special contract for buyers of art of authors of African descent For fight against speculators, Christie's has developed a list of conditions of purchase
13.08.2020 Cultural institution in the U.S. last year spent $7.9 billion This year a repeat result is not obtained – loss of art-индустрии the United States already amounted to $150 billion And this is not the final figure
13.08.2020 Biography Yayoi Kusama will be released as a graphic novel With the history of one of the most successful contemporary artists in the form of a comic book will be available from 15 September 2020
03.08.2018 Торги «Антиквариума» 28 июля. Краткие итоги Наторговали на 3,6 миллиона рублей — 131 % от эстимейта. Одним из топ-лотов стала работа Владимира Немухина, проданная за 240 тысяч
25.07.2018 Очередной аукцион #всёпорублю в «Литфонде» принес почти 4,5 млн.руб. Топ-лотом стала икона «Богоматерь Владимирская» — 600 тыс. руб.
24.07.2018 «Русская Эмаль» торжественно закрывает сезон и уходит в отпуск На завершающих торгах 14 июля «Русская эмаль» порадовала участников Кандинским, целой коллекцией нэцкэ и произведениями Пыжовой
16.07.2018 Краткие итоги сороковых живописных торгов «Кабинета» Аукционный дом «Кабинет» проводит последние торги сезона и уходит в отпуск до осени, вслед за своими игроками
03.07.2018 Коротко о главном: итоги аукциона 28 июня в «Литфонде» Рейтинг возглавляют классики русской литературы, а сказочники продолжают удивлять
12.08.2020 Literature: Piroska Dossey. Sold! The book is about the phenomenon of pricing, the original title of which was ahead of its time in a decade
07.08.2020 Movies: "the Cool school" The emergence of abstract expressionism on the West coast of the United States the voice of the Big Lebowski
31.07.2020 10 most unusual ArtTech-стартапов 2020. Part 1 AI talks about young companies whose ideas have become especially popular with the onset of the quarantine
30.07.2020 "Russian week" in 2020, London: facts, figures and key findings AI collected basic information at the end of the summer series of Russian sales in London
29.07.2020 Literature: Еkaterina Dorozhkina. Zero Budget Marketing A practical book about the importance of marketing in terms of when people and companies have limited resources
17.06.2022 Выставка Люси Вороновой в галерее Atelier CHOUTKO На выставке будут представлены живописные произведения Вороновой разных лет и состоится премьера ковра ручной работы, созданного художницей совместно с Atelier CHOUTKO
14.03.2022 Эрмитаж потребовал досрочно вернуть работы, участвующие в итальянских выставках В Россию в ближайшее время вернутся около 25 картин
30.07.2020 In Saint-Петербурге opened the exhibition "Artists and collectors — to the Russian Museum. Gifts. 1898-2019. Favorites" The exhibition, held simultaneously on all the main belt, has collected more than 1,500 items donated to the Museum since the founding of the
27.07.2020 Fedor Rokotov exhibition opens at Historical Museum of Moscow A collection of works of the famous Russian portrait painter XVIII veka will showcase on 29 July 2020
07.07.2020 In the State Tretyakov gallery opened the exhibition "Nevsegda. 1968-1985" Exhibition — part of the trilogy initiated by the project "the Thaw" (2017), will be held at the New Tretyakov gallery from 7 July to 11 October 2020
database sales
Login for subscribers
Terms and prices
Top Russian artists
and sculptors
Show: Top russian artists Top world artists Top living artists Top world sculptors
1. Mark Rothko$86,83 million
2. Kazimir Malevich$85,81 million
3. Wassily Kandinsky$41,6 million
4. Marc Chagall$28,45 million
5. Chaim Soutine$28,16 million
6. Nicolas Staël$22,25 million
7. Alexei Jawlensky$18,59 million
8. Valentin Serov$14,51 million
9. Tamara de Lempicka$13,36 million
10. Nicholas Roerich$12,13 million
11. Kuzma Petrov-Vodkin$11,76 million
12. Natalia Goncharova$10,88 million
13. Nicolai Fechin$10,84 million
14. Ilya Repin$7,43 million
15. Konstantin Somov$7,33 million
16. Ilya Mashkov$7,25 million
17. Boris Kustodiev$7,07 million
18. Vasily Polenov$6,34 million
19. Yuri Annenkov$6,27 million
20. Ivan Klyun$6,26 million
21. Vasily Vereshchagin$6,15 million
22. Zinaida Serebriakova$5,85 million
23. Ilya Kabakov$5,83 million
24. Alexander Yakovlev$5,56 million
25. Konstantin Makovsky$5,47 million
26. Wladimir Baranoff-Rossine$5,37 million
27. Ivan Aivazovsky$5,34 million
28. Vladimir Borovikovsky$5,02 million
29. Alexander Rodchenko$4,5 million
30. Mikhail Larionov$4,46 million
31. Sonia Delaunay$4,34 million
32. Mikhail Nesterov$4,30 million
33. Vera Rockline$4,04 million
34. Mikhail Klodt$4,02 million
35. Pavel Kuznetsov$3,97 million
36. Alexandr Deineka$3,82 million
37. Boris Grigoriev$3,72 million
Address 105064, Moscow,
Gorokhovsky pereulok, 7
This site uses cookies, it can collect data about IP addresses and users. N 152-FZ «On Personal Data» and continue working with this site, you confirm your consent to the processing of personal data in accordance with the law N 152-FZ «On Personal Data» and «The policy of LTD «ArtIn» with regard to the processing of personal data».

redpajama_set_name: RedPajamaCommonCrawl


text:
AG Barr: Left Using 'Guerrilla Warfare' to Force Communism on America
'Revolutionary group that is interested in some form of socialism, communism'
on&nbsp10th August 2020 @ 6.00pm
Barr described the Antifa-led nationwide riots as 'a new form of urban guerrilla warfare'
Attorney General William Barr warned that the United States is in the grip of a new form of "urban guerrilla warfare" driven by the left's "lust for power."
Discussing the ongoing Black Lives Matter riots during an interview on "Life, Liberty & Levin" on Sunday, Barr said the far-left groups comprised of "Bolsheviks" with a firm focus on "some form of socialism, communism."
"They are a revolutionary group that is interested in some form of socialism, communism," Barr said.
"They're essentially Bolsheviks. Their tactics are fascistic," he added.
Barr described the Antifa-led nationwide riots as "a new form of urban guerrilla warfare."
"The way the guerrilla...hides out among the people as a fish in the ocean...what they do is they are essentially shielding themselves or shrouding themselves in First Amendment activity," he explained.
Barr said the Democratic party's far-left shift in recent years is reflected in the violent groups.
"They go into the demonstrations, which are exercising First Amendment activity, and they insinuate themselves in there to shield themselves," he added.
"That's where they swim. And what they do is they hijack these demonstrations, and they and they provoke violence."
WATCH: Indianapolis BLM/Antifa threaten drivers at GUNPOINT for trying to use their city streets as streets.
READ MORE: https://t.co/buXL2f2IJu
— Neon Nettle (@NeonNettle) August 7, 2020
"The left has pulled away from the umbrella of classical liberal values that have undergirded," he said.
The Democrats are out of seeking "complete political victory," he argued.
"It began the day Trump won in 2016, and from that point forward, there's been the resistance," Barr told Levin.
Barr also slammed the media for 'projecting a narrative' and telling a 'lie' to the Americans
"They were trying to impeach him from Day One. They have done everything they can..and I think it's because of the desire for power that the left wants."
Barr said power had become a "secular religion of the left."
"They want to run people's lives so they can design utopia for all of us...and it's the lust for power," he said.
"And they weren't expecting Trump's victory. And it outrages them."
"They want to run people's lives so they can design utopia for all of us...it's the lust for power."
Barr also slammed the media for "projecting a narrative" and telling a "lie" to the American people by watering down coverage of the civil unrest.
"You don't see it on the networks. You don't see it on the other cable stations," Barr stated.
"And yet you hear about these peaceful demonstrators. So it's you know, it's just it's a lie. The American people are being told a lie by the media," Barr added.
Barr said the media has now become "extremely monolithic," concluding "it's wedded in many ways to the Democratic Party."
Neon Nettle reported last month that George Soros' Open Society Foundations announced $220 million donations to Black Lives Matter justice organizations across the US.
The most significant share of the investment is $150 million, which was via grants to black-led organizations focused on racial equality.
[RELATED] Soros Plows $220 Million into Radical BLM Groups and Anti-Police Movements
tags: Black Lives Matter | Antifa
Black Lives Matter Founder Buys Lavish $1.4M Mansion in 1.4% Black Neighborhood
BLM leader Patrisse Cullors' new home is in exclusive California area that's 88% white 10th April 2021 @ 1.00pm
Deranged Antifa Thug Attacks Security Guard With Megaphone
Soros funded group made an attempt to storm the Portland City Hall 10th August 2018 @ 9.00pm
NYC DA Drops Charges Against Black Lives Matter Leader Who Assaulted Female Cop
Manhattan District Attorney Cyrus Vance sets BLM thug Derrick Ingram free 10th August 2020 @ 5.00pm
Mark Levin: Antifa & Black Lives Matter Are 'Militia Wing' of Democratic Party
Fox News host blasts 'diabolical' Democratic Party for increasingly using 'soft tyranny' 10th August 2021 @ 1.00am


VERSALINK® products are specialty diamines of different molecular weights for use as curatives and chain extenders in high-performance polyurea and polyurea-hybrid applications. While allowing for superior physical properties, wide hardness spectrum, low sensitivity to moisture, excellent adhesion, and temperature resistance, our VERSALINK® grades stand out in terms of pot-life extension. FDA dry-food-contact approved grades are also available.


Patterns has unveiled its autumn/winter Q4 programme.
Horse Meat Disco are on board to take over the venue for a Halloween special. Enlisting respected selectors to curate nights for the upcoming season, the Brighton venue will see Peach Discs boss Shanti Celeste host the fourth instalment of her Peach Party on 2 December; for which she'll be bringing DJ Stingray and Charles Green to perform at the space.
Furthermore, Eclair Fifi is set to perform at the venue on 15 December. Others booked for shows include Speedy Ortiz and Puma Blue.
Check out the full programme on Patterns' website, and listen to an exclusive Crack Magazine playlist curated by Eclair Fifi.


Evening classes meeting once per week follow the schedule set on the exam grid below.
MW evening classes will offer exams at 7pm on the first Monday of the exam period.
TuTh evening classes will offer exams at 7pm on the first Tuesday of the exam period.
Courses that deviate from the established course-time grid will offer exams in the time block designated as "Others."
Undergraduate business course (UBUS) exams are offered as indicated on the exam schedule.
Note: Loyola's policy regarding the scheduling of exams is that Final Exams are not to be given during the last week of instruction. Final Exams are to be given only during the designated times within the Exam period (see below). Unit tests may be assigned during the last week of class.
Final Exams given during the final week of instruction interfere with a student's ability to meet their obligations to their other classes. A student encountering a class in which the instructor intends to offer a Final Exam during the final week of classes is encouraged to notify their dean's office.
Students with four Final Exams on a given day may contact the Office of the Dean for their school to request that one Final Exam be rescheduled.
Exam Days are Monday, Tuesday, Wednesday*, Thursday, Friday and Saturday. *Wednesday is Study Day, no daytime exams will be held.


Recently, technological innovation for electric vehicle (EV) has been accelerated, and the concept of Industry 4.0 advocated by the German government has been attracting large attention. The seminar focuses on those two topics, introducing the government policy, corporate activities and consumer trends. What is the current investment behaviour of foreign companies? How would CEE countries including the Czech Republic undergo the shift? What is the key to success in such fast-changing market? Come and seek the possibility of business expansion for Japanese companies from a variety of perspectives.
* For details of the program, please download [TOKYO] Seminar Program – The Future of EV and Industry 4.0 below.
For registration, please send us a request by email (tokyo@czechinvest.org) or TEL (03-5485-8266). When applying via email, please write "Application for Czech Republic Investment Seminar in Tokyo" in the title, placing your (1) Name, (2) Company Name, (3) Department/Division, (4) Title, (5) TEL, and (6) Email in the email body. Confirmation email will be sent by CzechInvest after the application. Deadline: 24th November 2017 (Fri).


text:
US: 'Remain in Mexico' Program Harming Children
(Washington, DC) – A United States government program exposes children, as well as their parents, seeking asylum to serious risk of assault, mistreatment, and trauma while waiting for their cases to be heard, Human Rights Watch said today in a joint investigation report.
Human Rights Watch, working with Stanford University's Human Rights in Trauma Mental Health Program and Willamette University's Child and Family Advocacy Clinic, found that the US Migrant Protection Protocols (MPP) program, commonly known as "Remain in Mexico," compelled families with children to wait in unsafe environments in Mexico for many months. Parents said that prolonged immigration court proceedings, fear of being incarcerated, and uncertainty about the future took a toll on their family's health, safety, and well-being. Many described changes in their children's behavior, saying they became more anxious or depressed after US authorities sent them to Mexico to await their hearings.
"The conditions, threats to safety, and sense of uncertainty asylum seekers face while waiting in Mexico creates chronic and severe psychological stress for children and families," said Dr. Ryan Matlow, clinical assistant professor in the Department of Psychiatry and Behavioral Sciences at the Stanford University School of Medicine. "We know that these forms of pervasive, unresolved complex trauma can lead to significant long-term negative consequences for child development and family functioning."
Human Rights Watch and other investigators interviewed parents and children from 60 families seeking asylum between November 2019 and January 2020. Most families were from El Salvador, Honduras, and Guatemala, with a few from Cuba, Ecuador, and Peru. The investigators also spoke with lawyers, doctors, shelter providers, faith leaders, and Mexican officials.
Under the Migrant Protection Protocols, US immigration officials have required most Spanish-speaking asylum seekers who arrive in the US through Mexico to go to Mexico while their cases are heard. Parents said that while waiting in Mexico, they or their children were beaten, harassed, sexually assaulted, or abducted. Some said Mexican police had harassed or extorted money from them. Most said they were constantly fearful and easily identified as targets for violence.
US Department of Homeland Security guidance suggests that certain particularly vulnerable groups should not be placed in the program, but the guidance is vague and immigration agents interpret it variably. US Customs and Border Protection officials regularly return to Mexico families with infants and toddlers; indigenous families and Brazilians whose first language is not Spanish; and children and adults with serious health conditions.
Asylum hearings under the Migrant Protection Protocols raise various due process concerns, Human Rights Watch said. To get to court hearings in the United States, families must report to a designated border crossing point, which sometimes requires them to arrive as early as 3 a.m. in unsafe locations. Those sent to Mexicali or Piedras Negras must make journeys of 160 to 550 kilometers (100 to 340 miles) to reach their designated border crossing point.
All family members, including young children, must appear, and sit quietly for each court hearing. Families interviewed said that they were frequently required to wait for hours for a brief hearing, and agents have told parents they risked being sent back to Mexico without seeing a judge if their children made noise or could not sit still.
Families said that after each hearing, they were locked up in very cold, often overcrowded immigration holding cells, with men and teenage boys held separately, sometimes overnight or longer, before US officials returned them to Mexico. Some said they were considering abandoning their asylum cases because their children were afraid of being detained again.
A 27-year-old woman from Honduras described being detained in an El Paso holding cell with her daughter. "I asked for a blanket for the girl. They said no," she said, saying that the guard did not give a reason.
Guards separate older boys under age 18 from their mothers and younger siblings, placing them with unrelated adults. A woman from Cuba said her 13-year-old son's separation "had a traumatic effect on him." Another described the effect of family separation on the boys he saw in his cell after his hearing: "It's very inhumane. The guards don't treat these boys like children, they treat them like adults. It's illogical."
"Locking families up in frigid, overcrowded cells and separating boys from their mothers is traumatizing," said Michael Garcia Bochenek, senior children's rights counsel at Human Rights Watch. "The US government should never inflict cruelty on children, especially not as the price of getting their day in court."
All governments are obligated to respect the customary international law principle of nonrefoulement – the prohibition on returning a person to a country where they are at risk of persecution, torture, or other cruel or inhuman treatment. Governments are also obligated to extend specific protections to children, whether traveling alone or with families, including by giving primary consideration to their best interests.
The US government should immediately terminate the MPP program and cease all returns of non-Mexican asylum seekers to Mexico. Instead, it should revert to the global norm of allowing asylum seekers to remain in the country where their claims are heard. The government should safeguard asylum seekers' right to a fair and timely hearing by establishing an adequately resourced, independent immigration court system with court-appointed legal representation for asylum seekers who are members of particularly vulnerable groups.
"'Remain in Mexico' is putting at risk families who are already facing desperate situations," said Dr. Nancy Wang, professor of emergency medicine at Stanford University Medical Center. "It's inexcusable for the US government to subject children and families to crowded, unsanitary, insecure conditions with inadequate protection from infectious diseases – whether in US immigration detention or in overstretched shelters in Mexico."
For additional information on the findings, please see below.
Migrant Protection Protocols Program
The US Department of Homeland Security (DHS) began implementing the Migrant Protection Protocols (MPP), also known as "Remain in Mexico," on January 29, 2019. Under the program, US immigration officers send most people seeking asylum who have entered the United States by land from Mexico to Mexican border towns while their cases are pending before US immigration courts. As of December, US officials sent more than 59,000 people to Mexico under the program, including at least 16,000 children.
Under the program, families with children are sent to Mexico regardless of the children's ages. DHS has stated that people "in special circumstances," including those with "[k]nown physical/mental health issues," will not be placed in the program, but US immigration officials apply the DHS guidance inconsistently, with reports that people who are critically ill, pregnant, or living with disabilities have been sent to Mexico to await their asylum hearings. According to DHS guidelines, unaccompanied children should not be placed in the program. The program applied only to asylum seekers from Spanish-speaking countries other than Mexico, but DHS announced that beginning January 29, 2020, it had begun requiring Portuguese-speaking Brazilians who are seeking asylum to remain in Mexico.
In the year since the program began, US officials have sent children in families seeking asylum to Ciudad Juárez, Matamoros, Mexicali, Nuevo Laredo, Piedras Negras, and Tijuana, and, as of January 2, to Nogales.
Sent to Danger
Asylum seekers interviewed said they or their children had been violently attacked, robbed at knifepoint, or extorted in Ciudad Juárez, Matamoros, Mexicali, Nuevo Laredo, and Tijuana while transiting through these cities before they sought asylum, or after US officials sent them to those cities. Three families said they had been abducted for ransom, in Nuevo Laredo; one family for eight days. Four families said their children had been sexually assaulted after US officials sent them to Mexico.
Two women said they were raped after being sent to Mexico, including one who was abducted and raped the day US officials sent her to Mexico. Two families said they were abducted and held for ransom almost immediately after arriving. Another woman described being robbed by armed men as she crossed into Mexico from the United States.
These accounts are in addition to 29 reports of harm to asylum seekers in Ciudad Juárez documented by Human Rights Watch in a July 2019 report.
An October 2019 study by the US Immigration Policy Center of the University of California San Diego found that one-quarter of more than 600 asylum seekers returned to Mexicali and Tijuana were threatened with physical violence while they waited in Mexico for their immigration court hearings.
Human Rights First has tracked more than 800 violent attacks on people seeking asylum, including cases of murder, rape, and abduction for ransom, in the year since the program began. That figure includes at least 200 cases of alleged kidnapping or attempted kidnapping of children.
In the current investigation, some families described extortion and other harassment by Mexican police. Edwin F. (all names are pseudonyms), a 28-year-old from Honduras staying in a shelter in Ciudad Juárez with his wife and 5-year-old son, said in January 2020: "Yesterday the police stopped a group of us. They asked all of us where we were from. They searched through our phone history as if we were coming to do harm to the country. They held us close to half an hour while they searched us, even our son. They asked for money. I didn't have any." His wife, Marisela, 21, said that when the police officers searched her: "I had some sanitary pads in a shopping bag. They dumped them out on the ground. Everything I had, they dumped out on the ground." The encounter traumatized their 5-year-old. "He became really anxious," his father said. "He started to cry uncontrollably."
Under DHS policy, people seeking asylum should receive an interview with an asylum officer, known as a "credible fear" interview, if they tell immigration agents they fear harm in Mexico. DHS guidance states that "a third-country national should not be involuntarily returned to Mexico . . . if the alien would more likely than not be persecuted. . . or tortured."
Many families said these interviews were by telephone and not face-to-face. Assessing these interviews, a former asylum officer wrote: "[The MPP] process places on the applicants the highest burden of proof in civil proceedings in the lowest quality hearing available."
"If you say you're afraid of going back to Mexico, they put you in a cell in the *hielera *[the "freezer," referring to an immigration holding cell]," said Nelly O., a 27-year-old Honduran woman. "You wait for a call. They call this a 'credible fear' interview. When the call comes, it could be nighttime. You spend the entire night in the hielera."
The families who spoke to the investigation team said they received an interview, but organizations working in Ciudad Juárez and Tijuana told Human Rights Watch that many asylum seekers had not. "People are now being denied interviews, with no reason given and no documentation of denial," said Tania Guerrero, an attorney with the Estamos Unidos Asylum Project of CLINIC. She said she had heard of more than 10 such cases in El Paso in a single week in January.
Every family we interviewed said immigration officials did not actively ask them if they feared being sent to Mexico, and DHS guidance does not require them to. "They didn't really ask us what our case was or why we left our countries," said Maria Q., a 41-year-old from Honduras, of her hearing in San Diego in October. "They said they couldn't do anything. They just handed us some papers. They didn't pay attention to what we needed or what we said."
Marisela F., a 21-year-old from Honduras, said that at her hearing in El Paso in December with her husband and their 5-year-old son: "The officials didn't ask about Mexico." While one of the papers they received before they were sent to Ciudad Juárez stated, "Attached is a credible fear worksheet," they had no memory of ever receiving such a worksheet and had no copy of one among the papers from their legal proceedings.
Similarly, the US Immigration Policy Center found that more than one-third of people seeking asylum were not asked by US immigration officials if they feared being sent to Mexico. Of those who were asked, nearly 9 out of 10 told immigration agents they feared harm if returned to Mexico; nearly 60 percent of them were not given a secondary interview to explain their fears.
Families returned to Mexico despite their expressed fears of harm said they were afraid to request interviews during subsequent court hearings. They said their initial experience suggested that they would not be believed and that requesting an interview would only mean more time detained. Julián M., a 28-year-old Honduran man, said that the second time he and his family went for their court hearing, they decided not to ask for a call to explain their fear of returning to Mexico. "If we did, we would have to wait another night in the cell," he said.
Ordeal Getting to Immigration Court
Asylum seekers sent to Mexicali must find transportation to Tijuana, 180 kilometers (110 miles) west, to report at the border for immigration court hearings in San Diego. Families sent to Piedras Negras must travel an equivalent distance to Laredo for hearings.
"From Mexicali, we had to make our way here [to Tijuana]," Maria Q. said. "The immigration agents didn't give us any directions. They didn't tell us where there were shelters."
Children and families sent to Nogales will have to make their way to Ciudad Juárez, a 550-kilometer (340-mile), seven-and-a-half-hour journey by the most direct route through Mexico, for hearings.
If children and families cannot or do not make the long, potentially dangerous journey, an immigration judge can reject their asylum claim and in their absence order them deported.
Families said that immigration agents told them they had to arrive at the border crossings between 3 a.m. and 4 a.m. for hearings beginning at 8 a.m.
Families in Tijuana said that because of the difficulty and danger of traveling from their shelters in the middle of the night, especially with children, they stayed in hotel rooms if they could afford to. Many, including young women with toddlers, said they did not have the money and spent the night on the street outside the border crossing. Some families described concerns about being stalked or profiled while looking for hotels or waiting in the street and feared that they could be extorted or kidnapped.
Once allowed to enter US territory, families undergo health screenings, including lice checks, then are transported to the immigration court. If all family members do not pass the health screening, including the lice checks, the family is rescheduled for another hearing, often a month or more later.
"We wait in a hallway, seated in chairs," said Nuria J. "The kids are right there with us. There's nowhere else for them. They can't play. The guards don't permit them to move around. They reprimand you if the kids get out of the chairs. You sit all day. It's a long time." Another woman said: "If you have a baby and you need to change your baby's diapers, they'll give you a diaper. But there's no place to go. You have to change your baby on the floor, right there in the hallway."
Blanca M., 31, attended her first immigration court hearing in August with her husband and their three daughters, all under age 5. "We had nothing to eat from 9 a.m. to 3 p.m.," she said. "The officials wanted us to keep the kids quiet. Really I was at the point of giving up." Her husband added: "One guard kept saying, 'Those of you with children, control them. If your children are fucking around, I can take away your court hearing.' It's almost impossible to get a 1-year-old to stay seated in a chair." They said the same thing happened inside the courtroom.
Some families said they were thinking of abandoning their asylum claims because the process was so traumatic for their children.
A Bewildering Process and Little Access to Counsel
Families interviewed in Ciudad Juarez and Tijuana described a chaotic, confusing process once they saw an immigration judge.
Most expected that they would be able to explain their situation to a judge immediately, but the first hearing, a "master calendar" hearing, is a brief session to handle preliminary matters and set a date for a longer individual hearing. Asylum seekers who need more time to prepare or to seek legal representation are often rescheduled for an additional master calendar hearing. Some families said they had three brief master calendar hearings. Most we spoke to said they were sent to Mexico after each hearing with very little understanding of what had happened and what they needed to do to pursue their claims.
Most papers they received were in English. They must submit their asylum applications in English, with all supporting documentation translated into English.
Associated Press reporters who visited immigration courts in 11 cities, including El Paso and San Diego, described what they saw as "nonstop chaos" – overcrowded courtrooms, evidence misplaced in stacks of paper files, and hearings without interpreters, among other shortcomings.
People seeking asylum in the United States are not guaranteed legal representation. Instead, US law states that they have the "privilege of being represented (at no expense to the government)." Pro bono or low-cost legal representation is difficult to find even for those inside the country. For the tens of thousands of families sent to Mexico, obtaining counsel is nearly impossible – with nowhere near enough pro bono lawyers to meet the need. Only 14 of the 1,155 cases decided in the program's first five months, 1.2 percent, had legal representation.
Immigration officials provided a woman who attended a hearing in Laredo a list of legal service providers – showing lawyers in Dallas, 700 kilometers (430 miles) away.
Some asylum seekers alleged that abuses by US immigration agents directly affected their ability to present their claims. Nicola A. said a uniformed US border agent tore up the documents corroborating her account of persecution in her home country. She now fears that she will not have sufficient proof to support her asylum claim.
Detention in Frigid US Immigration Holding Cells
Most of the families interviewed said that they spent at least one night and sometimes more after their court hearing in the immigration holding cells known as the hieleras.
These holding cells are notoriously cold, with temperatures reaching as low as 15 degrees Celsius (59 degrees Fahrenheit). People detained in these cell have frequently been subjected to substandard conditions and abusive treatment, as Human Rights Watch and other groups have consistently reported.
"When we entered, the guards turned the air conditioning up," said Maria Q. "They took away our sweaters and said they would wash them, but they never returned them."
Wendy G., 32, from Honduras, was held in the *hielera *with her 12-year-old daughter and 10 and 8-year-old sons in August and again in September after each of her court hearings. "It was really cold both times," she said. "Some of the guards shouted at us…They would give us food that was still frozen. They told us we risked being locked up more days if we misbehaved."
Families said immigration holding cells could be very overcrowded, consistent with reports in June by lawyers and the DHS Office of Inspector General. Edwin F. said that after his family's court hearing in December, "We were held in the [border station] cells…My wife was held with our son, I was in another cell. There were 17 of us in a small space. It was hard to lie down." Because their court date was on December 23, they stayed in the holding cells for four days, returning to Ciudad Juárez on December 27.
Julián M. said that after he and his family had a court hearing in October, they were held in an El Paso immigration holding cell:
The cell I was in had a capacity of 38. There was a sign. It was in English, but I understood the word "capacity," and right next to it was the number 38. We all counted ourselves. There were 112 of us in that cell. At first there were 99. Then the guards brought 13 more. The 13 didn't fit. We were all sleeping on the floor. An official told us to get up so everyone could fit in the cell. He had a stun gun. He threatened us with it, saying, "If you don't get up, I'll shoot you with the stun gun." Of course everyone immediately got up. Nobody slept that night.
Most of the families interviewed said they were detained for one or two days after their hearings, but some families described periods lasting three or four days or longer. Nuria J. said that when she was in the *hielera *with her son and daughter: "[t]here was one guy, maybe 35 years old, who said he had spent seven days locked up after his court hearing."
Families in immigration holding cells have no opportunity to bathe. Many described the cells as "dirty" and "filthy."
Some described significant health concerns in the holding cells. Nicola A., who has public health training, said that while she and her family were in immigration holding cells, "I noticed that there were numerous people carrying lice, as well as people showing signs and symptoms of varicella [chicken pox]. Nonetheless, we were all kept together in the same rooms – these conditions were extremely unsanitary.
Previous reports and inspections of immigration holding cells by government inspectors, Human Rights Watch, and others have also found unsanitary and otherwise substandard conditions, including flu, lice, scabies, shingles, and chicken pox transmission, overcrowding, and inadequate food. A San Antonio-based group of volunteer doctors, nurses, and social workers, Sueños Sin Fronteras, found that new medical conditions arose while in immigration holding cells, including "a lot of boils and skin rashes, attributable to the lack of hygiene, and severe constipation, attributable to the dehydration and poor food intake" and near-universal "complaints of flu symptoms or respiratory problems or both."
Adverse Consequences for Mental Well-Being
The combined trauma of families' flights from persecution, and the dangers they faced on their journeys to the United States, and now face in Mexico, have had serious negative effects on their mental well-being.
"The children and families we saw showed incredible strength and resilience," Dr. Ryan Matlow said. "At the same time, the conditions they face while waiting for their asylum hearings continuously erode the resources and protective influences that would help them maintain their physical and psychological health. Trauma and adversity have a cumulative impact on health, meaning that chronic stress over time, along with repeated exposure to threats increase the prevalence and severity of possibly long-lasting negative physical and mental health outcomes."
The families interviewed described their despair, hopelessness, anxiety, and deteriorating family relationships. "Families are doing their best to survive and adapt to the circumstances they are placed in, but the sense that they are under chronic threat and danger leads to long-term experiences of anxiety, mistrust, hypervigilance, behavioral reactivity, withdrawal, and fatigue," Matlow said. He said that children were especially susceptible to trauma, which is associated with learning difficulties, behavior problems, health impairment, and shortened life expectancy.
"It's hardest on our son," said Edwin F., choking up as he described the changes in his 5-year-old son during the three months they had been in Mexico. "He isn't prepared mentally for these things. We've seen a change in him… Before he was more easygoing. Now he's easily bothered, more irritable, gets angry easily. He's anxious and impulsive now, he doesn't control himself. He was more well-behaved in Honduras. Now he misbehaves. We've seen a complete change in the boy. We didn't want this life for our son."
Tania Guerrero, the CLINIC project attorney, said: "The women I speak to tell me, 'Nobody understands what we're going through here [in Ciudad Juárez].' They have been here eight months. They're exhausted, alone, miserable. They want to get on with their lives. The level of disillusionment and despair they feel is profound."
Nicola A. said:
"We are constantly under stress by our inability to request asylum and find shelter in a safe place. We are afraid and anxious in Mexico, given that our kidnappers are still pursuing us. We are afraid of being separated and detained again in the horrendous conditions in immigration detention… We experience these fears every day. We have ongoing health concerns and we are running out of money to pay for medication and treatment… This entire experience has had a negative impact on our family."
"Our son appears traumatized and is more quiet, depressed, and withdrawn than I have ever seen him before. My husband and I are constantly anxious and irritable due to the constant stress. We are desperate, and we are losing hope that we will be able to find safety and refuge from the persecution and victimization that we have experienced. We are starting to believe that there is no safe place where we can go and be accepted."
Human Rights Watch: © Copyright, Human Rights Watch - 350 Fifth Avenue, 34th Floor New York, NY 10118-3299 USA
Protection and Human Rights
News and Press Release


As much as Anna Karenina, Sergei Soloviev's labour of love - which screened alongside this film at the London Russian Film Festival - appealed to me, this grated and jarred. This may be a sequel to the much-lauded ASSA but I simply cannot see it achieving the same cult status. If you haven't seen ASSA, which ended with Drubcich being jailed for the murder of her lover, this film will be meaningless and confusing.
In this film, Drubich is resurrected when film director, Sergei Makovetski, plucks her from obscurity in prison and turns her into a star as Anna Karenina. However, the daughter of the man she murdered has vowed to sabotage the picture by arranging the "second death" of Anna Karenina.
The film opens with Victor Troy singing 'We Wait For Change' which opened the originl ASSA. This film is packed with musical interludes, such as punk rocker Sergei Shnurov, classical violinist Yuri Bashmet and Anna Solovieva (Soloviev and Drubich's daughter), who all have a turn in the spotlight. But it is the sepia shots featuring Ekaterina Volkova that represent the most striking use of staging.
I am afraid I got fed up with the constant switching from one scene or character to the next and the need to constantly pause the screening DVD and rewind because I felt I might have missed something. I'm afraid my conclusion is that the only thing I missed is how this film ever raised enough money to see the light of day. As good as Anna Karenina was, this film is a woeful piece of self-indulgence. I feel sad that the same director could produce both.


Review Request #125130 - Created Sept. 10, 2015 and submitted Sept. 10, 2015, 9:37 a.m.
Not sure if I should remove the boilerplate code as well?
Sept. 10, 2015, 7:56 a.m.
Not sure which boilerplate code you mean.
I would just replace the awful #include <QtDBus/QtDBus> which includes also all of QtCore, and replace it with the #include <QDBusAbstractAdaptor>, but other than that, the rest looks useful to me.
Sept. 10, 2015, 9:37 a.m.
Submitted with commit 48eaf3b9e0105fa68faf4495ae9632fe7720097d by Pinak Ahuja to branch master.


Are there American-trained doctors in San Miguel de Allende?
Are there English-speaking doctors in San Miguel de Allende?
How much do healthcare and medical services cost in San Miguel de Allende?
How good are the medical centers, hospitals and health clinics in San Miguel de Allende, and how close are they?
How is the dental care in San Miguel de Allende?
Are the doctors in San Miguel de Allende good?