xml my.cnf中

my.cnf
# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
# Configuration name master generated for bp_2011@163.com at 2017-07-21 09:16:04

[mysql]

# CLIENT #
port                                = 3306
socket                              = /usr/local/mysql/data/mysql.sock

[mysqld]

# GENERAL #
user                                = mysql
default-storage-engine              = InnoDB
character_set_server                = utf8
socket                              = /usr/local/mysql/data/mysql.sock
pid-file                            = /usr/local/mysql/data/mysql.pid

# MyISAM #
key-buffer-size                     = 32M
myisam-recover                      = FORCE,BACKUP

# SAFETY #
max-allowed-packet                  = 16M
max-connect-errors                  = 1000000

# DATA STORAGE #
datadir                             = /usr/local/mysql/data/

# BINARY LOGGING #
log-bin                             = /usr/local/mysql/data/mysql-bin
expire-logs-days                    = 14
sync-binlog                         = 1

# REPLICATION #
log-slave-updates                   = 1
relay-log                           = /usr/local/mysql/data/relay-bin
slave-net-timeout                   = 60

auto_increment_increment 	          = 2 
auto_increment_offset               = 1
server-id 					                = 100 #从机为101
binlog_format 				              = ROW
sync_binlog 				                = 1
gtid_mode 					                = on
enforce_gtid_consistency 	          = 1 
binlog_gtid_simple_recovery         = 1 

# CACHES AND LIMITS #
tmp-table-size                      = 32M
max-heap-table-size                 = 32M
query-cache-type                    = 0
query-cache-size                    = 0
max-connections                     = 1024
thread-cache-size                   = 400
open-files-limit                    = 65535
table-definition-cache              = 1024
table-open-cache                    = 2048
wait_timeout 				                = 1800
interactive_timeout 		            = 1800

# INNODB #
innodb_io_capacity 			            = 500 # SSD 2000 ~ 20000 
innodb-flush-method                 = O_DIRECT
innodb-log-files-in-group           = 3
innodb-log-file-size                = 1G
innodb-flush-log-at-trx-commit      = 1
innodb-file-per-table               = 1
innodb-buffer-pool-size             = 12G 
innodb_lock_wait_timeout            = 5 
innodb_log_buffer_size              = 8388608 
innodb_print_all_deadlocks          = ON 
innodb_flush_log_at_trx_commit      = 2 
innodb_additional_mem_pool_size     = 32M 
innodb_data_file_path               = ibdata1:512M:autoextend 
innodb_autoextend_increment         = 64 
innodb_thread_concurrency           = 0 
innodb_old_blocks_time              = 1000 
innodb_buffer_pool_instances        = 8 
innodb_lru_scan_depth               = 512 
innodb_flush_neighbors              = 1 # SSD必须设置为0 
innodb_checksum_algorithm           = crc32 
innodb_buffer_pool_dump_at_shutdown = ON 
innodb_buffer_pool_load_at_startup  = ON 
innodb_buffer_pool_dump_pct         = 40 
innodb_read_io_threads              = 8 
innodb_write_io_threads             = 8 
innodb_purge_threads                = 4 
innodb_page_cleaners                = 4 


# LOGGING #
log-error                           = /usr/local/mysql/data/mysql-error.log
log-queries-not-using-indexes       = 1
slow-query-log                      = 1
slow-query-log-file                 = /usr/local/mysql/data/mysql-slow.log

skip-name-resolve 			            = 1 
skip_external_locking               = 1
lower_case_table_names 		          = 1
local_infile 				                = 0 

#slave crash safe#
relay_log_info_repository 	        = TABLE 
master_info_repository 		          = TABLE 
relay_log_recovery 			            = ON




xml 模式配置信息

schema
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="mmc" checkSQLschema="false" sqlMaxLimit="100"  >
		<table name="sys_func" dataNode="dn1"/>
		<table name="sys_menu" dataNode="dn1"/>
		<table name="sys_org" dataNode="dn1"/>
		<table name="sys_perm" dataNode="dn1"/>
		<table name="sys_perm_func" dataNode="dn1"/>
		<table name="sys_perm_menu" dataNode="dn1"/>
		<table name="sys_role" dataNode="dn1"/>
		<table name="sys_role_perm" dataNode="dn1"/>
		<table name="sys_seq_conf" dataNode="dn1"/>
		<table name="sys_user" dataNode="dn1"/>
		<table name="sys_user_role" dataNode="dn1"/>
		<table name="t_acty" dataNode="dn1"/>
		<table name="t_acty_action_rel" dataNode="dn1"/>
		<table name="t_acty_giftgroup_rel" dataNode="dn1"/>
		<table name="t_acty_goods_rel" dataNode="dn1"/>
		<table name="t_acty_qualify_rel" dataNode="dn1"/>
		<table name="t_acty_rule_group_rel" dataNode="dn1"/>
		<table name="t_acty_rule_rel" dataNode="dn1"/>
		<table name="t_actygroup" dataNode="dn1"/>
		<table name="t_actygroup_acty_rel" dataNode="dn1"/>
		<table name="t_address" dataNode="dn1"/>
		<table name="t_address_order_rel" dataNode="dn1"/>
		<table name="t_cons_tran_flow" dataNode="dn1"/>
		<table name="t_datasyn_config" dataNode="dn1"/>
		<table name="t_gift_action_conf" dataNode="dn1"/>
		<table name="t_gift_action_rel" dataNode="dn1"/>
		<table name="t_gift_consume_order" dataNode="dn1"/>
		<table name="t_gift_consume_order_detail" dataNode="dn1"/>
		<table name="t_gift_error_order" dataNode="dn1"/>
		<table name="t_gift_exch_order" dataNode="dn1"/>
		<table name="t_gift_exch_order_detail" dataNode="dn1"/>
		<table name="t_gift_exch_order_sas" dataNode="dn1"/>
		<table name="t_gift_exch_rule" dataNode="dn1"/>
		<table name="t_gift_rule_group_rel" dataNode="dn1"/>
		<table name="t_gift_rule_rel" dataNode="dn1"/>
		<table name="t_giftgroup_gift_rel" dataNode="dn1"/>
		<table name="t_goods" dataNode="dn1"/>
		<table name="t_guard_log" dataNode="dn1"/>
		<table name="t_guard_log_config" dataNode="dn1"/>
		<table name="t_ics_receive" dataNode="dn1"/>
		<table name="t_ics_signup" dataNode="dn1"/>
		<table name="t_ics_wallet" dataNode="dn1"/>
		<table name="t_intg_crypt_config" dataNode="dn1"/>
		<table name="t_intg_http_config" dataNode="dn1"/>
		<table name="t_intg_message_template" dataNode="dn1"/>
		<table name="t_intg_message_type" dataNode="dn1"/>
		<table name="t_intg_mockservice" dataNode="dn1"/>
		<table name="t_intg_service_define" dataNode="dn1"/>
		<table name="t_intg_socket_config" dataNode="dn1"/>
		<table name="t_lottery_action" dataNode="dn1"/>
		<table name="t_lottery_acty" dataNode="dn1"/>
		<table name="t_lottery_acty_motion_rel" dataNode="dn1"/>
		<table name="t_lottery_acty_rule_group_rel" dataNode="dn1"/>
		<table name="t_lottery_acty_rule_rel" dataNode="dn1"/>
		<table name="t_lottery_compensate" dataNode="dn1"/>
		<table name="t_lottery_compensate_param" dataNode="dn1"/>
		<table name="t_lottery_disk" dataNode="dn1"/>
		<table name="t_lottery_mode" dataNode="dn1"/>
		<table name="t_lottery_motion" dataNode="dn1"/>
		<table name="t_lottery_order_log" dataNode="dn1"/>
		<table name="t_lottery_param" dataNode="dn1"/>
		<table name="t_lottery_pool_rule_group_rel" dataNode="dn1"/>
		<table name="t_lottery_pool_rule_rel" dataNode="dn1" />
        <table name="t_lottery_prize" dataNode="dn1" />
        <table name="t_lottery_prize_rule_group_rel" dataNode="dn1" />
        <table name="t_lottery_prize_rule_rel" dataNode="dn1" />
        <table name="t_lottery_qualify" dataNode="dn1" />
        <table name="t_lottery_rule_group" dataNode="dn1" />
        <table name="t_lottery_rule_group_rel" dataNode="dn1" />
        <table name="t_lottery_score" dataNode="dn1" />
        <table name="t_lottery_stat_detail" dataNode="dn1" />
        <table name="t_lottery_task" dataNode="dn1" />
        <table name="t_merchant" dataNode="dn1" />
        <table name="t_param_tmp" dataNode="dn1" />
        <table name="t_pay_trans_flow" dataNode="dn1" />
        <table name="t_pay_trans_log" dataNode="dn1" />
        <table name="t_real_market_qualify" dataNode="dn1" />
        <table name="t_reconcile_detail" dataNode="dn1" />
        <table name="t_reconcile_file_detail" dataNode="dn1" />
        <table name="t_reconcile_log" dataNode="dn1" />
        <table name="t_reconcile_result" dataNode="dn1" />
        <table name="t_ri_type_conf" dataNode="dn1" />
        <table name="t_rule_conf" dataNode="dn1" />
        <table name="t_rule_group_conf" dataNode="dn1" />
        <table name="t_rule_group_conf_rel" dataNode="dn1" />
        <table name="t_sendcoupon_order" dataNode="dn1" />
        <table name="t_ship_attr" dataNode="dn1" />
        <table name="t_shop" dataNode="dn1" />
        <table name="t_shop_terminal_rel" dataNode="dn1" />
        <table name="t_sys_dict_dft_levelone" dataNode="dn1" />
        <table name="t_sys_dict_dft_leveltwo" dataNode="dn1" />
        <table name="t_sys_intg_conf" dataNode="dn1" />
        <table name="t_timertask_log" dataNode="dn1" />
        <table name="t_trans_item" dataNode="dn1" />
        <table name="t_user_bonus_detail" dataNode="dn1" />
        <table name="t_user_info" dataNode="dn1" />
        <table name="t_user_recommend_detail" dataNode="dn1" />
        <table name="t_userkey_match" dataNode="dn1" />
        <table name="welfare_acty_conf" dataNode="dn1" />
        <table name="welfare_acty_conf_bak" dataNode="dn1" />
        <table name="welfare_acty_gift_conf" dataNode="dn1" />
        <table name="welfare_acty_gift_conf_bak" dataNode="dn1" />
        <table name="welfare_acty_qualify_conf" dataNode="dn1" />
        <table name="welfare_acty_qualify_conf_bak" dataNode="dn1" />
        <table name="welfare_acty_qualify_conf_proddate_bak" dataNode="dn1" />

        <table name="t_lottery_order" dataNode="dn$2-17" rule="sharding-by-murmur"/>
        <table name="t_lottery_order_detail" dataNode="dn$2-17" rule="sharding-by-murmur"/>
		<table name="t_lottery_order_log" dataNode="dn$2-17" rule="sharding-by-murmur"/>
	</schema>
	<schema name="ammp" checkSQLschema="false" sqlMaxLimit="100" dataNode="ammp" />
	<schema name="logistics" checkSQLschema="false" sqlMaxLimit="100" dataNode="logistics" />
	<schema name="merchant" checkSQLschema="false" sqlMaxLimit="100" dataNode="merchant" />
	<schema name="verify" checkSQLschema="false" sqlMaxLimit="100" dataNode="verify" />
	<schema name="dtmc" checkSQLschema="false" sqlMaxLimit="100" dataNode="dtmc" />
	
	<dataNode name="dn1" dataHost="C1" database="mmc" />	
	<dataNode name="dn2" dataHost="C1" database="mmc_sd1" />
	<dataNode name="dn3" dataHost="C1" database="mmc_sd2" />
	<dataNode name="dn4" dataHost="C1" database="mmc_sd3" />
	<dataNode name="dn5" dataHost="C1" database="mmc_sd4" />
	<dataNode name="dn6" dataHost="C1" database="mmc_sd5" />
	<dataNode name="dn7" dataHost="C1" database="mmc_sd6" />
	<dataNode name="dn8" dataHost="C1" database="mmc_sd7" />
	<dataNode name="dn9" dataHost="C1" database="mmc_sd8" />
	<dataNode name="dn10" dataHost="C1" database="mmc_sd9" />
	<dataNode name="dn11" dataHost="C1" database="mmc_sd10" />
	<dataNode name="dn12" dataHost="C1" database="mmc_sd11" />
	<dataNode name="dn13" dataHost="C1" database="mmc_sd12" />
	<dataNode name="dn14" dataHost="C1" database="mmc_sd13" />
	<dataNode name="dn15" dataHost="C1" database="mmc_sd14" />
	<dataNode name="dn16" dataHost="C1" database="mmc_sd15" />
	<dataNode name="dn17" dataHost="C1" database="mmc_sd16" />
	<dataNode name="dtmc" dataHost="C1" database="tmc" />
	<dataNode name="logistics" dataHost="C1" database="logistics" />
	<dataNode name="verify" dataHost="C1" database="verify" />
	<dataNode name="ammp" dataHost="C2" database="ammp" />
	<dataNode name="merchant" dataHost="C3" database="merchant" />

	
	<dataHost name="C1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="jdbc:mysql://198.203.73.151:3306" user="mmc"  password="Cmbc*1234!" />
		<writeHost host="hostM2" url="jdbc:mysql://198.203.73.152:3306" user="mmc" password="Cmbc*1234!"/>
	</dataHost>

	<dataHost name="C2" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="jdbc:mysql://198.203.73.151:3308" user="ammp"  password="4rfv%TGB" />
		<writeHost host="hostM2" url="jdbc:mysql://198.203.73.152:3308" user="ammp" password="4rfv%TGB"/>
	</dataHost>	

	<dataHost name="C3" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="hostM1" url="jdbc:mysql://198.203.73.151:3306" user="merchant"  password="4rfv%TGB" />
		<writeHost host="hostM2" url="jdbc:mysql://198.203.73.152:3306" user="merchant" password="4rfv%TGB"/>
	</dataHost>	

	

	
</mycat:schema>

xml 使用数据导入处理程序在Solr中导入/索引数据库(MySQL或SQL Server)

使用数据导入处理程序在Solr中导入/索引数据库(MySQL或SQL Server)

00. tutorial.md
# Importing/Indexing database (MySQL or SQL Server) in Solr using Data Import Handler

# Install Solr

download and install Solr from  http://lucene.apache.org/solr/.

you can access Solr admin from your browser:
http://localhost:8983/solr/

use the port number used in installation.


# MySQL connector

Download JDBC driver for MySQL from http://dev.mysql.com/downloads/connector/j/.

Copy file from the downloaded archive 'mysql-connector-java-*.jar' 
to the folder 'contrib/dataimporthandler/lib' in the folder where Solr was installed.
Create 'lib' folder if needed.

# MS SQL Server connector

Download Microsoft JDBC Driver 4.0 for SQL Server from:
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774


copy file 'sqljdbc4.jar' to 'contrib/dataimporthandler/lib'

# Setup a new collection
create a new folder for a new collection - 'myproducts'.
The collection will be located in '/solr/myproducts' folder.
Create folders conf and data in the collection folder:
- /solr/myproducts/conf
- /solr/myproducts/data


## solrconfig.xml

copy solrconfig.xml from an existing collection. Find my version of solrconfig.xml below in this gist.

edit solrconfig.xml by adding:

    <lib dir="../../contrib/dataimporthandler/lib" regex=".*\.jar" />
    <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" />

Make sure that 'dist' folder contains two files for data import handler:
- solr-dataimporthandler-4.10.2.jar
- solr-dataimporthandler-extras-4.10.2.jar


add these lines to solrconfig.xml:
  
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
        <str name="config">data-config.xml</str>
        </lst>
    </requestHandler>


## data-config.xml for MySQL database

the file 'data-config.xml' will define data we want to import/index from our datasource.
Assuming that our DB named mydb1 and we have table products with columns id, name and updated_at.
Column 'updated_at' of datetime type stores the date of last modification of the row. This column will be used in incremental import to track rows modified since the last import into Solr.

    # define data source
    <dataConfig>
    <dataSource type="JdbcDataSource" 
                driver="com.mysql.jdbc.Driver"
                url="jdbc:mysql://localhost:3306/mydb1" 
                user="root" 
                password=""/>
    <document>
      <entity name="product"  
        pk="id"
        query="select id,name from products"
        deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
        deltaQuery="SELECT id FROM products  WHERE updated_at > '${dih.last_index_time}'"
        >
         <field column="id" name="id"/>
         <field column="name" name="name"/>       
      </entity>
    </document>
    </dataConfig>


*	The 'query' gives the data needed to populate fields of the Solr document in full-import
*	The 'deltaImportQuery' gives the data needed to populate fields when running a delta-import
*	The 'deltaQuery' gives the primary keys of the current entity which have changes since the last index time

Full-import command uses the "query" query, delta-import command uses the delta components.


## data-config.xml for SQL Server database

    <dataConfig>
      <dataSource type="JdbcDataSource" 
                  driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
                  url="jdbc:sqlserver://servername\instancename;databaseName=mydb"   
                  user="sa" 
                  password="mypass"/>
      <document>
        <entity name="product"  
          pk="id"
          query="select id,name from products"
          deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
          deltaQuery="SELECT id FROM products  WHERE updated_at > '${dih.last_index_time}'"
          >
           <field column="id" name="id"/>
           <field column="name" name="name"/>       
        </entity>
      </document>
    </dataConfig>


  
  
## schema.xml

edit file 'schema.xml' accordingly to fields defined in data-import.xml:

    <schema name="example" version="1.5">
        <field name="_version_" type="long" indexed="true" stored="true"/>
        <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
        <field name="name" type="text_general" indexed="true" stored="true"/>
        ...
  
    
## add collection to solr

use admin interface in your browser to add a new collection.
Add core:
- name: myproducts
- instanceDir: myproducts


# Perform full or incremental import 

After successfully adding a collection to Solr you can select it and run dataimport commands:
- full-import - use URL: http://localhost:8983/solr/myproducts/dataimport?command=full-import
- delta-import - use URL: http://localhost:8983/solr/myproducts/dataimport?command=delta-import

The full import loads all data every time, while incremental import means only adding the data that changed since the last indexing. 
By default, full import starts with removal the existing index (parameter clean=true). 

Note! Use clean=false while running delta-import command.

debug=true - The debug mode limits the number of rows to 10 by default and it also forces indexing to be synchronous with the request.

    
# References

* http://wiki.apache.org/solr/DIHQuickStart
* http://wiki.apache.org/solr/DataImportHandler

01. solrconfig.xml-requesthandler
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
  </requestHandler>
  
03a. MySQL data-config.xml
<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/my_test1" 
              user="root" 
              password=""/>
  <document>
    <entity name="product"  
      pk="id"
      query="select id,name from products"
      deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
      deltaQuery="SELECT id FROM products  WHERE updated_at > '${dih.last_index_time}'"
      >
       <field column="id" name="id"/>
       <field column="name" name="name"/>       
    </entity>
  </document>
</dataConfig>
03b. SQL Server data-config.xml

    <dataConfig>
      <dataSource type="JdbcDataSource" 
                  driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
                  url="jdbc:sqlserver://servername\instancename;databaseName=mydb"   
                  user="sa" 
                  password="mypass"/>
      <document>
        <entity name="product"  
          pk="id"
          query="select id,name from products"
          deltaImportQuery="SELECT id,name from products WHERE id='${dih.delta.id}'"
          deltaQuery="SELECT id FROM products  WHERE updated_at > '${dih.last_index_time}'"
          >
           <field column="id" name="id"/>
           <field column="name" name="name"/>       
        </entity>
      </document>
    </dataConfig>
04. schema.xml
<?xml version="1.0" encoding="UTF-8" ?>


<schema name="example" version="1.5">

   <field name="_version_" type="long" indexed="true" stored="true"/>
   
   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="name" type="text_general" indexed="true" stored="true"/>



   <!-- Dynamic field definitions allow using convention over configuration
       for fields via the specification of patterns to match field names. 
       EXAMPLE:  name="*_i" will match any field ending in _i (like myid_i, z_i)
       RESTRICTION: the glob-like pattern in the name attribute must have
       a "*" only at the start or the end.  -->
   
   <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
   <dynamicField name="*_is" type="int"    indexed="true"  stored="true"  multiValued="true"/>
   <dynamicField name="*_s"  type="string"  indexed="true"  stored="true" />
   <dynamicField name="*_ss" type="string"  indexed="true"  stored="true" multiValued="true"/>
   <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
   <dynamicField name="*_ls" type="long"   indexed="true"  stored="true"  multiValued="true"/>
   <dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true"/>
   <dynamicField name="*_txt" type="text_general"   indexed="true"  stored="true" multiValued="true"/>
   <dynamicField name="*_en"  type="text_en"    indexed="true"  stored="true" multiValued="true"/>
   <dynamicField name="*_b"  type="boolean" indexed="true" stored="true"/>
   <dynamicField name="*_bs" type="boolean" indexed="true" stored="true"  multiValued="true"/>
   <dynamicField name="*_f"  type="float"  indexed="true"  stored="true"/>
   <dynamicField name="*_fs" type="float"  indexed="true"  stored="true"  multiValued="true"/>
   <dynamicField name="*_d"  type="double" indexed="true"  stored="true"/>
   <dynamicField name="*_ds" type="double" indexed="true"  stored="true"  multiValued="true"/>

   <!-- Type used to index the lat and lon components for the "location" FieldType -->
   <dynamicField name="*_coordinate"  type="tdouble" indexed="true"  stored="false" />

   <dynamicField name="*_dt"  type="date"    indexed="true"  stored="true"/>
   <dynamicField name="*_dts" type="date"    indexed="true"  stored="true" multiValued="true"/>
   <dynamicField name="*_p"  type="location" indexed="true" stored="true"/>

   <!-- some trie-coded dynamic fields for faster range queries -->
   <dynamicField name="*_ti" type="tint"    indexed="true"  stored="true"/>
   <dynamicField name="*_tl" type="tlong"   indexed="true"  stored="true"/>
   <dynamicField name="*_tf" type="tfloat"  indexed="true"  stored="true"/>
   <dynamicField name="*_td" type="tdouble" indexed="true"  stored="true"/>
   <dynamicField name="*_tdt" type="tdate"  indexed="true"  stored="true"/>

   <dynamicField name="*_c"   type="currency" indexed="true"  stored="true"/>

   <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
   <dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/>

   <dynamicField name="random_*" type="random" />

   <!-- uncomment the following to ignore any fields that don't already match an existing 
        field name or dynamic field, rather than reporting them as an error. 
        alternately, change the type="ignored" to some other type e.g. "text" if you want 
        unknown fields indexed and/or stored by default --> 
   <!--dynamicField name="*" type="ignored" multiValued="true" /-->
   



 <!-- Field to use to determine and enforce document uniqueness. 
      Unless this field is marked with required="false", it will be a required field
   -->
 <uniqueKey>id</uniqueKey>

 <!-- DEPRECATED: The defaultSearchField is consulted by various query parsers when
  parsing a query string that isn't explicit about the field.  Machine (non-user)
  generated queries are best made explicit, or they can use the "df" request parameter
  which takes precedence over this.
  Note: Un-commenting defaultSearchField will be insufficient if your request handler
  in solrconfig.xml defines "df", which takes precedence. That would need to be removed.
 <defaultSearchField>text</defaultSearchField> -->

 <!-- DEPRECATED: The defaultOperator (AND|OR) is consulted by various query parsers
  when parsing a query string to determine if a clause of the query should be marked as
  required or optional, assuming the clause isn't already marked by some operator.
  The default is OR, which is generally assumed so it is not a good idea to change it
  globally here.  The "q.op" request parameter takes precedence over this.
 <solrQueryParser defaultOperator="OR"/> -->

  <!-- copyField commands copy one field to another at the time a document
        is added to the index.  It's used either to index the same field differently,
        or to add multiple fields to the same field for easier/faster searching.  -->




    <!-- field type definitions. The "name" attribute is
       just a label to be used by field definitions.  The "class"
       attribute and any other attributes determine the real
       behavior of the fieldType.
         Class names starting with "solr" refer to java classes in a
       standard package such as org.apache.solr.analysis
    -->

    <!-- The StrField type is not analyzed, but indexed/stored verbatim.
       It supports doc values but in that case the field needs to be
       single-valued and either required or have a default value.
      -->
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />

    <!-- boolean type: "true" or "false" -->
    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>



    <!--
      Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.

      These fields support doc values, but they require the field to be
      single-valued and either be required or have a default value.
    -->
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
    <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
    <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>

    <!--
     Numeric field types that index each value at various levels of precision
     to accelerate range queries when the number of values between the range
     endpoints is large. See the javadoc for NumericRangeQuery for internal
     implementation details.

     Smaller precisionStep values (specified in bits) will lead to more tokens
     indexed per value, slightly larger index size, and faster range queries.
     A precisionStep of 0 disables indexing at different precision levels.
    -->
    <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
    <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
    <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
    <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>


    <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>

    <!-- A Trie based date field for faster date range queries and date faceting. -->
    <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>


    <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
    <fieldtype name="binary" class="solr.BinaryField"/>


    <fieldType name="random" class="solr.RandomSortField" indexed="true" />



    <!-- A text field that only splits on whitespace for exact matching of words -->
    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldType>

    <!-- A text type for English text where stopwords and synonyms are managed using the REST API -->
    <fieldType name="managed_en" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ManagedStopFilterFactory" managed="english" />
        <filter class="solr.ManagedSynonymFilterFactory" managed="english" />
      </analyzer>
    </fieldType>

    <!-- A general text field that has reasonable, generic
         cross-language defaults: it tokenizes with StandardTokenizer,
	 removes stop words from case-insensitive "stopwords.txt"
	 (empty by default), and down cases.  At query time only, it
	 also applies synonyms. -->
    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- A text field with defaults appropriate for English: it
         tokenizes with StandardTokenizer, removes English stop words
         (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
         finally applies Porter's stemming.  The query time analyzer
         also applies synonyms from synonyms.txt. -->
    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <!-- Case insensitive stop word removal.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
                />
        <filter class="solr.LowerCaseFilterFactory"/>
	<filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
	<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
	-->
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
                />
        <filter class="solr.LowerCaseFilterFactory"/>
	<filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
	<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
	-->
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- A text field with defaults appropriate for English, plus
	 aggressive word-splitting and autophrase features enabled.
	 This field is just like text_en, except it adds
	 WordDelimiterFilter to enable splitting and matching of
	 words on case-change, alpha numeric boundaries, and
	 non-alphanumeric chars.  This means certain compound word
	 cases will work, for example query "wi fi" will match
	 document "WiFi" or "wi-fi".
        -->
    <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
      <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <!-- Case insensitive stop word removal.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
         but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
    <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
             possible with WordDelimiterFilter in conjuncton with stemming. -->
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- Just like text_general except it reverses the characters of
	 each token, to enable more efficient leading wildcard queries. -->
    <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
           maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- charFilter + WhitespaceTokenizer  -->
    <!--
    <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
      <analyzer>
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldType>
    -->

    <!-- This is an example of using the KeywordTokenizer along
         With various TokenFilterFactories to produce a sortable field
         that does not include some properties of the source text
      -->
    <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
      <analyzer>
        <!-- KeywordTokenizer does no actual tokenizing, so the entire
             input string is preserved as a single token
          -->
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <!-- The LowerCase TokenFilter does what you expect, which can be
             when you want your sorting to be case insensitive
          -->
        <filter class="solr.LowerCaseFilterFactory" />
        <!-- The TrimFilter removes any leading or trailing whitespace -->
        <filter class="solr.TrimFilterFactory" />
        <!-- The PatternReplaceFilter gives you the flexibility to use
             Java Regular expression to replace any sequence of characters
             matching a pattern with an arbitrary replacement string, 
             which may include back references to portions of the original
             string matched by the pattern.
             
             See the Java Regular Expression documentation for more
             information on pattern and replacement string syntax.
             
             http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
          -->
        <filter class="solr.PatternReplaceFilterFactory"
                pattern="([^a-z])" replacement="" replace="all"
        />
      </analyzer>
    </fieldType>
    
    <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
      </analyzer>
    </fieldtype>

    <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <!--
        The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
        a token of "foo|1.4"  would be indexed as "foo" with a payload of 1.4f
        Attributes of the DelimitedPayloadTokenFilterFactory : 
         "delimiter" - a one character delimiter. Default is | (pipe)
	 "encoder" - how to encode the following value into a playload
	    float -> org.apache.lucene.analysis.payloads.FloatEncoder,
	    integer -> o.a.l.a.p.IntegerEncoder
	    identity -> o.a.l.a.p.IdentityEncoder
            Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
         -->
        <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
      </analyzer>
    </fieldtype>

    <!-- lowercases the entire field value, keeping it as a single token.  -->
    <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory" />
      </analyzer>
    </fieldType>

    <!-- 
      Example of using PathHierarchyTokenizerFactory at index time, so
      queries for paths match documents at that path, or in descendent paths
    -->
    <fieldType name="descendent_path" class="solr.TextField">
      <analyzer type="index">
	<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
      </analyzer>
      <analyzer type="query">
	<tokenizer class="solr.KeywordTokenizerFactory" />
      </analyzer>
    </fieldType>
    <!-- 
      Example of using PathHierarchyTokenizerFactory at query time, so
      queries for paths match documents at that path, or in ancestor paths
    -->
    <fieldType name="ancestor_path" class="solr.TextField">
      <analyzer type="index">
	<tokenizer class="solr.KeywordTokenizerFactory" />
      </analyzer>
      <analyzer type="query">
	<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
      </analyzer>
    </fieldType>

    <!-- since fields of this type are by default not stored or indexed,
         any data added to them will be ignored outright.  --> 
    <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />

    <!-- This point type indexes the coordinates as separate fields (subFields)
      If subFieldType is defined, it references a type, and a dynamic field
      definition is created matching *___<typename>.  Alternately, if 
      subFieldSuffix is defined, that is used to create the subFields.
      Example: if subFieldType="double", then the coordinates would be
        indexed in fields myloc_0___double,myloc_1___double.
      Example: if subFieldSuffix="_d" then the coordinates would be indexed
        in fields myloc_0_d,myloc_1_d
      The subFields are an implementation detail of the fieldType, and end
      users normally should not need to know about them.
     -->
    <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>

    <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
    <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

    <!-- An alternative geospatial field type new to Solr 4.  It supports multiValued and polygon shapes.
      For more information about this and other Spatial fields new to Solr 4, see:
      http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
    -->
    <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
        geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />

    <!-- Spatial rectangle (bounding box) field. It supports most spatial predicates, and has
     special relevancy modes: score=overlapRatio|area|area2D (local-param to the query).  DocValues is required for
     relevancy. -->
    <fieldType name="bbox" class="solr.BBoxField"
        geo="true" units="degrees" numberType="_bbox_coord" />
    <fieldType name="_bbox_coord" class="solr.TrieDoubleField" precisionStep="8" docValues="true" stored="false"/>

   <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
        Parameters:
          defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
          precisionStep:   Specifies the precisionStep for the TrieLong field used for the amount
          providerClass:   Lets you plug in other exchange provider backend:
                           solr.FileExchangeRateProvider is the default and takes one parameter:
                             currencyConfig: name of an xml file holding exchange rates
                           solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
                             ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
                             refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
   -->
    <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" />
             


   <!-- some examples for different languages (generally ordered by ISO code) -->

    <!-- Arabic -->
    <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- for any non-arabic -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" />
        <!-- normalizes ﻯ to ﻱ, etc -->
        <filter class="solr.ArabicNormalizationFilterFactory"/>
        <filter class="solr.ArabicStemFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- Bulgarian -->
    <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/> 
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt" /> 
        <filter class="solr.BulgarianStemFilterFactory"/>       
      </analyzer>
    </fieldType>
    
    <!-- Catalan -->
    <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- removes l', etc -->
        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>       
      </analyzer>
    </fieldType>
    
    <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
    <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
        <filter class="solr.CJKWidthFilterFactory"/>
        <!-- for any non-CJK -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.CJKBigramFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- Kurdish -->
    <fieldType name="text_ckb" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SoraniNormalizationFilterFactory"/>
        <!-- for any latin text -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ckb.txt"/>
        <filter class="solr.SoraniStemFilterFactory"/>
      </analyzer>
    </fieldType>

    <!-- Czech -->
    <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt" />
        <filter class="solr.CzechStemFilterFactory"/>       
      </analyzer>
    </fieldType>
    
    <!-- Danish -->
    <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball" />
        <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>       
      </analyzer>
    </fieldType>
    
    <!-- German -->
    <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball" />
        <filter class="solr.GermanNormalizationFilterFactory"/>
        <filter class="solr.GermanLightStemFilterFactory"/>
        <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Greek -->
    <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- greek specific lowercase for sigma -->
        <filter class="solr.GreekLowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt" />
        <filter class="solr.GreekStemFilterFactory"/>
      </analyzer>
    </fieldType>
    
    <!-- Spanish -->
    <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball" />
        <filter class="solr.SpanishLightStemFilterFactory"/>
        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Basque -->
    <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
      </analyzer>
    </fieldType>
    
    <!-- Persian -->
    <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <!-- for ZWNJ -->
        <charFilter class="solr.PersianCharFilterFactory"/>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ArabicNormalizationFilterFactory"/>
        <filter class="solr.PersianNormalizationFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt" />
      </analyzer>
    </fieldType>
    
    <!-- Finnish -->
    <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball" />
        <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
        <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
      </analyzer>
    </fieldType>
    
    <!-- French -->
    <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- removes l', etc -->
        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball" />
        <filter class="solr.FrenchLightStemFilterFactory"/>
        <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Irish -->
    <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- removes d', etc -->
        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
        <!-- removes n-, etc. position increments is intentionally false! -->
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt"/>
        <filter class="solr.IrishLowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt"/>
        <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
      </analyzer>
    </fieldType>
    
    <!-- Galician -->
    <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt" />
        <filter class="solr.GalicianStemFilterFactory"/>
        <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Hindi -->
    <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <!-- normalizes unicode representation -->
        <filter class="solr.IndicNormalizationFilterFactory"/>
        <!-- normalizes variation in spelling -->
        <filter class="solr.HindiNormalizationFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt" />
        <filter class="solr.HindiStemFilterFactory"/>
      </analyzer>
    </fieldType>
    
    <!-- Hungarian -->
    <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball" />
        <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
        <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->   
      </analyzer>
    </fieldType>
    
    <!-- Armenian -->
    <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
      </analyzer>
    </fieldType>
    
    <!-- Indonesian -->
    <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt" />
        <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
        <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
      </analyzer>
    </fieldType>
    
    <!-- Italian -->
    <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- removes l', etc -->
        <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball" />
        <filter class="solr.ItalianLightStemFilterFactory"/>
        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Japanese using morphological analysis (see text_cjk for a configuration using bigramming)

         NOTE: If you want to optimize search for precision, use default operator AND in your query
         parser config with <solrQueryParser defaultOperator="AND"/> further down in this file.  Use 
         OR if you would like to optimize for recall (default).
    -->
    <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
      <analyzer>
      <!-- Kuromoji Japanese morphological analyzer/tokenizer (JapaneseTokenizer)

           Kuromoji has a search mode (default) that does segmentation useful for search.  A heuristic
           is used to segment compounds into its parts and the compound itself is kept as synonym.

           Valid values for attribute mode are:
              normal: regular segmentation
              search: segmentation useful for search with synonyms compounds (default)
            extended: same as search mode, but unigrams unknown words (experimental)

           For some applications it might be good to use search mode for indexing and normal mode for
           queries to reduce recall and prevent parts of compounds from being matched and highlighted.
           Use <analyzer type="index"> and <analyzer type="query"> for this and mode normal in query.

           Kuromoji also has a convenient user dictionary feature that allows overriding the statistical
           model with your own entries for segmentation, part-of-speech tags and readings without a need
           to specify weights.  Notice that user dictionaries have not been subject to extensive testing.

           User dictionary attributes are:
                     userDictionary: user dictionary filename
             userDictionaryEncoding: user dictionary encoding (default is UTF-8)

           See lang/userdict_ja.txt for a sample user dictionary file.

           Punctuation characters are discarded by default.  Use discardPunctuation="false" to keep them.

           See http://wiki.apache.org/solr/JapaneseLanguageSupport for more on Japanese language support.
        -->
        <tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/>
        <!--<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>-->
        <!-- Reduces inflected verbs and adjectives to their base/dictionary forms (辞書形) -->
        <filter class="solr.JapaneseBaseFormFilterFactory"/>
        <!-- Removes tokens with certain part-of-speech tags -->
        <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" />
        <!-- Normalizes full-width romaji to half-width and half-width kana to full-width (Unicode NFKC subset) -->
        <filter class="solr.CJKWidthFilterFactory"/>
        <!-- Removes common tokens typically not useful for search, but have a negative effect on ranking -->
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" />
        <!-- Normalizes common katakana spelling variations by removing any last long sound character (U+30FC) -->
        <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
        <!-- Lower-cases romaji characters -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    
    <!-- Latvian -->
    <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt" />
        <filter class="solr.LatvianStemFilterFactory"/>
      </analyzer>
    </fieldType>
    
    <!-- Dutch -->
    <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball" />
        <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
        <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
      </analyzer>
    </fieldType>
    
    <!-- Norwegian -->
    <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball" />
        <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
        <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory" variant="nb"/> -->
        <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory" variant="nb"/> -->
        <!-- The "light" and "minimal" stemmers support variants: nb=Bokmål, nn=Nynorsk, no=Both -->
      </analyzer>
    </fieldType>
    
    <!-- Portuguese -->
    <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball" />
        <filter class="solr.PortugueseLightStemFilterFactory"/>
        <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
        <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Romanian -->
    <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
      </analyzer>
    </fieldType>
    
    <!-- Russian -->
    <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball" />
        <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
        <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Swedish -->
    <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball" />
        <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
        <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
      </analyzer>
    </fieldType>
    
    <!-- Thai -->
    <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.ThaiTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt" />
      </analyzer>
    </fieldType>
    
    <!-- Turkish -->
    <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ApostropheFilterFactory"/>
        <filter class="solr.TurkishLowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
      </analyzer>
    </fieldType>
  
  <!-- Similarity is the scoring routine for each document vs. a query.
       A custom Similarity or SimilarityFactory may be specified here, but 
       the default is fine for most applications.  
       For more info: http://wiki.apache.org/solr/SchemaXml#Similarity
    -->
  <!--
     <similarity class="com.example.solr.CustomSimilarityFactory">
       <str name="paramkey">param value</str>
     </similarity>
    -->

</schema>
05. solrconfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<!-- 
     For more details about configurations options that may appear in
     this file, see http://wiki.apache.org/solr/SolrConfigXml. 
-->
<config>
  <!-- In all configuration below, a prefix of "solr." for class names
       is an alias that causes solr to search appropriate packages,
       including org.apache.solr.(search|update|request|core|analysis)

       You may also specify a fully qualified Java classname if you
       have your own custom plugins.
    -->

  <!-- Controls what version of Lucene various components of Solr
       adhere to.  Generally, you want to use the latest version to
       get all bug fixes and improvements. It is highly recommended
       that you fully re-index after changing this setting as it can
       affect both how text is indexed and queried.
  -->
  <luceneMatchVersion>4.10.2</luceneMatchVersion>

  <!-- <lib/> directives can be used to instruct Solr to load any Jars
       identified and use them to resolve any "plugins" specified in
       your solrconfig.xml or schema.xml (ie: Analyzers, Request
       Handlers, etc...).

       All directories and paths are resolved relative to the
       instanceDir.

       Please note that <lib/> directives are processed in the order
       that they appear in your solrconfig.xml file, and are "stacked" 
       on top of each other when building a ClassLoader - so if you have 
       plugin jars with dependencies on other jars, the "lower level" 
       dependency jars should be loaded first.

       If a "./lib" directory exists in your instanceDir, all files
       found in it are included as if you had used the following
       syntax...
       
              <lib dir="./lib" />
    -->

  <!-- A 'dir' option by itself adds any files found in the directory 
       to the classpath, this is useful for including all jars in a
       directory.

       When a 'regex' is specified in addition to a 'dir', only the
       files in that directory which completely match the regex
       (anchored on both ends) will be included.

       If a 'dir' option (with or without a regex) is used and nothing
       is found that matches, a warning will be logged.

       The examples below can be used to load some solr-contribs along 
       with their external dependencies.
    -->
  <lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="../../dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="../../dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="../../contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="../../dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="../../contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="../../dist/" regex="solr-velocity-\d.*\.jar" />

  <lib dir="../../contrib/dataimporthandler/lib" regex=".*\.jar" />
  <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" />

  
  <!-- an exact 'path' can be used instead of a 'dir' to specify a 
       specific jar file.  This will cause a serious error to be logged 
       if it can't be loaded.
    -->
  <!--
     <lib path="../a-jar-that-does-not-exist.jar" /> 
  -->
  
  <!-- Data Directory

       Used to specify an alternate directory to hold all index data
       other than the default ./data under the Solr home.  If
       replication is in use, this should match the replication
       configuration.
    -->
  <dataDir>${solr.data.dir:}</dataDir>


  <!-- The DirectoryFactory to use for indexes.
       
       solr.StandardDirectoryFactory is filesystem
       based and tries to pick the best implementation for the current
       JVM and platform.  solr.NRTCachingDirectoryFactory, the default,
       wraps solr.StandardDirectoryFactory and caches small files in memory
       for better NRT performance.

       One can force a particular implementation via solr.MMapDirectoryFactory,
       solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.

       solr.RAMDirectoryFactory is memory based, not
       persistent, and doesn't work with replication.
    -->
  <directoryFactory name="DirectoryFactory" 
                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}">
    
         
    <!-- These will be used if you are using the solr.HdfsDirectoryFactory,
         otherwise they will be ignored. If you don't plan on using hdfs,
         you can safely remove this section. -->      
    <!-- The root directory that collection data should be written to. -->     
    <str name="solr.hdfs.home">${solr.hdfs.home:}</str>
    <!-- The hadoop configuration files to use for the hdfs client. -->    
    <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str>
    <!-- Enable/Disable the hdfs cache. -->    
    <str name="solr.hdfs.blockcache.enabled">${solr.hdfs.blockcache.enabled:true}</str>
    <!-- Enable/Disable using one global cache for all SolrCores. 
         The settings used will be from the first HdfsDirectoryFactory created. -->    
    <str name="solr.hdfs.blockcache.global">${solr.hdfs.blockcache.global:true}</str>
    
  </directoryFactory> 

  <!-- The CodecFactory for defining the format of the inverted index.
       The default implementation is SchemaCodecFactory, which is the official Lucene
       index format, but hooks into the schema to provide per-field customization of
       the postings lists and per-document values in the fieldType element
       (postingsFormat/docValuesFormat). Note that most of the alternative implementations
       are experimental, so if you choose to customize the index format, its a good
       idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)
       before upgrading to a newer version to avoid unnecessary reindexing.
  -->
  <codecFactory class="solr.SchemaCodecFactory"/>

  <!-- To enable dynamic schema REST APIs, use the following for <schemaFactory>:
  
       <schemaFactory class="ManagedIndexSchemaFactory">
         <bool name="mutable">true</bool>
         <str name="managedSchemaResourceName">managed-schema</str>
       </schemaFactory>
       
       When ManagedIndexSchemaFactory is specified, Solr will load the schema from
       he resource named in 'managedSchemaResourceName', rather than from schema.xml.
       Note that the managed schema resource CANNOT be named schema.xml.  If the managed
       schema does not exist, Solr will create it after reading schema.xml, then rename
       'schema.xml' to 'schema.xml.bak'. 
       
       Do NOT hand edit the managed schema - external modifications will be ignored and
       overwritten as a result of schema modification REST API calls.

       When ManagedIndexSchemaFactory is specified with mutable = true, schema
       modification REST API calls will be allowed; otherwise, error responses will be
       sent back for these requests. 
  -->
  <schemaFactory class="ClassicIndexSchemaFactory"/>

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       Index Config - These settings control low-level behavior of indexing
       Most example settings here show the default value, but are commented
       out, to more easily see where customizations have been made.
       
       Note: This replaces <indexDefaults> and <mainIndex> from older versions
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <indexConfig>
    <!-- maxFieldLength was removed in 4.0. To get similar behavior, include a 
         LimitTokenCountFilterFactory in your fieldType definition. E.g. 
     <filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/>
    -->
    <!-- Maximum time to wait for a write lock (ms) for an IndexWriter. Default: 1000 -->
    <!-- <writeLockTimeout>1000</writeLockTimeout>  -->

    <!-- The maximum number of simultaneous threads that may be
         indexing documents at once in IndexWriter; if more than this
         many threads arrive they will wait for others to finish.
         Default in Solr/Lucene is 8. -->
    <!-- <maxIndexingThreads>8</maxIndexingThreads>  -->

    <!-- Expert: Enabling compound file will use less files for the index, 
         using fewer file descriptors on the expense of performance decrease. 
         Default in Lucene is "true". Default in Solr is "false" (since 3.6) -->
    <!-- <useCompoundFile>false</useCompoundFile> -->

    <!-- ramBufferSizeMB sets the amount of RAM that may be used by Lucene
         indexing for buffering added documents and deletions before they are
         flushed to the Directory.
         maxBufferedDocs sets a limit on the number of documents buffered
         before flushing.
         If both ramBufferSizeMB and maxBufferedDocs is set, then
         Lucene will flush based on whichever limit is hit first.
         The default is 100 MB.  -->
    <!-- <ramBufferSizeMB>100</ramBufferSizeMB> -->
    <!-- <maxBufferedDocs>1000</maxBufferedDocs> -->

    <!-- Expert: Merge Policy 
         The Merge Policy in Lucene controls how merging of segments is done.
         The default since Solr/Lucene 3.3 is TieredMergePolicy.
         The default since Lucene 2.3 was the LogByteSizeMergePolicy,
         Even older versions of Lucene used LogDocMergePolicy.
      -->
    <!--
        <mergePolicy class="org.apache.lucene.index.TieredMergePolicy">
          <int name="maxMergeAtOnce">10</int>
          <int name="segmentsPerTier">10</int>
        </mergePolicy>
      -->
       
    <!-- Merge Factor
         The merge factor controls how many segments will get merged at a time.
         For TieredMergePolicy, mergeFactor is a convenience parameter which
         will set both MaxMergeAtOnce and SegmentsPerTier at once.
         For LogByteSizeMergePolicy, mergeFactor decides how many new segments
         will be allowed before they are merged into one.
         Default is 10 for both merge policies.
      -->
    <!-- 
    <mergeFactor>10</mergeFactor>
      -->

    <!-- Expert: Merge Scheduler
         The Merge Scheduler in Lucene controls how merges are
         performed.  The ConcurrentMergeScheduler (Lucene 2.3 default)
         can perform merges in the background using separate threads.
         The SerialMergeScheduler (Lucene 2.2 default) does not.
     -->
    <!-- 
       <mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>
       -->

    <!-- LockFactory 

         This option specifies which Lucene LockFactory implementation
         to use.
      
         single = SingleInstanceLockFactory - suggested for a
                  read-only index or when there is no possibility of
                  another process trying to modify the index.
         native = NativeFSLockFactory - uses OS native file locking.
                  Do not use when multiple solr webapps in the same
                  JVM are attempting to share a single index.
         simple = SimpleFSLockFactory  - uses a plain file for locking

         Defaults: 'native' is default for Solr3.6 and later, otherwise
                   'simple' is the default

         More details on the nuances of each LockFactory...
         http://wiki.apache.org/lucene-java/AvailableLockFactories
    -->
    <lockType>${solr.lock.type:native}</lockType>

    <!-- Unlock On Startup

         If true, unlock any held write or commit locks on startup.
         This defeats the locking mechanism that allows multiple
         processes to safely access a lucene index, and should be used
         with care. Default is "false".

         This is not needed if lock type is 'single'
     -->
    <!--
    <unlockOnStartup>false</unlockOnStartup>
      -->
    
    <!-- Expert: Controls how often Lucene loads terms into memory
         Default is 128 and is likely good for most everyone.
      -->
    <!-- <termIndexInterval>128</termIndexInterval> -->

    <!-- If true, IndexReaders will be opened/reopened from the IndexWriter
         instead of from the Directory. Hosts in a master/slave setup
         should have this set to false while those in a SolrCloud
         cluster need to be set to true. Default: true
      -->
    <!-- 
    <nrtMode>true</nrtMode>
      -->

    <!-- Commit Deletion Policy
         Custom deletion policies can be specified here. The class must
         implement org.apache.lucene.index.IndexDeletionPolicy.

         The default Solr IndexDeletionPolicy implementation supports
         deleting index commit points on number of commits, age of
         commit point and optimized status.
         
         The latest commit point should always be preserved regardless
         of the criteria.
    -->
    <!-- 
    <deletionPolicy class="solr.SolrDeletionPolicy">
    -->
      <!-- The number of commit points to be kept -->
      <!-- <str name="maxCommitsToKeep">1</str> -->
      <!-- The number of optimized commit points to be kept -->
      <!-- <str name="maxOptimizedCommitsToKeep">0</str> -->
      <!--
          Delete all commit points once they have reached the given age.
          Supports DateMathParser syntax e.g.
        -->
      <!--
         <str name="maxCommitAge">30MINUTES</str>
         <str name="maxCommitAge">1DAY</str>
      -->
    <!-- 
    </deletionPolicy>
    -->

    <!-- Lucene Infostream
       
         To aid in advanced debugging, Lucene provides an "InfoStream"
         of detailed information when indexing.

         Setting the value to true will instruct the underlying Lucene
         IndexWriter to write its info stream to solr's log. By default,
         this is enabled here, and controlled through log4j.properties.
      -->
     <infoStream>true</infoStream>
    
    <!--
        Use true to enable this safety check, which can help
        reduce the risk of propagating index corruption from older segments 
        into new ones, at the expense of slower merging.
    -->
     <checkIntegrityAtMerge>false</checkIntegrityAtMerge>
  </indexConfig>


  <!-- JMX
       
       This example enables JMX if and only if an existing MBeanServer
       is found, use this if you want to configure JMX through JVM
       parameters. Remove this to disable exposing Solr configuration
       and statistics to JMX.

       For more details see http://wiki.apache.org/solr/SolrJmx
    -->
  <jmx />
  <!-- If you want to connect to a particular server, specify the
       agentId 
    -->
  <!-- <jmx agentId="myAgent" /> -->
  <!-- If you want to start a new MBeanServer, specify the serviceUrl -->
  <!-- <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/>
    -->

  <!-- The default high-performance update handler -->
  <updateHandler class="solr.DirectUpdateHandler2">

    <!-- Enables a transaction log, used for real-time get, durability, and
         and solr cloud replica recovery.  The log can grow as big as
         uncommitted changes to the index, so use of a hard autoCommit
         is recommended (see below).
         "dir" - the target directory for transaction logs, defaults to the
                solr data directory.  --> 
    <updateLog>
      <str name="dir">${solr.ulog.dir:}</str>
    </updateLog>
 
    <!-- AutoCommit

         Perform a hard commit automatically under certain conditions.
         Instead of enabling autoCommit, consider using "commitWithin"
         when adding documents. 

         http://wiki.apache.org/solr/UpdateXmlMessages

         maxDocs - Maximum number of documents to add since the last
                   commit before automatically triggering a new commit.

         maxTime - Maximum amount of time in ms that is allowed to pass
                   since a document was added before automatically
                   triggering a new commit. 
         openSearcher - if false, the commit causes recent index changes
           to be flushed to stable storage, but does not cause a new
           searcher to be opened to make those changes visible.

         If the updateLog is enabled, then it's highly recommended to
         have some sort of hard autoCommit to limit the log size.
      -->
     <autoCommit> 
       <maxTime>${solr.autoCommit.maxTime:15000}</maxTime> 
       <openSearcher>false</openSearcher> 
     </autoCommit>

    <!-- softAutoCommit is like autoCommit except it causes a
         'soft' commit which only ensures that changes are visible
         but does not ensure that data is synced to disk.  This is
         faster and more near-realtime friendly than a hard commit.
      -->

     <autoSoftCommit> 
       <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime> 
     </autoSoftCommit>

    <!-- Update Related Event Listeners
         
         Various IndexWriter related events can trigger Listeners to
         take actions.

         postCommit - fired after every commit or optimize command
         postOptimize - fired after every optimize command
      -->
    <!-- The RunExecutableListener executes an external command from a
         hook such as postCommit or postOptimize.
         
         exe - the name of the executable to run
         dir - dir to use as the current working directory. (default=".")
         wait - the calling thread waits until the executable returns. 
                (default="true")
         args - the arguments to pass to the program.  (default is none)
         env - environment variables to set.  (default is none)
      -->
    <!-- This example shows how RunExecutableListener could be used
         with the script based replication...
         http://wiki.apache.org/solr/CollectionDistribution
      -->
    <!--
       <listener event="postCommit" class="solr.RunExecutableListener">
         <str name="exe">solr/bin/snapshooter</str>
         <str name="dir">.</str>
         <bool name="wait">true</bool>
         <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
         <arr name="env"> <str>MYVAR=val1</str> </arr>
       </listener>
      -->

  </updateHandler>
  
  <!-- IndexReaderFactory

       Use the following format to specify a custom IndexReaderFactory,
       which allows for alternate IndexReader implementations.

       ** Experimental Feature **

       Please note - Using a custom IndexReaderFactory may prevent
       certain other features from working. The API to
       IndexReaderFactory may change without warning or may even be
       removed from future releases if the problems cannot be
       resolved.


       ** Features that may not work with custom IndexReaderFactory **

       The ReplicationHandler assumes a disk-resident index. Using a
       custom IndexReader implementation may cause incompatibility
       with ReplicationHandler and may cause replication to not work
       correctly. See SOLR-1366 for details.

    -->
  <!--
  <indexReaderFactory name="IndexReaderFactory" class="package.class">
    <str name="someArg">Some Value</str>
  </indexReaderFactory >
  -->
  <!-- By explicitly declaring the Factory, the termIndexDivisor can
       be specified.
    -->
  <!--
     <indexReaderFactory name="IndexReaderFactory" 
                         class="solr.StandardIndexReaderFactory">
       <int name="setTermIndexDivisor">12</int>
     </indexReaderFactory >
    -->

  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       Query section - these settings control query time things like caches
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  <query>
    <!-- Max Boolean Clauses

         Maximum number of clauses in each BooleanQuery,  an exception
         is thrown if exceeded.

         ** WARNING **
         
         This option actually modifies a global Lucene property that
         will affect all SolrCores.  If multiple solrconfig.xml files
         disagree on this property, the value at any given moment will
         be based on the last SolrCore to be initialized.
         
      -->
    <maxBooleanClauses>1024</maxBooleanClauses>


    <!-- Solr Internal Query Caches

         There are two implementations of cache available for Solr,
         LRUCache, based on a synchronized LinkedHashMap, and
         FastLRUCache, based on a ConcurrentHashMap.  

         FastLRUCache has faster gets and slower puts in single
         threaded operation and thus is generally faster than LRUCache
         when the hit ratio of the cache is high (> 75%), and may be
         faster under other scenarios on multi-cpu systems.
    -->

    <!-- Filter Cache

         Cache used by SolrIndexSearcher for filters (DocSets),
         unordered sets of *all* documents that match a query.  When a
         new searcher is opened, its caches may be prepopulated or
         "autowarmed" using data from caches in the old searcher.
         autowarmCount is the number of items to prepopulate.  For
         LRUCache, the autowarmed items will be the most recently
         accessed items.

         Parameters:
           class - the SolrCache implementation LRUCache or
               (LRUCache or FastLRUCache)
           size - the maximum number of entries in the cache
           initialSize - the initial capacity (number of entries) of
               the cache.  (see java.util.HashMap)
           autowarmCount - the number of entries to prepopulate from
               and old cache.  
      -->
    <filterCache class="solr.FastLRUCache"
                 size="512"
                 initialSize="512"
                 autowarmCount="0"/>

    <!-- Query Result Cache
         
         Caches results of searches - ordered lists of document ids
         (DocList) based on a query, a sort, and the range of documents requested.  
      -->
    <queryResultCache class="solr.LRUCache"
                     size="512"
                     initialSize="512"
                     autowarmCount="0"/>
   
    <!-- Document Cache

         Caches Lucene Document objects (the stored fields for each
         document).  Since Lucene internal document ids are transient,
         this cache will not be autowarmed.  
      -->
    <documentCache class="solr.LRUCache"
                   size="512"
                   initialSize="512"
                   autowarmCount="0"/>
    
    <!-- custom cache currently used by block join --> 
    <cache name="perSegFilter"
      class="solr.search.LRUCache"
      size="10"
      initialSize="0"
      autowarmCount="10"
      regenerator="solr.NoOpRegenerator" />

    <!-- Field Value Cache
         
         Cache used to hold field values that are quickly accessible
         by document id.  The fieldValueCache is created by default
         even if not configured here.
      -->
    <!--
       <fieldValueCache class="solr.FastLRUCache"
                        size="512"
                        autowarmCount="128"
                        showItems="32" />
      -->

    <!-- Custom Cache

         Example of a generic cache.  These caches may be accessed by
         name through SolrIndexSearcher.getCache(),cacheLookup(), and
         cacheInsert().  The purpose is to enable easy caching of
         user/application level data.  The regenerator argument should
         be specified as an implementation of solr.CacheRegenerator 
         if autowarming is desired.  
      -->
    <!--
       <cache name="myUserCache"
              class="solr.LRUCache"
              size="4096"
              initialSize="1024"
              autowarmCount="1024"
              regenerator="com.mycompany.MyRegenerator"
              />
      -->


    <!-- Lazy Field Loading

         If true, stored fields that are not requested will be loaded
         lazily.  This can result in a significant speed improvement
         if the usual case is to not load all stored fields,
         especially if the skipped fields are large compressed text
         fields.
    -->
    <enableLazyFieldLoading>true</enableLazyFieldLoading>

   <!-- Use Filter For Sorted Query

        A possible optimization that attempts to use a filter to
        satisfy a search.  If the requested sort does not include
        score, then the filterCache will be checked for a filter
        matching the query. If found, the filter will be used as the
        source of document ids, and then the sort will be applied to
        that.

        For most situations, this will not be useful unless you
        frequently get the same search repeatedly with different sort
        options, and none of them ever use "score"
     -->
   <!--
      <useFilterForSortedQuery>true</useFilterForSortedQuery>
     -->

   <!-- Result Window Size

        An optimization for use with the queryResultCache.  When a search
        is requested, a superset of the requested number of document ids
        are collected.  For example, if a search for a particular query
        requests matching documents 10 through 19, and queryWindowSize is 50,
        then documents 0 through 49 will be collected and cached.  Any further
        requests in that range can be satisfied via the cache.  
     -->
   <queryResultWindowSize>20</queryResultWindowSize>

   <!-- Maximum number of documents to cache for any entry in the
        queryResultCache. 
     -->
   <queryResultMaxDocsCached>200</queryResultMaxDocsCached>

   <!-- Query Related Event Listeners

        Various IndexSearcher related events can trigger Listeners to
        take actions.

        newSearcher - fired whenever a new searcher is being prepared
        and there is a current searcher handling requests (aka
        registered).  It can be used to prime certain caches to
        prevent long request times for certain requests.

        firstSearcher - fired whenever a new searcher is being
        prepared but there is no current registered searcher to handle
        requests or to gain autowarming data from.

        
     -->
    <!-- QuerySenderListener takes an array of NamedList and executes a
         local query request for each NamedList in sequence. 
      -->
    <listener event="newSearcher" class="solr.QuerySenderListener">
      <arr name="queries">
        <!--
           <lst><str name="q">solr</str><str name="sort">price asc</str></lst>
           <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>
          -->
      </arr>
    </listener>
    <listener event="firstSearcher" class="solr.QuerySenderListener">
      <arr name="queries">
        <lst>
          <str name="q">static firstSearcher warming in solrconfig.xml</str>
        </lst>
      </arr>
    </listener>

    <!-- Use Cold Searcher

         If a search request comes in and there is no current
         registered searcher, then immediately register the still
         warming searcher and use it.  If "false" then all requests
         will block until the first searcher is done warming.
      -->
    <useColdSearcher>false</useColdSearcher>

    <!-- Max Warming Searchers
         
         Maximum number of searchers that may be warming in the
         background concurrently.  An error is returned if this limit
         is exceeded.

         Recommend values of 1-2 for read-only slaves, higher for
         masters w/o cache warming.
      -->
    <maxWarmingSearchers>2</maxWarmingSearchers>

  </query>


  <!-- Request Dispatcher

       This section contains instructions for how the SolrDispatchFilter
       should behave when processing requests for this SolrCore.

       handleSelect is a legacy option that affects the behavior of requests
       such as /select?qt=XXX

       handleSelect="true" will cause the SolrDispatchFilter to process
       the request and dispatch the query to a handler specified by the 
       "qt" param, assuming "/select" isn't already registered.

       handleSelect="false" will cause the SolrDispatchFilter to
       ignore "/select" requests, resulting in a 404 unless a handler
       is explicitly registered with the name "/select"

       handleSelect="true" is not recommended for new users, but is the default
       for backwards compatibility
    -->
  <requestDispatcher handleSelect="false" >
    <!-- Request Parsing

         These settings indicate how Solr Requests may be parsed, and
         what restrictions may be placed on the ContentStreams from
         those requests

         enableRemoteStreaming - enables use of the stream.file
         and stream.url parameters for specifying remote streams.

         multipartUploadLimitInKB - specifies the max size (in KiB) of
         Multipart File Uploads that Solr will allow in a Request.
         
         formdataUploadLimitInKB - specifies the max size (in KiB) of
         form data (application/x-www-form-urlencoded) sent via
         POST. You can use POST to pass request parameters not
         fitting into the URL.
         
         addHttpRequestToContext - if set to true, it will instruct
         the requestParsers to include the original HttpServletRequest
         object in the context map of the SolrQueryRequest under the 
         key "httpRequest". It will not be used by any of the existing
         Solr components, but may be useful when developing custom 
         plugins.
         
         *** WARNING ***
         The settings below authorize Solr to fetch remote files, You
         should make sure your system has some authentication before
         using enableRemoteStreaming="true"

      --> 
    <requestParsers enableRemoteStreaming="true" 
                    multipartUploadLimitInKB="2048000"
                    formdataUploadLimitInKB="2048"
                    addHttpRequestToContext="false"/>

    <!-- HTTP Caching

         Set HTTP caching related parameters (for proxy caches and clients).

         The options below instruct Solr not to output any HTTP Caching
         related headers
      -->
    <httpCaching never304="true" />
    <!-- If you include a <cacheControl> directive, it will be used to
         generate a Cache-Control header (as well as an Expires header
         if the value contains "max-age=")
         
         By default, no Cache-Control header is generated.
         
         You can use the <cacheControl> option even if you have set
         never304="true"
      -->
    <!--
       <httpCaching never304="true" >
         <cacheControl>max-age=30, public</cacheControl> 
       </httpCaching>
      -->
    <!-- To enable Solr to respond with automatically generated HTTP
         Caching headers, and to response to Cache Validation requests
         correctly, set the value of never304="false"
         
         This will cause Solr to generate Last-Modified and ETag
         headers based on the properties of the Index.

         The following options can also be specified to affect the
         values of these headers...

         lastModFrom - the default value is "openTime" which means the
         Last-Modified value (and validation against If-Modified-Since
         requests) will all be relative to when the current Searcher
         was opened.  You can change it to lastModFrom="dirLastMod" if
         you want the value to exactly correspond to when the physical
         index was last modified.

         etagSeed="..." is an option you can change to force the ETag
         header (and validation against If-None-Match requests) to be
         different even if the index has not changed (ie: when making
         significant changes to your config file)

         (lastModifiedFrom and etagSeed are both ignored if you use
         the never304="true" option)
      -->
    <!--
       <httpCaching lastModifiedFrom="openTime"
                    etagSeed="Solr">
         <cacheControl>max-age=30, public</cacheControl> 
       </httpCaching>
      -->
  </requestDispatcher>

  <!-- Request Handlers 

       http://wiki.apache.org/solr/SolrRequestHandler

       Incoming queries will be dispatched to a specific handler by name
       based on the path specified in the request.

       Legacy behavior: If the request path uses "/select" but no Request
       Handler has that name, and if handleSelect="true" has been specified in
       the requestDispatcher, then the Request Handler is dispatched based on
       the qt parameter.  Handlers without a leading '/' are accessed this way
       like so: http://host/app/[core/]select?qt=name  If no qt is
       given, then the requestHandler that declares default="true" will be
       used or the one named "standard".

       If a Request Handler is declared with startup="lazy", then it will
       not be initialized until the first request that uses it.

    -->
  <!-- SearchHandler

       http://wiki.apache.org/solr/SearchHandler

       For processing Search Queries, the primary Request Handler
       provided with Solr is "SearchHandler" It delegates to a sequent
       of SearchComponents (see below) and supports distributed
       queries across multiple shards
    -->
    

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
  </requestHandler>
  

  <requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">text</str>
     </lst>
    <!-- In addition to defaults, "appends" params can be specified
         to identify values which should be appended to the list of
         multi-val params from the query (or the existing "defaults").
      -->
    <!-- In this example, the param "fq=instock:true" would be appended to
         any query time fq params the user may specify, as a mechanism for
         partitioning the index, independent of any user selected filtering
         that may also be desired (perhaps as a result of faceted searching).

         NOTE: there is *absolutely* nothing a client can do to prevent these
         "appends" values from being used, so don't use this mechanism
         unless you are sure you always want it.
      -->
    <!--
       <lst name="appends">
         <str name="fq">inStock:true</str>
       </lst>
      -->
    <!-- "invariants" are a way of letting the Solr maintainer lock down
         the options available to Solr clients.  Any params values
         specified here are used regardless of what values may be specified
         in either the query, the "defaults", or the "appends" params.

         In this example, the facet.field and facet.query params would
         be fixed, limiting the facets clients can use.  Faceting is
         not turned on by default - but if the client does specify
         facet=true in the request, these are the only facets they
         will be able to see counts for; regardless of what other
         facet.field or facet.query params they may specify.

         NOTE: there is *absolutely* nothing a client can do to prevent these
         "invariants" values from being used, so don't use this mechanism
         unless you are sure you always want it.
      -->
    <!--
       <lst name="invariants">
         <str name="facet.field">cat</str>
         <str name="facet.field">manu_exact</str>
         <str name="facet.query">price:[* TO 500]</str>
         <str name="facet.query">price:[500 TO *]</str>
       </lst>
      -->
    <!-- If the default list of SearchComponents is not desired, that
         list can either be overridden completely, or components can be
         prepended or appended to the default list.  (see below)
      -->
    <!--
       <arr name="components">
         <str>nameOfCustomComponent1</str>
         <str>nameOfCustomComponent2</str>
       </arr>
      -->
    </requestHandler>

  <!-- A request handler that returns indented JSON by default -->
  <requestHandler name="/query" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
       <str name="df">text</str>
     </lst>
  </requestHandler>


  <!-- realtime get handler, guaranteed to return the latest stored fields of
       any document, without the need to commit or open a new searcher.  The
       current implementation relies on the updateLog feature being enabled.

       ** WARNING **
       Do NOT disable the realtime get handler at /get if you are using
       SolrCloud otherwise any leader election will cause a full sync in ALL
       replicas for the shard in question. Similarly, a replica recovery will
       also always fetch the complete index from the leader because a partial
       sync will not be possible in the absence of this handler.
  -->
  <requestHandler name="/get" class="solr.RealTimeGetHandler">
     <lst name="defaults">
       <str name="omitHeader">true</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
     </lst>
  </requestHandler>

  <!--
    The export request handler is used to export full sorted result sets.
    Do not change these defaults.
  -->

  <requestHandler name="/export" class="solr.SearchHandler">
    <lst name="invariants">
      <str name="rq">{!xport}</str>
      <str name="wt">xsort</str>
      <str name="distrib">false</str>
    </lst>

    <arr name="components">
      <str>query</str>
    </arr>
  </requestHandler>






  <!-- A Robust Example 
       
       This example SearchHandler declaration shows off usage of the
       SearchHandler with many defaults declared

       Note that multiple instances of the same Request Handler
       (SearchHandler) can be registered multiple times with different
       names (and different init parameters)
    -->
  <requestHandler name="/browse" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>

       <!-- VelocityResponseWriter settings -->
       <str name="wt">velocity</str>
       <str name="v.template">browse</str>
       <str name="v.layout">layout</str>
       <str name="title">Solritas</str>

       <!-- Query settings -->
       <str name="defType">edismax</str>
       <str name="qf">
          text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
          title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0
       </str>
       <str name="df">text</str>
       <str name="mm">100%</str>
       <str name="q.alt">*:*</str>
       <str name="rows">10</str>
       <str name="fl">*,score</str>

       <str name="mlt.qf">
         text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
         title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0
       </str>
       <str name="mlt.fl">text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename</str>
       <int name="mlt.count">3</int>

       <!-- Faceting defaults -->
       <str name="facet">on</str>
       <str name="facet.missing">true</str>
       <str name="facet.field">cat</str>
       <str name="facet.field">manu_exact</str>
       <str name="facet.field">content_type</str>
       <str name="facet.field">author_s</str>
       <str name="facet.query">ipod</str>
       <str name="facet.query">GB</str>
       <str name="facet.mincount">1</str>
       <str name="facet.pivot">cat,inStock</str>
       <str name="facet.range.other">after</str>
       <str name="facet.range">price</str>
       <int name="f.price.facet.range.start">0</int>
       <int name="f.price.facet.range.end">600</int>
       <int name="f.price.facet.range.gap">50</int>
       <str name="facet.range">popularity</str>
       <int name="f.popularity.facet.range.start">0</int>
       <int name="f.popularity.facet.range.end">10</int>
       <int name="f.popularity.facet.range.gap">3</int>
       <str name="facet.range">manufacturedate_dt</str>
       <str name="f.manufacturedate_dt.facet.range.start">NOW/YEAR-10YEARS</str>
       <str name="f.manufacturedate_dt.facet.range.end">NOW</str>
       <str name="f.manufacturedate_dt.facet.range.gap">+1YEAR</str>
       <str name="f.manufacturedate_dt.facet.range.other">before</str>
       <str name="f.manufacturedate_dt.facet.range.other">after</str>

       <!-- Highlighting defaults -->
       <str name="hl">on</str>
       <str name="hl.fl">content features title name</str>
       <str name="hl.preserveMulti">true</str>
       <str name="hl.encoder">html</str>
       <str name="hl.simple.pre">&lt;b&gt;</str>
       <str name="hl.simple.post">&lt;/b&gt;</str>
       <str name="f.title.hl.fragsize">0</str>
       <str name="f.title.hl.alternateField">title</str>
       <str name="f.name.hl.fragsize">0</str>
       <str name="f.name.hl.alternateField">name</str>
       <str name="f.content.hl.snippets">3</str>
       <str name="f.content.hl.fragsize">200</str>
       <str name="f.content.hl.alternateField">content</str>
       <str name="f.content.hl.maxAlternateFieldLength">750</str>

       <!-- Spell checking defaults -->
       <str name="spellcheck">on</str>
       <str name="spellcheck.extendedResults">false</str>       
       <str name="spellcheck.count">5</str>
       <str name="spellcheck.alternativeTermCount">2</str>
       <str name="spellcheck.maxResultsForSuggest">5</str>       
       <str name="spellcheck.collate">true</str>
       <str name="spellcheck.collateExtendedResults">true</str>  
       <str name="spellcheck.maxCollationTries">5</str>
       <str name="spellcheck.maxCollations">3</str>           
     </lst>

     <!-- append spellchecking to our list of components -->
     <arr name="last-components">
       <str>spellcheck</str>
     </arr>
  </requestHandler>


  <!-- Update Request Handler.

       http://wiki.apache.org/solr/UpdateXmlMessages

       The canonical Request Handler for Modifying the Index through
       commands specified using XML, JSON, CSV, or JAVABIN

       Note: Since solr1.1 requestHandlers requires a valid content
       type header if posted in the body. For example, curl now
       requires: -H 'Content-type:text/xml; charset=utf-8'

       To override the request content type and force a specific
       Content-type, use the request parameter:
         ?update.contentType=text/csv

       This handler will pick a response format to match the input
       if the 'wt' parameter is not explicit
    -->
  <requestHandler name="/update" class="solr.UpdateRequestHandler">
    <!-- See below for information on defining
         updateRequestProcessorChains that can be used by name
         on each Update Request
      -->
    <!--
       <lst name="defaults">
         <str name="update.chain">dedupe</str>
       </lst>
       -->
  </requestHandler>

  <!-- The following are implicitly added
  <requestHandler name="/update/json" class="solr.UpdateRequestHandler">
        <lst name="defaults">
         <str name="stream.contentType">application/json</str>
       </lst>
  </requestHandler>
  <requestHandler name="/update/csv" class="solr.UpdateRequestHandler">
        <lst name="defaults">
         <str name="stream.contentType">application/csv</str>
       </lst>
  </requestHandler>
  -->

  <!-- Solr Cell Update Request Handler

       http://wiki.apache.org/solr/ExtractingRequestHandler 

    -->
  <requestHandler name="/update/extract" 
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="lowernames">true</str>
      <str name="uprefix">ignored_</str>

      <!-- capture link hrefs but ignore div attributes -->
      <str name="captureAttr">true</str>
      <str name="fmap.a">links</str>
      <str name="fmap.div">ignored_</str>
    </lst>
  </requestHandler>


  <!-- Field Analysis Request Handler

       RequestHandler that provides much the same functionality as
       analysis.jsp. Provides the ability to specify multiple field
       types and field names in the same request and outputs
       index-time and query-time analysis for each of them.

       Request parameters are:
       analysis.fieldname - field name whose analyzers are to be used

       analysis.fieldtype - field type whose analyzers are to be used
       analysis.fieldvalue - text for index-time analysis
       q (or analysis.q) - text for query time analysis
       analysis.showmatch (true|false) - When set to true and when
           query analysis is performed, the produced tokens of the
           field value analysis will be marked as "matched" for every
           token that is produces by the query analysis
   -->
  <requestHandler name="/analysis/field" 
                  startup="lazy"
                  class="solr.FieldAnalysisRequestHandler" />


  <!-- Document Analysis Handler

       http://wiki.apache.org/solr/AnalysisRequestHandler

       An analysis handler that provides a breakdown of the analysis
       process of provided documents. This handler expects a (single)
       content stream with the following format:

       <docs>
         <doc>
           <field name="id">1</field>
           <field name="name">The Name</field>
           <field name="text">The Text Value</field>
         </doc>
         <doc>...</doc>
         <doc>...</doc>
         ...
       </docs>

    Note: Each document must contain a field which serves as the
    unique key. This key is used in the returned response to associate
    an analysis breakdown to the analyzed document.

    Like the FieldAnalysisRequestHandler, this handler also supports
    query analysis by sending either an "analysis.query" or "q"
    request parameter that holds the query text to be analyzed. It
    also supports the "analysis.showmatch" parameter which when set to
    true, all field tokens that match the query tokens will be marked
    as a "match". 
  -->
  <requestHandler name="/analysis/document" 
                  class="solr.DocumentAnalysisRequestHandler" 
                  startup="lazy" />

  <!-- Admin Handlers

       Admin Handlers - This will register all the standard admin
       RequestHandlers.  
    -->
  <requestHandler name="/admin/" 
                  class="solr.admin.AdminHandlers" />
  <!-- This single handler is equivalent to the following... -->
  <!--
     <requestHandler name="/admin/luke"       class="solr.admin.LukeRequestHandler" />
     <requestHandler name="/admin/system"     class="solr.admin.SystemInfoHandler" />
     <requestHandler name="/admin/plugins"    class="solr.admin.PluginInfoHandler" />
     <requestHandler name="/admin/threads"    class="solr.admin.ThreadDumpHandler" />
     <requestHandler name="/admin/properties" class="solr.admin.PropertiesRequestHandler" />
     <requestHandler name="/admin/file"       class="solr.admin.ShowFileRequestHandler" >
    -->
  <!-- If you wish to hide files under ${solr.home}/conf, explicitly
       register the ShowFileRequestHandler using the definition below. 
       NOTE: The glob pattern ('*') is the only pattern supported at present, *.xml will
             not exclude all files ending in '.xml'. Use it to exclude _all_ updates
    -->
  <!--
     <requestHandler name="/admin/file" 
                     class="solr.admin.ShowFileRequestHandler" >
       <lst name="invariants">
         <str name="hidden">synonyms.txt</str> 
         <str name="hidden">anotherfile.txt</str> 
         <str name="hidden">*</str> 
       </lst>
     </requestHandler>
    -->

  <!-- ping/healthcheck -->
  <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
    <lst name="invariants">
      <str name="q">solrpingquery</str>
    </lst>
    <lst name="defaults">
      <str name="echoParams">all</str>
    </lst>
    <!-- An optional feature of the PingRequestHandler is to configure the 
         handler with a "healthcheckFile" which can be used to enable/disable 
         the PingRequestHandler.
         relative paths are resolved against the data dir 
      -->
    <!-- <str name="healthcheckFile">server-enabled.txt</str> -->
  </requestHandler>

  <!-- Echo the request contents back to the client -->
  <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
    <lst name="defaults">
     <str name="echoParams">explicit</str> 
     <str name="echoHandler">true</str>
    </lst>
  </requestHandler>
  
  <!-- Solr Replication

       The SolrReplicationHandler supports replicating indexes from a
       "master" used for indexing and "slaves" used for queries.

       http://wiki.apache.org/solr/SolrReplication 

       It is also necessary for SolrCloud to function (in Cloud mode, the
       replication handler is used to bulk transfer segments when nodes 
       are added or need to recover).

       https://wiki.apache.org/solr/SolrCloud/
    -->
  <requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <!--
       To enable simple master/slave replication, uncomment one of the 
       sections below, depending on whether this solr instance should be
       the "master" or a "slave".  If this instance is a "slave" you will 
       also need to fill in the masterUrl to point to a real machine.
    -->
    <!--
       <lst name="master">
         <str name="replicateAfter">commit</str>
         <str name="replicateAfter">startup</str>
         <str name="confFiles">schema.xml,stopwords.txt</str>
       </lst>
    -->
    <!--
       <lst name="slave">
         <str name="masterUrl">http://your-master-hostname:8983/solr</str>
         <str name="pollInterval">00:00:60</str>
       </lst>
    -->
  </requestHandler>

  <!-- Search Components

       Search components are registered to SolrCore and used by 
       instances of SearchHandler (which can access them by name)
       
       By default, the following components are available:
       
       <searchComponent name="query"     class="solr.QueryComponent" />
       <searchComponent name="facet"     class="solr.FacetComponent" />
       <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />
       <searchComponent name="highlight" class="solr.HighlightComponent" />
       <searchComponent name="stats"     class="solr.StatsComponent" />
       <searchComponent name="debug"     class="solr.DebugComponent" />
   
       Default configuration in a requestHandler would look like:

       <arr name="components">
         <str>query</str>
         <str>facet</str>
         <str>mlt</str>
         <str>highlight</str>
         <str>stats</str>
         <str>debug</str>
       </arr>

       If you register a searchComponent to one of the standard names, 
       that will be used instead of the default.

       To insert components before or after the 'standard' components, use:
    
       <arr name="first-components">
         <str>myFirstComponentName</str>
       </arr>
    
       <arr name="last-components">
         <str>myLastComponentName</str>
       </arr>

       NOTE: The component registered with the name "debug" will
       always be executed after the "last-components" 
       
     -->
  
   <!-- Spell Check

        The spell check component can return a list of alternative spelling
        suggestions.  

        http://wiki.apache.org/solr/SpellCheckComponent
     -->
  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">

    <str name="queryAnalyzerFieldType">text_general</str>

    <!-- Multiple "Spell Checkers" can be declared and used by this
         component
      -->

    <!-- a spellchecker built from a field of the main index -->
    <lst name="spellchecker">
      <str name="name">default</str>
      <str name="field">text</str>
      <str name="classname">solr.DirectSolrSpellChecker</str>
      <!-- the spellcheck distance measure used, the default is the internal levenshtein -->
      <str name="distanceMeasure">internal</str>
      <!-- minimum accuracy needed to be considered a valid spellcheck suggestion -->
      <float name="accuracy">0.5</float>
      <!-- the maximum #edits we consider when enumerating terms: can be 1 or 2 -->
      <int name="maxEdits">2</int>
      <!-- the minimum shared prefix when enumerating terms -->
      <int name="minPrefix">1</int>
      <!-- maximum number of inspections per result. -->
      <int name="maxInspections">5</int>
      <!-- minimum length of a query term to be considered for correction -->
      <int name="minQueryLength">4</int>
      <!-- maximum threshold of documents a query term can appear to be considered for correction -->
      <float name="maxQueryFrequency">0.01</float>
      <!-- uncomment this to require suggestions to occur in 1% of the documents
      	<float name="thresholdTokenFrequency">.01</float>
      -->
    </lst>
    
    <!-- a spellchecker that can break or combine words.  See "/spell" handler below for usage -->
    <lst name="spellchecker">
      <str name="name">wordbreak</str>
      <str name="classname">solr.WordBreakSolrSpellChecker</str>      
      <str name="field">name</str>
      <str name="combineWords">true</str>
      <str name="breakWords">true</str>
      <int name="maxChanges">10</int>
    </lst>

    <!-- a spellchecker that uses a different distance measure -->
    <!--
       <lst name="spellchecker">
         <str name="name">jarowinkler</str>
         <str name="field">spell</str>
         <str name="classname">solr.DirectSolrSpellChecker</str>
         <str name="distanceMeasure">
           org.apache.lucene.search.spell.JaroWinklerDistance
         </str>
       </lst>
     -->

    <!-- a spellchecker that use an alternate comparator 

         comparatorClass be one of:
          1. score (default)
          2. freq (Frequency first, then score)
          3. A fully qualified class name
      -->
    <!--
       <lst name="spellchecker">
         <str name="name">freq</str>
         <str name="field">lowerfilt</str>
         <str name="classname">solr.DirectSolrSpellChecker</str>
         <str name="comparatorClass">freq</str>
      -->

    <!-- A spellchecker that reads the list of words from a file -->
    <!--
       <lst name="spellchecker">
         <str name="classname">solr.FileBasedSpellChecker</str>
         <str name="name">file</str>
         <str name="sourceLocation">spellings.txt</str>
         <str name="characterEncoding">UTF-8</str>
         <str name="spellcheckIndexDir">spellcheckerFile</str>
       </lst>
      -->
  </searchComponent>
  
  <!-- A request handler for demonstrating the spellcheck component.  

       NOTE: This is purely as an example.  The whole purpose of the
       SpellCheckComponent is to hook it into the request handler that
       handles your normal user queries so that a separate request is
       not needed to get suggestions.

       IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS
       NOT WHAT YOU WANT FOR YOUR PRODUCTION SYSTEM!
       
       See http://wiki.apache.org/solr/SpellCheckComponent for details
       on the request parameters.
    -->
  <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="df">text</str>
      <!-- Solr will use suggestions from both the 'default' spellchecker
           and from the 'wordbreak' spellchecker and combine them.
           collations (re-written queries) can include a combination of
           corrections from both spellcheckers -->
      <str name="spellcheck.dictionary">default</str>
      <str name="spellcheck.dictionary">wordbreak</str>
      <str name="spellcheck">on</str>
      <str name="spellcheck.extendedResults">true</str>       
      <str name="spellcheck.count">10</str>
      <str name="spellcheck.alternativeTermCount">5</str>
      <str name="spellcheck.maxResultsForSuggest">5</str>       
      <str name="spellcheck.collate">true</str>
      <str name="spellcheck.collateExtendedResults">true</str>  
      <str name="spellcheck.maxCollationTries">10</str>
      <str name="spellcheck.maxCollations">5</str>         
    </lst>
    <arr name="last-components">
      <str>spellcheck</str>
    </arr>
  </requestHandler>

  <searchComponent name="suggest" class="solr.SuggestComponent">
  	<lst name="suggester">
      <str name="name">mySuggester</str>
      <str name="lookupImpl">FuzzyLookupFactory</str>      <!-- org.apache.solr.spelling.suggest.fst -->
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>     <!-- org.apache.solr.spelling.suggest.HighFrequencyDictionaryFactory --> 
      <str name="field">cat</str>
      <str name="weightField">price</str>
      <str name="suggestAnalyzerFieldType">string</str>
    </lst>
  </searchComponent>

  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="suggest">true</str>
      <str name="suggest.count">10</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>
  <!-- Term Vector Component

       http://wiki.apache.org/solr/TermVectorComponent
    -->
  <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>

  <!-- A request handler for demonstrating the term vector component

       This is purely as an example.

       In reality you will likely want to add the component to your 
       already specified request handlers. 
    -->
  <requestHandler name="/tvrh" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="df">text</str>
      <bool name="tv">true</bool>
    </lst>
    <arr name="last-components">
      <str>tvComponent</str>
    </arr>
  </requestHandler>

  <!-- Clustering Component

       You'll need to set the solr.clustering.enabled system property
       when running solr to run with clustering enabled:

            java -Dsolr.clustering.enabled=true -jar start.jar

       http://wiki.apache.org/solr/ClusteringComponent
       http://carrot2.github.io/solr-integration-strategies/
    -->
  <searchComponent name="clustering"
                   enable="${solr.clustering.enabled:false}"
                   class="solr.clustering.ClusteringComponent" >
    <lst name="engine">
      <str name="name">lingo</str>

      <!-- Class name of a clustering algorithm compatible with the Carrot2 framework.

           Currently available open source algorithms are:
           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
           * org.carrot2.clustering.stc.STCClusteringAlgorithm
           * org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm

           See http://project.carrot2.org/algorithms.html for more information.

           A commercial algorithm Lingo3G (needs to be installed separately) is defined as:
           * com.carrotsearch.lingo3g.Lingo3GClusteringAlgorithm
        -->
      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>

      <!-- Override location of the clustering algorithm's resources 
           (attribute definitions and lexical resources).

           A directory from which to load algorithm-specific stop words,
           stop labels and attribute definition XMLs. 

           For an overview of Carrot2 lexical resources, see:
           http://download.carrot2.org/head/manual/#chapter.lexical-resources

           For an overview of Lingo3G lexical resources, see:
           http://download.carrotsearch.com/lingo3g/manual/#chapter.lexical-resources
       -->
      <str name="carrot.resourcesDir">clustering/carrot2</str>
    </lst>

    <!-- An example definition for the STC clustering algorithm. -->
    <lst name="engine">
      <str name="name">stc</str>
      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
    </lst>

    <!-- An example definition for the bisecting kmeans clustering algorithm. -->
    <lst name="engine">
      <str name="name">kmeans</str>
      <str name="carrot.algorithm">org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm</str>
    </lst>
  </searchComponent>

  <!-- A request handler for demonstrating the clustering component

       This is purely as an example.

       In reality you will likely want to add the component to your 
       already specified request handlers. 
    -->
  <requestHandler name="/clustering"
                  startup="lazy"
                  enable="${solr.clustering.enabled:false}"
                  class="solr.SearchHandler">
    <lst name="defaults">
      <bool name="clustering">true</bool>
      <bool name="clustering.results">true</bool>
      <!-- Field name with the logical "title" of a each document (optional) -->
      <str name="carrot.title">name</str>
      <!-- Field name with the logical "URL" of a each document (optional) -->
      <str name="carrot.url">id</str>
      <!-- Field name with the logical "content" of a each document (optional) -->
      <str name="carrot.snippet">features</str>
      <!-- Apply highlighter to the title/ content and use this for clustering. -->
      <bool name="carrot.produceSummary">true</bool>
      <!-- the maximum number of labels per cluster -->
      <!--<int name="carrot.numDescriptions">5</int>-->
      <!-- produce sub clusters -->
      <bool name="carrot.outputSubClusters">false</bool>

      <!-- Configure the remaining request handler parameters. -->
      <str name="defType">edismax</str>
      <str name="qf">
        text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
      </str>
      <str name="q.alt">*:*</str>
      <str name="rows">10</str>
      <str name="fl">*,score</str>
    </lst>
    <arr name="last-components">
      <str>clustering</str>
    </arr>
  </requestHandler>
  
  <!-- Terms Component

       http://wiki.apache.org/solr/TermsComponent

       A component to return terms and document frequency of those
       terms
    -->
  <searchComponent name="terms" class="solr.TermsComponent"/>

  <!-- A request handler for demonstrating the terms component -->
  <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
     <lst name="defaults">
      <bool name="terms">true</bool>
      <bool name="distrib">false</bool>
    </lst>     
    <arr name="components">
      <str>terms</str>
    </arr>
  </requestHandler>


  <!-- Query Elevation Component

       http://wiki.apache.org/solr/QueryElevationComponent

       a search component that enables you to configure the top
       results for a given query regardless of the normal lucene
       scoring.
    -->
  <searchComponent name="elevator" class="solr.QueryElevationComponent" >
    <!-- pick a fieldType to analyze queries -->
    <str name="queryFieldType">string</str>
    <str name="config-file">elevate.xml</str>
  </searchComponent>

  <!-- A request handler for demonstrating the elevator component -->
  <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="df">text</str>
    </lst>
    <arr name="last-components">
      <str>elevator</str>
    </arr>
  </requestHandler>

  <!-- Highlighting Component

       http://wiki.apache.org/solr/HighlightingParameters
    -->
  <searchComponent class="solr.HighlightComponent" name="highlight">
    <highlighting>
      <!-- Configure the standard fragmenter -->
      <!-- This could most likely be commented out in the "default" case -->
      <fragmenter name="gap" 
                  default="true"
                  class="solr.highlight.GapFragmenter">
        <lst name="defaults">
          <int name="hl.fragsize">100</int>
        </lst>
      </fragmenter>

      <!-- A regular-expression-based fragmenter 
           (for sentence extraction) 
        -->
      <fragmenter name="regex" 
                  class="solr.highlight.RegexFragmenter">
        <lst name="defaults">
          <!-- slightly smaller fragsizes work better because of slop -->
          <int name="hl.fragsize">70</int>
          <!-- allow 50% slop on fragment sizes -->
          <float name="hl.regex.slop">0.5</float>
          <!-- a basic sentence pattern -->
          <str name="hl.regex.pattern">[-\w ,/\n\&quot;&apos;]{20,200}</str>
        </lst>
      </fragmenter>

      <!-- Configure the standard formatter -->
      <formatter name="html" 
                 default="true"
                 class="solr.highlight.HtmlFormatter">
        <lst name="defaults">
          <str name="hl.simple.pre"><![CDATA[<em>]]></str>
          <str name="hl.simple.post"><![CDATA[</em>]]></str>
        </lst>
      </formatter>

      <!-- Configure the standard encoder -->
      <encoder name="html" 
               class="solr.highlight.HtmlEncoder" />

      <!-- Configure the standard fragListBuilder -->
      <fragListBuilder name="simple" 
                       class="solr.highlight.SimpleFragListBuilder"/>
      
      <!-- Configure the single fragListBuilder -->
      <fragListBuilder name="single" 
                       class="solr.highlight.SingleFragListBuilder"/>
      
      <!-- Configure the weighted fragListBuilder -->
      <fragListBuilder name="weighted" 
                       default="true"
                       class="solr.highlight.WeightedFragListBuilder"/>
      
      <!-- default tag FragmentsBuilder -->
      <fragmentsBuilder name="default" 
                        default="true"
                        class="solr.highlight.ScoreOrderFragmentsBuilder">
        <!-- 
        <lst name="defaults">
          <str name="hl.multiValuedSeparatorChar">/</str>
        </lst>
        -->
      </fragmentsBuilder>

      <!-- multi-colored tag FragmentsBuilder -->
      <fragmentsBuilder name="colored" 
                        class="solr.highlight.ScoreOrderFragmentsBuilder">
        <lst name="defaults">
          <str name="hl.tag.pre"><![CDATA[
               <b style="background:yellow">,<b style="background:lawgreen">,
               <b style="background:aquamarine">,<b style="background:magenta">,
               <b style="background:palegreen">,<b style="background:coral">,
               <b style="background:wheat">,<b style="background:khaki">,
               <b style="background:lime">,<b style="background:deepskyblue">]]></str>
          <str name="hl.tag.post"><![CDATA[</b>]]></str>
        </lst>
      </fragmentsBuilder>
      
      <boundaryScanner name="default" 
                       default="true"
                       class="solr.highlight.SimpleBoundaryScanner">
        <lst name="defaults">
          <str name="hl.bs.maxScan">10</str>
          <str name="hl.bs.chars">.,!? &#9;&#10;&#13;</str>
        </lst>
      </boundaryScanner>
      
      <boundaryScanner name="breakIterator" 
                       class="solr.highlight.BreakIteratorBoundaryScanner">
        <lst name="defaults">
          <!-- type should be one of CHARACTER, WORD(default), LINE and SENTENCE -->
          <str name="hl.bs.type">WORD</str>
          <!-- language and country are used when constructing Locale object.  -->
          <!-- And the Locale object will be used when getting instance of BreakIterator -->
          <str name="hl.bs.language">en</str>
          <str name="hl.bs.country">US</str>
        </lst>
      </boundaryScanner>
    </highlighting>
  </searchComponent>

  <!-- Update Processors

       Chains of Update Processor Factories for dealing with Update
       Requests can be declared, and then used by name in Update
       Request Processors

       http://wiki.apache.org/solr/UpdateRequestProcessor

    --> 
  <!-- Deduplication

       An example dedup update processor that creates the "id" field
       on the fly based on the hash code of some other fields.  This
       example has overwriteDupes set to false since we are using the
       id field as the signatureField and Solr will maintain
       uniqueness based on that anyway.  
       
    -->
  <!--
     <updateRequestProcessorChain name="dedupe">
       <processor class="solr.processor.SignatureUpdateProcessorFactory">
         <bool name="enabled">true</bool>
         <str name="signatureField">id</str>
         <bool name="overwriteDupes">false</bool>
         <str name="fields">name,features,cat</str>
         <str name="signatureClass">solr.processor.Lookup3Signature</str>
       </processor>
       <processor class="solr.LogUpdateProcessorFactory" />
       <processor class="solr.RunUpdateProcessorFactory" />
     </updateRequestProcessorChain>
    -->
  
  <!-- Language identification

       This example update chain identifies the language of the incoming
       documents using the langid contrib. The detected language is
       written to field language_s. No field name mapping is done.
       The fields used for detection are text, title, subject and description,
       making this example suitable for detecting languages form full-text
       rich documents injected via ExtractingRequestHandler.
       See more about langId at http://wiki.apache.org/solr/LanguageDetection
    -->
    <!--
     <updateRequestProcessorChain name="langid">
       <processor class="org.apache.solr.update.processor.TikaLanguageIdentifierUpdateProcessorFactory">
         <str name="langid.fl">text,title,subject,description</str>
         <str name="langid.langField">language_s</str>
         <str name="langid.fallback">en</str>
       </processor>
       <processor class="solr.LogUpdateProcessorFactory" />
       <processor class="solr.RunUpdateProcessorFactory" />
     </updateRequestProcessorChain>
    -->

  <!-- Script update processor

    This example hooks in an update processor implemented using JavaScript.

    See more about the script update processor at http://wiki.apache.org/solr/ScriptUpdateProcessor
  -->
  <!--
    <updateRequestProcessorChain name="script">
      <processor class="solr.StatelessScriptUpdateProcessorFactory">
        <str name="script">update-script.js</str>
        <lst name="params">
          <str name="config_param">example config parameter</str>
        </lst>
      </processor>
      <processor class="solr.RunUpdateProcessorFactory" />
    </updateRequestProcessorChain>
  -->
 
  <!-- Response Writers

       http://wiki.apache.org/solr/QueryResponseWriter

       Request responses will be written using the writer specified by
       the 'wt' request parameter matching the name of a registered
       writer.

       The "default" writer is the default and will be used if 'wt' is
       not specified in the request.
    -->
  <!-- The following response writers are implicitly configured unless
       overridden...
    -->
  <!--
     <queryResponseWriter name="xml" 
                          default="true"
                          class="solr.XMLResponseWriter" />
     <queryResponseWriter name="json" class="solr.JSONResponseWriter"/>
     <queryResponseWriter name="python" class="solr.PythonResponseWriter"/>
     <queryResponseWriter name="ruby" class="solr.RubyResponseWriter"/>
     <queryResponseWriter name="php" class="solr.PHPResponseWriter"/>
     <queryResponseWriter name="phps" class="solr.PHPSerializedResponseWriter"/>
     <queryResponseWriter name="csv" class="solr.CSVResponseWriter"/>
     <queryResponseWriter name="schema.xml" class="solr.SchemaXmlResponseWriter"/>
    -->

  <queryResponseWriter name="json" class="solr.JSONResponseWriter">
     <!-- For the purposes of the tutorial, JSON responses are written as
      plain text so that they are easy to read in *any* browser.
      If you expect a MIME type of "application/json" just remove this override.
     -->
    <str name="content-type">text/plain; charset=UTF-8</str>
  </queryResponseWriter>
  
  <!--
     Custom response writers can be declared as needed...
    -->
    <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"/>
  

  <!-- XSLT response writer transforms the XML output by any xslt file found
       in Solr's conf/xslt directory.  Changes to xslt files are checked for
       every xsltCacheLifetimeSeconds.  
    -->
  <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">
    <int name="xsltCacheLifetimeSeconds">5</int>
  </queryResponseWriter>

  <!-- Query Parsers

       http://wiki.apache.org/solr/SolrQuerySyntax

       Multiple QParserPlugins can be registered by name, and then
       used in either the "defType" param for the QueryComponent (used
       by SearchHandler) or in LocalParams
    -->
  <!-- example of registering a query parser -->
  <!--
     <queryParser name="myparser" class="com.mycompany.MyQParserPlugin"/>
    -->

  <!-- Function Parsers

       http://wiki.apache.org/solr/FunctionQuery

       Multiple ValueSourceParsers can be registered by name, and then
       used as function names when using the "func" QParser.
    -->
  <!-- example of registering a custom function parser  -->
  <!--
     <valueSourceParser name="myfunc" 
                        class="com.mycompany.MyValueSourceParser" />
    -->
    
  
  <!-- Document Transformers
       http://wiki.apache.org/solr/DocTransformers
    -->
  <!--
     Could be something like:
     <transformer name="db" class="com.mycompany.LoadFromDatabaseTransformer" >
       <int name="connection">jdbc://....</int>
     </transformer>
     
     To add a constant value to all docs, use:
     <transformer name="mytrans2" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
       <int name="value">5</int>
     </transformer>
     
     If you want the user to still be able to change it with _value:something_ use this:
     <transformer name="mytrans3" class="org.apache.solr.response.transform.ValueAugmenterFactory" >
       <double name="defaultValue">5</double>
     </transformer>

      If you are using the QueryElevationComponent, you may wish to mark documents that get boosted.  The
      EditorialMarkerFactory will do exactly that:
     <transformer name="qecBooster" class="org.apache.solr.response.transform.EditorialMarkerFactory" />
    -->
    

  <!-- Legacy config for the admin interface -->
  <admin>
    <defaultQuery>*:*</defaultQuery>
  </admin>

</config>

xml 在Android上访问Camera Webview

main
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setPluginState(WebSettings.PluginState.ON);

webview.setWebChromeClient(new WebChromeClient(){
        // Need to accept permissions to use the camera
        @Override
        public void onPermissionRequest(final PermissionRequest request) {
            L.d("onPermissionRequest");
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                 request.grant(request.getResources());
            }
        }
    });
manifest
<uses-permission android:name="android.permission.CAMERA" />

xml 组件和布局 - v1.012

组件和布局 - v1.012

Code to call template.xml
<mvt:assign name="l.settings:layout_code" value="'sfnt_layout'" />
<mvt:item name="readytheme" param="contentsection( 'components_and_layouts' )" />
<mvt:eval expr="l.settings:final_output" />
RT Section - components_and_layouts.xml
<mvt:assign name="l.settings:final_output"  value="''" />

<mvt:if expr="NOT len_var( l.settings:layout_code )">
	<mvt:exit />
</mvt:if>

<mvt:assign name="l.settings:layout" value="''" />
<mvt:item name="tgcomponent" param="Layout_Load_Code( l.settings:layout_code, l.settings:layout )"/>

<mvt:if expr="ISNULL l.settings:layout">
	<mvt:exit />
</mvt:if>

<mvt:do file="g.Module_Library_Utilities" name="l.success" value="QuickSortArray( l.settings:layout, ':disp_order', -1 )" />

<mvt:assign name="l.components"				value="l.settings:layout" />
<mvt:assign name="l.data"					value="''" />
<mvt:assign name="l.components_count"		value="miva_array_elements( l.components )" />
<mvt:assign name="l.while_counter"			value="1" />
<mvt:assign name="l.settings:unique_id"		value="'#'" />

<mvt:while expr="( l.while_counter LE l.components_count )">
	<mvt:assign name="l.settings:current_item" value="miva_variable_value( 'l.components[' $ l.while_counter $ ']' )" />

	<mvt:capture variable="l.data">
		<mvt:if expr="l.settings:current_item:component:code EQ 'SOME_CODE_HERE'">
			<mvt:if expr="l.settings:current_item:children_count GT 0">
				<!--[&mvt:unique_id;&mvt:current_item:id;]-->
			</mvt:if>
		</mvt:if>
	</mvt:capture>

	<mvt:if expr="l.settings:current_item:children_count GT 0">
		<mvt:do file="g.Module_Library_Utilities" name="l.success" value="QuickSortArray( l.settings:current_item:children, ':disp_order', -1 )" />
		<mvt:assign name="l.components_count" value="miva_array_merge( l.settings:current_item:children, 1, l.settings:current_item:children_count, l.components, -1 )" />
	</mvt:if>
	
	<mvt:assign name="l.index" value="0" />

	<mvt:if expr="l.settings:current_item:parent GT 0">
		<mvt:assign name="l.find_me"	value="'<!--[' $ l.settings:unique_id $ l.settings:current_item:parent $ ']-->'" />
		<mvt:assign name="l.index"		value="indexof( l.find_me, l.settings:final_output, 1 )" />
	</mvt:if>

	<mvt:if expr="l.index GT 0">
		<mvt:assign name="l.index_findme_length"	value="l.index + len_var( l.find_me )" />
		<mvt:assign name="l.settings:final_output"	value="substring_var( l.settings:final_output, 1, l.index_findme_length ) $ l.data $ substring_var( l.settings:final_output, l.index_findme_length, len_var( l.settings:final_output ) )" />
	<mvt:else>
		<mvt:assign name="l.settings:final_output"	value="l.data $ l.settings:final_output" />
	</mvt:if>

	<mvt:assign name="l.while_counter" value="l.while_counter + 1" />
</mvt:while>

<mvt:assign name="l.settings:layout_code" value="''" />
Shadows Elements Example.xml

<mvt:assign name="l.settings:final_output"  value="''" />

<mvt:if expr="NOT len_var( l.settings:layout_code )">
	<mvt:exit />
</mvt:if>

<mvt:assign name="l.settings:layout" value="''" />
<mvt:item name="tgcomponent" param="Layout_Load_Code( l.settings:layout_code, l.settings:layout )"/>

<mvt:if expr="ISNULL l.settings:layout">
	<mvt:exit />
</mvt:if>

<mvt:do file="g.Module_Library_Utilities" name="l.success" value="QuickSortArray( l.settings:layout, ':disp_order', -1 )" />

<mvt:assign name="l.components"			value="l.settings:layout" />
<mvt:assign name="l.data" 				value="''" />
<mvt:assign name="l.components_count"	value="miva_array_elements( l.components )" />
<mvt:assign name="l.while_counter"		value="1" />
<mvt:assign name="l.settings:unique_id"	value="'#'" />

<mvt:while expr="( l.while_counter LE l.components_count )">
	<mvt:assign name="l.settings:current_item" value="miva_variable_value( 'l.components[' $ l.while_counter $ ']' )" />

	<mvt:capture variable="l.data">
		<mvt:if expr="l.settings:current_item:component:code EQ 'shadows_hero'">
			<section class="o-layout">
				<div class="o-layout__item">
					<mvt:if expr="l.settings:current_item:attributes:link:value">
						<a class="x-hero" href="&mvte:current_item:attributes:link:value";">
							<img src="&mvte:current_item:attributes:image:value;" alt="&mvte:current_item:attributes:alt:value;">
						</a>
					<mvt:else>
						<span class="x-hero">
							<img src="&mvte:current_item:attributes:image:value;" alt="&mvte:current_item:attributes:alt:value;">
						</span>
					</mvt:if>
				</div>
			</section>
			<br>
		<mvt:elseif expr="l.settings:current_item:component:code EQ 'shadows_text'">
			<section class="o-layout t-storefront-about">
				<div class="o-layout__item u-text-center">
					<br>
					<h3 class="c-heading-charlie c-heading--keyline u-text-bold u-text-uppercase">
						<mvt:if expr="l.settings:current_item:attributes:subtitle:value">
							<span class="c-heading--subheading u-color-gray-30">&mvt:current_item:attributes:subtitle:value;</span>
							<mvt:if expr="l.settings:current_item:attributes:title:value"><br></mvt:if>
						</mvt:if>
						&mvt:current_item:attributes:title:value;
					</h3>
					<p>
						<span class="u-inline-block u-text-constrain t-storefront-about__brief">&mvt:current_item:attributes:text:value;</span>
					</p>
					<br>
				</div>
			</section>
			<br>
		<mvt:elseif expr="l.settings:current_item:component:code EQ 'shadows_large_promo'">
			<section class="o-layout">
				<div class="o-layout__item">
					<mvt:if expr="l.settings:current_item:attributes:link:value">
						<a href="&mvte:current_item:attributes:link:value";">
							<img src="&mvte:current_item:attributes:image:value;" alt="&mvte:current_item:attributes:alt:value;">
						</a>
					<mvt:else>
						<img src="&mvte:current_item:attributes:image:value;" alt="&mvte:current_item:attributes:alt:value;">
					</mvt:if>
				</div>
			</section>
			<br>
		<mvt:elseif expr="l.settings:current_item:component:code EQ 'shadows_small_promo_wrap'">
			<mvt:if expr="l.settings:current_item:children_count GT 0">
				<section class="o-layout u-grids-1 u-grids-2--m">
					<!--[&mvt:unique_id;&mvt:current_item:id;]-->
				</section>
			</mvt:if>
		<mvt:elseif expr="l.settings:current_item:component:code EQ 'shadows_small_promo'">
			<p class="o-layout__item">
				<mvt:if expr="l.settings:current_item:attributes:link:value">
					<a href="&mvte:current_item:attributes:link:value";">
						<img src="&mvte:current_item:attributes:image:value;" alt="&mvte:current_item:attributes:alt:value;">
					</a>
				<mvt:else>
					<img src="&mvte:current_item:attributes:image:value;" alt="&mvte:current_item:attributes:alt:value;">
				</mvt:if>
			</p>
		<mvt:elseif expr="l.settings:current_item:component:code EQ 'shadows_menu_link'">
			<mvt:if expr="ISNULL l.settings:current_item:attributes:target:value">
				<mvt:assign name="l.settings:current_item:attributes:target:value" value="'self'" />
			</mvt:if>
			<mvt:if expr="l.settings:current_item:children_count GT 0">
				<li class="c-navigation__list has-child-menu" data-hook="has-drop-down has-child-menu">
					<mvt:if expr="l.settings:current_item:attributes:link:value">
						<a class="c-navigation__link" href="&mvte:current_item:attributes:link:value;" target="&mvt:current_item:attributes:target:value;">
							&mvt:current_item:name;<span class="c-navigation__link-carat"><span class="u-icon-chevron-right"></span></span>
						</a>
					<mvt:else>
						<span class="c-navigation__link" href="&mvte:current_item:attributes:link:value;" target="&mvt:current_item:attributes:target:value;">
							&mvt:current_item:name;<span class="c-navigation__link-carat"><span class="u-icon-chevron-right"></span></span>
						</span>
					</mvt:if>
					<ul class="c-navigation__row is-hidden">
						<li class="c-navigation__list u-hidden--l" data-hook="show-previous-menu">
							<span class="c-navigation__link"><span class="u-icon-chevron-left">&nbsp;</span><span class="o-layout--grow">Back</span></span>
						</li>
						<!--[&mvt:unique_id;&mvt:current_item:id;]-->
					</ul>
				</li>
			<mvt:else>
				<li class="c-navigation__list">
					<mvt:if expr="l.settings:current_item:attributes:link:value">
						<a class="c-navigation__link" href="&mvte:current_item:attributes:link:value;" target="&mvt:current_item:attributes:target:value;">&mvt:current_item:name;</a>
					<mvt:else>
						<span class="c-navigation__link" href="&mvte:current_item:attributes:link:value;" target="&mvt:current_item:attributes:target:value;">&mvt:current_item:name;</span>
					</mvt:if>
				</li>
			</mvt:if>
		</mvt:if>
	</mvt:capture>

	<mvt:if expr="l.settings:current_item:children_count GT 0">
		<mvt:do file="g.Module_Library_Utilities" name="l.success" value="QuickSortArray( l.settings:current_item:children, ':disp_order', -1 )" />
		<mvt:assign name="l.components_count" value="miva_array_merge( l.settings:current_item:children, 1, l.settings:current_item:children_count, l.components, -1 )" />
	</mvt:if>
	
	<mvt:assign name="l.index" value="0" />

	<mvt:if expr="l.settings:current_item:parent GT 0">
		<mvt:assign name="l.find_me"	value="'<!--[' $ l.settings:unique_id $ l.settings:current_item:parent $ ']-->'" />
		<mvt:assign name="l.index"		value="indexof( l.find_me, l.settings:final_output, 1 )" />
	</mvt:if>

	<mvt:if expr="l.index GT 0">
		<mvt:assign name="l.index_findme_length"	value="l.index + len_var( l.find_me )" />
		<mvt:assign name="l.settings:final_output"	value="substring_var( l.settings:final_output, 1, l.index_findme_length ) $ l.data $ substring_var( l.settings:final_output, l.index_findme_length, len_var( l.settings:final_output ) )" />
	<mvt:else>
		<mvt:assign name="l.settings:final_output"	value="l.data $ l.settings:final_output" />
	</mvt:if>

	<mvt:assign name="l.while_counter" value="l.while_counter + 1" />
</mvt:while>

<mvt:assign name="l.settings:layout_code" value="''" />

xml article.xml

article.xml
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:mi="http://schemas.ingestion.microsoft.com/common/" xml:lang="en-us">
  <title>The Atlantic</title>
  <link href="http://www.theatlantic.com/" rel="alternate" />
  <link href="http://www.theatlantic.com/feed/msn/" rel="self" />
  <id>http://www.theatlantic.com/</id>
  <updated>2019-03-26T11:15:25-04:00</updated>
  <rights>Copyright 2019 by The Atlantic Monthly Group. All Rights Reserved.</rights>
  <entry>
    <content type="html">&lt;p dir="ltr"&gt;In the 1960s, reporters became attuned to the power they had over the public’s attention, and some tried to use it judiciously. While white supremacists, especially members of the Ku Klux Klan, offered privileged insider access to reporters who provided favorable coverage, the black press chose to ignore the Klan unless it was to highlight the group’s decreasing power. Jewish civil-rights organizations suggested that journalists practice “quarantine” and actively choose not to cover the American Nazi Party. The Klan and the Nazis wanted attention. In each of these situations, media outlets acted as gatekeepers that could strategically silence those seeking to use the press as a megaphone.&lt;/p&gt;&lt;p dir="ltr"&gt;Social media have fundamentally changed who controls the volume on certain social issues. Facebook, Google, and other platform companies want to believe they have created a circumvention technology that connects people directly to one another without any gates, walls, or barriers. Yet this connectivity has also allowed some of the worst people in this world to find one another, get organized, and use these same platforms to harass and silence others. The platform companies do not know how to fix, or perhaps do not understand, what they have built. In the meantime, previously localized phenomena spread around the globe, so much so that the culture of American-style white supremacy turned up in a terrorist attack on Muslims in New Zealand.&lt;/p&gt;&lt;p dir="ltr"&gt;As a sociologist at Harvard Kennedy School’s Shorenstein Center, I study how technology is used by social movements, including groups on the far left and the far right. Since the uprisings in the Middle East and elsewhere in 2011, we have witnessed thousands of protests and events inspired by and organized through social media. Progressive social movements routinely use networking technologies to grow their ranks and publicize their ideas. White supremacists have their own ways of deploying the same technology.&lt;/p&gt;&lt;p dir="ltr"&gt;In the aftermath of outbursts of violence such as the one in New Zealand, traditional news outlets draw heavily on social-media postings for insights into the perpetrator’s motives and mine them for details that make stories sound more authoritative and vivid. Certain oddball phrases, internet memes, and obscure message boards garner mainstream attention for the first time. Inevitably, people Google them.&lt;/p&gt;&lt;p dir="ltr"&gt;The extra attention that these ideas gain in the aftermath of a violent attack isn’t just an unfortunate side effect of news coverage. It’s the sound system by which extremist movements transmit their ideas to a broader public, and they are using it with more and more skill.&lt;/p&gt;&lt;p dir="ltr"&gt;One variable remains consistent across all networked movements: The moderation policies of different platforms directly affect how groups amplify political ideologies online. White supremacists and other extremists tend to use anonymous message boards to plan manipulation campaigns. These places traffic in racist, sexist, and transphobic content and link to obscure podcasts and blogs. Moderation is rare and tends to occur only when too much attention is drawn to a certain post. In some forums, posts self-delete and leave few traces behind.&lt;/p&gt;&lt;p dir="ltr"&gt;Far more useful in reaching a new audience are places such as Twitter, YouTube, and Facebook, which remove objectionable content—but may not do so before it spreads virally.&lt;/p&gt;&lt;p dir="ltr"&gt;Taking advantage of that dynamic, the murderer in New Zealand posted a full press kit on an anonymous message board prior to live-streaming his terrifying acts on Facebook. Many have labeled it a manifesto, but it reads more like a collection of copy-and-pasted white-supremacist conspiracy theories and memes. It would never have been notable on its own. This individual did not have the power or influence to boost these worn-out tropes. This manifesto could probably have existed in perpetuity on obscure document-hosting sites, and no one would have noticed. For platforms, this kind of content is simply white noise.&lt;/p&gt;&lt;p dir="ltr"&gt;Explosive violence was the signal necessary to call attention to these posts. The New Zealand attacker used the live-streaming feature of Facebook to control the narrative, even to the point of saying “Subscribe to PewDiePie”—a meme referencing a popular right-wing YouTube influencer—during his broadcast. He succeeded in linking his deeds to PewDiePie’s fame. As of today, Google-search returns on “PewDiePie” include references to the Christchurch attack.&lt;/p&gt;&lt;p dir="ltr"&gt;The New Zealand attacker also knew that others would be recording and archiving the video for further amplification. When choosing to publish on an anonymous forum first, he also ensured that that group of sympathetic trolls would re-upload content in the wake of takedowns by the major platforms. We’ve seen this tactic many times before. Sometimes it’s used in playful ways. When Scientology tried to get a leaked promotional video featuring Tom Cruise removed from the internet, users made a point of reposting it in a variety of places—making it impossible to stamp out. Other instances are darker: Some users attempted to keep videos on YouTube of a misogynistic murderer from Santa Barbara, California. The scale of these efforts can be startling. In the first 24 hours after the Christchurch attack, Facebook alone &lt;a href="https://twitter.com/fbnewsroom/status/1107117981358682112?s=21"&gt;removed 1.5 million postings of the video&lt;/a&gt;. In a statement late Saturday, the company said it was still working around the clock to “remove violating content using a combination of technology and people.”&lt;/p&gt;&lt;p dir="ltr"&gt;Weeks before Friday’s attack, the New Zealand shooter littered other social-media platforms with memes and articles about immigrants and Muslims to ensure that journalists would have plenty of material to scour. These sorts of cryptic trails are becoming an increasingly common tactic of media manipulators, who anticipate how journalists will cover them. The perpetrator of the New Zealand attack clearly hoped that a new white supremacist would hear a siren song by directly connecting with his words and deeds.&lt;/p&gt;&lt;p dir="ltr"&gt;The sophistication of these manipulators presents a challenge for the media. In describing these dynamics, I’m not mentioning the New Zealand killer’s name. Other than PewDiePie, I’m not citing any of the personalities and tropes he tried to publicize. Withholding details runs counter to the usual rules of storytelling—show, don’t tell—but it also helps slow down the spread of white-supremacist keywords. Journalists and regular internet users need to be cognizant of their role in spreading these ideas, especially because the platform companies haven’t recognized theirs.&lt;/p&gt;&lt;p dir="ltr"&gt;Just as journalists of the past learned to cover white supremacists differently from other groups, platform companies must address the role their technology plays as the megaphone for white supremacists. In designing, deploying, and scaling up their broadcast technologies, internet companies need to understand that white supremacists and other extremists will find and exploit the weak points. While Facebook, Google, Twitter, and others have resisted calls for accountability, there is no longer any doubt about how these platforms—and the media environment now growing up around them—are used to amplify hate.&lt;/p&gt;</content>
    <author>
      <name>Joan Donovan</name>
      <uri>http://local.theatlantic.com/author/joan-donovan/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTS2DBOF/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Jorge Silva / Reuters</media:credit>
      <media:description>A memorial for the victims of the mosque attacks</media:description>
    </media:content>
    <title type="html">How Hate Groups’ Secret Sound System Works</title>
    <link href="https://local.theatlantic.com/ideas/archive/2019/03/extremists-understand-what-tech-platforms-have-built/585136/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T10:21:54-04:00</published>
    <updated>2019-03-17T15:12:52-04:00</updated>
    <summary type="html">White supremacists exploit the weaknesses in the social-media ecosystem as Facebook and Google struggle to keep up.</summary>
    <id>tag:theatlantic.com,2019:50-585136</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;As it has been for decades, the Catholic Church is in the midst of a crisis, one whose long reach has traumatized thousands and left one of the world’s oldest institutions struggling to find a way forward. In late February, the Vatican held a high-profile conference on the sexual-abuse crisis—the revelations of decades of abuse, by priests in different parts of the globe, of children, &lt;u&gt;&lt;a href="https://www.nytimes.com/2018/07/16/us/cardinal-mccarrick-abuse-priest.html"&gt;adult seminarians&lt;/a&gt;&lt;/u&gt;, and &lt;u&gt;&lt;a href="https://www.nytimes.com/2019/02/06/world/europe/pope-francis-sexual-abuse-nuns.html"&gt;nuns&lt;/a&gt;&lt;/u&gt;. During the conference, Pope Francis called for “&lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2019/02/pope-francis-calls-concrete-change-vatican-how/583297/?utm_source=msn"&gt;concrete&lt;/a&gt;”&lt;/u&gt; change, though the &lt;em&gt;&lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2019/02/pope-francis-closes-vaticans-conference-child-sex-abuse/583495/?utm_source=msn"&gt;Atlantic &lt;/a&gt;&lt;/u&gt;&lt;/em&gt;&lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2019/02/pope-francis-closes-vaticans-conference-child-sex-abuse/583495/?utm_source=msn"&gt;reporter Rachel Donadio wrote&lt;/a&gt;&lt;/u&gt; that, on the whole, the meeting seemed largely to be a “consciousness-raising exercise,” out of step with the “zero tolerance” that many victims’ advocates in the United States have been demanding for priests who use their power to abuse. It seems the crisis will likely drag on as the Church’s highest authorities continue their slow-moving reckoning.&lt;/p&gt;&lt;p&gt;What is an institutional crisis for the Church is a personal crisis for the faithful. Lay Catholics are left to grapple with what this crisis means for them, their families, and their faith. Parents in particular often feel acutely conflicted. How can they not worry about sending their children to be altar servers after reading about priests taking advantage of altar servers in the past? At the same time, devout parents who deeply love the Church naturally want their children to receive its spiritual benefits. What are they to do?&lt;/p&gt;&lt;aside class="callout-placeholder" data-source="curated"&gt;&lt;/aside&gt;&lt;p&gt;Some decide that they simply can’t reconcile their faith with decades of abuse and the subsequent cover-ups, or that the best way to protect their kids is to leave the Church. Laura Donovan, 30, says the child-sexual-abuse crisis is the reason she’s parted ways with the Catholic Church. Donovan, a social-media manager based in Los Angeles, had drifted away somewhat from her Catholic upbringing by the time &lt;em&gt;The Boston Globe&lt;/em&gt; &lt;u&gt;&lt;a href="https://www.bostonglobe.com/news/special-reports/2002/01/06/church-allowed-abuse-priest-for-years/cSHfGkTIrAT25qKGvBuDNM/story.html"&gt;revealed&lt;/a&gt;&lt;/u&gt; &lt;u&gt;&lt;a href="https://www.bostonglobe.com/news/special-reports/2002/01/07/geoghan-preferred-preying-poorer-children/69DE1kOuETjphwmIBcgzCM/story.html"&gt;the&lt;/a&gt;&lt;/u&gt; &lt;u&gt;&lt;a href="https://www.bostonglobe.com/news/special-reports/2002/01/31/scores-priests-involved-sex-abuse-cases/kmRm7JtqBdEZ8UF0ucR16L/story.html"&gt;extent&lt;/a&gt;&lt;/u&gt; of the Catholic Church’s cover-up of Boston-area priests’ child abuse in 2002, but when she learned &lt;u&gt;&lt;a href="http://www.usccb.org/issues-and-action/child-and-youth-protection/upload/The-Nature-and-Scope-of-Sexual-Abuse-of-Minors-by-Catholic-Priests-and-Deacons-in-the-United-States-1950-2002.pdf"&gt;just how widespread&lt;/a&gt;&lt;/u&gt; &lt;u&gt;&lt;a href="https://www.nytimes.com/2018/07/31/world/americas/chile-pope-francis-catholic-church-sexual-abuse.html"&gt;the problem was&lt;/a&gt;&lt;/u&gt;, she says, “ultimately, that’s what made me think, &lt;em&gt;I don’t want to go back to a Catholic church again, and I certainly don’t want to raise my own children in a religion like that&lt;/em&gt;.”&lt;/p&gt;&lt;p&gt;The &lt;u&gt;&lt;a href="https://www.nytimes.com/2018/08/14/us/catholic-church-sex-abuse-pennsylvania.html"&gt;Pennsylvania grand-jury report&lt;/a&gt;&lt;/u&gt; that revealed 70 years of abuse by more than 300 priests came out in August of last year, around the time Donovan’s first child, a son, was born. After becoming a parent, Donovan felt called back to Christianity and wanted to raise her family in a Church, but she and her husband “made the call not to raise him Catholic.”&lt;/p&gt;&lt;p&gt;“I don’t necessarily think anything would happen to him,” she says. “I mean, it could. But I’m just thinking, &lt;em&gt;What would he think of us if we brought him to that church even after all of this had unfolded? &lt;/em&gt;… Let’s say he was raised Catholic, and then he learned about all of that—about the sex abuse worldwide that had been going on for decades and covered up—and then came to us and said, ‘How could you have raised me in that religion?’ I wouldn’t have an answer for him.”&lt;/p&gt;&lt;p&gt;Eventually, Donovan’s son was baptized in the Lutheran Church, and Donovan herself was confirmed as well. Her husband grew up attending a Lutheran church, and when Donovan first attended with him, “I felt really comfortable there,” she says. “It had a lot of elements of what I like about the Catholic Church—it’s old, it’s structured, but it doesn’t have that big scandal, obviously.” Still, she misses some of the Catholic traditions she grew up with: the songs, the rosary beads, the congregational sign of peace, “praying to saints and thinking about angels.” Today, when Donovan prays, she has a hard time not instinctively making the sign of the cross.&lt;/p&gt;&lt;p&gt;It’s difficult to know just how many people have left the Catholic Church as a direct result of the sexual-abuse crisis. But across the United States, the Catholic Church is &lt;u&gt;&lt;a href="http://www.pewforum.org/2015/05/12/chapter-2-religious-switching-and-intermarriage/#net-gains-and-losses-by-religious-tradition-unaffiliated-make-big-gains-catholics-suffer-major-losses"&gt;losing members at a faster rate than any other religion&lt;/a&gt;&lt;/u&gt;, with more than six former Catholics for every recent convert as of 2015, according to the Pew Research Center. (The second-fastest-declining religion in the United States was mainline Protestantism, with 1.7 former congregants for every new member.) From 2010 to 2016, the percentage of American adults who describe themselves as Catholic &lt;u&gt;&lt;a href="http://nineteensixty-four.blogspot.com/2018/03/a-dip-in-adult-catholic-population.html"&gt;dropped from 25.2 percent to 23.5 percent&lt;/a&gt;&lt;/u&gt;. While it's unclear whether the abuse crisis is the main reason Catholics are leaving the Church, a 2016 Public Religion Research Institute report found that people who were raised Catholic &lt;u&gt;&lt;a href="https://www.prri.org/wp-content/uploads/2016/09/PRRI-RNS-Unaffiliated-Report.pdf"&gt;were more likely&lt;/a&gt;&lt;/u&gt; than those raised in any other religious tradition to characterize their departure as a direct result of “negative religious treatment of gay and lesbian people” and/or “the clergy sexual-abuse scandal.”&lt;/p&gt;&lt;p&gt;Other Catholic parents, though distressed by the Pennsylvania revelations and earlier reports on the crisis, are committed to the Church.&lt;/p&gt;&lt;p&gt;“It’s not something that changed my day-to-day practice of the faith, and I couldn’t see how it possibly could,” says Kendra Tierney, a 42-year-old writer and stay-at-home mother of nine children, ages 1 to 16 years old. “If you believe that the Catholic Church is the one founded by Jesus Christ, there is nowhere else to go. Jesus asked Peter, ‘Are you going to leave me also?’ and Peter says, &lt;u&gt;&lt;a href="https://www.bible.com/bible/compare/JHN.6.68"&gt;‘To whom shall we go?’&lt;/a&gt;&lt;/u&gt; This is how I feel.”&lt;/p&gt;&lt;p&gt;Tierney was raised Catholic and says her faith deepened after she became a mother, when she started to shape her family’s home life around the liturgical year. That was the inspiration for her blog &lt;u&gt;&lt;a href="https://catholicallyear.com/"&gt;Catholic All Year&lt;/a&gt;&lt;/u&gt;&lt;em&gt;&lt;u&gt;&lt;a href="https://catholicallyear.com/"&gt;.&lt;/a&gt;&lt;/u&gt;&lt;/em&gt; She says she wasn’t paying much attention to the news when the 2002 &lt;em&gt;Boston Globe&lt;/em&gt; investigation came out, “so for me, the first big punch in the gut was late last summer, when the [Pennsylvania] report came out.”&lt;/p&gt;&lt;p&gt;She sees cases of abuse as “failings of personal holiness,” and rather than “sitting back and saying, ‘This is a terrible thing; this is a threat to my children and my faith,’” she wanted to do something in response to the news. Along with some others in the Catholic community online, &lt;u&gt;&lt;a href="https://catholicallyear.com/blog/sexual-abuse-sackcloth-and-ashes/"&gt;Tierney launched a campaign&lt;/a&gt;&lt;/u&gt; to promote a month-long period of prayer, fasting, and sacrifice, as an act of reparation to God for the sins of abusive priests and the bishops who covered up their actions.&lt;/p&gt;&lt;p&gt;“For the whole month of September, our family observed kind of a Lent,” she says. “We gave up all treats, desserts, and sodas, all TV and video games, and we added in a special prayer from a book called &lt;em&gt;In Sinu Jesu,&lt;/em&gt; a prayer of reparation for priests. We are all sinners, and if we can each improve as a member of the body of Christ, if I can raise holy sons and daughters, that’s going to help the Church.”&lt;/p&gt;&lt;p&gt;One Catholic father, a 35-year-old in New York City, seems to be feeling torn between raising a holy daughter and protecting her. (This man asked to remain anonymous, because he works for a Catholic organization and worried there could be consequences at his job if he spoke freely about the Church.) He grew up in a Hispanic Catholic family and went to Catholic school for middle and high school, and though he didn’t go to church much in college, he says he grew closer to the Church after he met his wife. “She was much more devout than me,” he says.&lt;/p&gt;&lt;p&gt;The man says he and his wife have not yet discussed how they feel about raising their daughter, now 2, in the Church, in light of the sexual-abuse crisis. “We’ve just been numb,” he says. Plus, with the stresses of parenting a 2-year-old, the family hasn’t had a ton of time to go to church lately anyway. “But I’m not going to deny that part of it is a real distaste for all this news that keeps coming out,” he says.&lt;/p&gt;&lt;p&gt;A couple of days after the Pennsylvania report was released, he &lt;u&gt;&lt;a href="https://www.reddit.com/r/Catholicism/comments/97v4vk/as_parishioners_is_it_now_okay_to_be_weary_of/"&gt;posted on a Catholicism subreddit&lt;/a&gt;&lt;/u&gt;, asking whether it was reasonable to be wary “of priests with very poor social skills or [who] appear awkward?” In the replies, some people chided him, saying that just because someone is awkward doesn’t mean he’s a predator, but the man still feels like he needs to trust his gut if someone seems off to him.&lt;/p&gt;&lt;p&gt;“I think it’s different for parents,” he says. “We have to protect our children. That’s our No. 1 calling in life, and that comes before everything. You’re not worried about the Church or school—you’re allowed to judge and be cautious and not feel guilty about that, because you’re a protector.”&lt;/p&gt;&lt;p&gt;Nonetheless, he still hopes to send his daughter to Catholic school when she’s older, and for the Church to be part of her life in some way, even if he’s still thinking through how exactly to handle it. “[Catholicism] is wrapped up in identity for a lot of Hispanics,” he says. “I want my daughter to find her own way, but there is a place in my heart that still hopes she ends up being part of the faith. There’s a lot of beauty in the Church. Even if you just want to look at Christ as a historical figure, that’s a great model for how people should treat other people.”&lt;/p&gt;&lt;p&gt;Among families who are still part of a Catholic church, some parents have begun to rethink the level of their children’s involvement in the church community. The Catholic dad in New York City, for example, said, “I probably would never feel comfortable with my daughter being alone at a church by herself without parents around.”&lt;/p&gt;&lt;p&gt;In 2018, after the Pennsylvania grand-jury report, Chris Damian, an author and attorney based in the Twin Cities in Minnesota, co-founded YArespond, a group that hosts events for young Catholic adults to get together and discuss the crisis in the Church. At a meeting in August, more than 100 attendees gathered in the basement of a Minneapolis church to express sentiments including worry, disillusionment, anger, and grief. &lt;u&gt;&lt;a href="https://universityideas.wordpress.com/2018/09/04/young-adults-on-the-crisis-despair-and-hope/"&gt;According to Damian’s blog&lt;/a&gt;&lt;/u&gt;, one attendee said, “There’s no way I would let my child be an altar server.”&lt;/p&gt;&lt;p&gt;It’s an understandable position to take, says Kirby Hoberg, 28, a &lt;u&gt;&lt;a href="https://underthyroof.blogspot.com/"&gt;blogger&lt;/a&gt;&lt;/u&gt;, actor, and mother of three who helps YArespond organize and host meetings—especially given that, historically, altar servers have spent more time alone with priests than have other children in a congregation. “I hear that a lot, and I see why people would do that,” Hoberg says.&lt;/p&gt;&lt;p&gt;A dose of caution is enough to make some Catholic parents comfortable with their kids being involved in church activities. Chris Mayerle’s 12-year-old son, for instance, not only is an altar server but knows how to serve Mass in Latin, which apparently makes him in quite high demand in their home state of Utah. The Mayerles—Chris, his wife, and their seven children (some of whom are adults)—have moved around a good amount, since Chris was in the Air Force for a time. In each place they’ve lived, they’ve vetted churches and priests—“parish shopping,” as he puts it—before settling down with a congregation.&lt;/p&gt;&lt;p&gt;“We became very, very selective about which priests we would be around, and which priests we would let our children be around,” Mayerle says. “Everywhere we’ve been, we’ve been close to our priests. We have them over for dinner. You can get a sense when things are not quite right with a priest. But we never put our kids in a situation where they’ve been alone with a priest or where they could be compromised.”&lt;/p&gt;&lt;p&gt;The way a priest says Mass, Mayerle believes, is one clue to his personality, and that plays a role in whether or not Mayerle will trust him. At the first church the family went to in Utah, “the priest just skipped over major parts of the Mass,” he says. “That was off-putting to us. One of the things we look for is when they do things the way they’re supposed to. In other words, they’re obedient—it means they’re probably obedient to their vows also. When they just start winging it, it means they view themselves as their own authority, which I don’t think is healthy.”&lt;/p&gt;&lt;p&gt;Of course, many Catholic parents, while dismayed by how the scandal reflects on the Church as an institution, still trust their own parishes and priests. They say their churches have routine audits, training for adult volunteers, and policies that prohibit priests from being alone with children. Some Catholic parents we spoke to mentioned that their priests openly discuss the issue and share in their grief, and that the leaders in their churches seem willing to engage with parishioners in discussions on how to make Catholic churches safer places. Others emphasize that they believe the vast majority of priests are morally sound leaders, and that only a small portion have been accused of inappropriate conduct.&lt;/p&gt;&lt;p&gt;But perhaps the biggest change from earlier eras, when some of the abuse described in the Boston and Pennsylvania reports occurred, is that for some of today’s Catholic families, priests are not put on a pedestal. Several parents we spoke to for this piece said there is less of a sense among Catholics today than in decades past that priests are infallible, or more incorruptible than the average person. And so they teach their kids to be wary of inappropriate behavior from all grown-ups—priests and other spiritual leaders included.&lt;/p&gt;&lt;p&gt;“You want your kids to have respect for people in positions of authority, but perhaps overemphasized respect for the clergy allowed this culture of abuse to last in the shadows as long as it did,” Tierney says. “They’re not superheroes; they are humans. We are all capable of sin, and that’s the conversation I’ve had with my kids. You trust your gut, and if something doesn’t feel right, it probably isn’t.”&lt;/p&gt;&lt;p&gt;“It’s not that I would treat my priest differently from the way I would another grown-up, but I am very, very cautious about leaving my children alone with anyone,” says Haley Stewart, the writer behind the Catholic blog &lt;u&gt;&lt;a href="https://www.carrotsformichaelmas.com/"&gt;Carrots for Michaelmas&lt;/a&gt;&lt;/u&gt; and a 33-year-old mother of four in Waco, Texas. Her children are seven months, 5, 7, and 10, and she says she has talked about bodily autonomy with them from a young age.&lt;/p&gt;&lt;p&gt;“We start really young by teaching our kids the anatomical names of their body parts, saying, ‘This part of your body is not for anyone else to touch,’” she says. “It doesn’t have to be a big scary conversation with a small child. Also impressing upon them that if someone ever does something to your body that you did not like, that is not your fault, and you need to tell Mom and Dad so we can make sure you are safe from that person.”&lt;/p&gt;&lt;p&gt;Kirby Hoberg has noticed that the younger Catholic parents she knows seem angrier about the recent wave of sexual-abuse revelations than do older parents she knows who were adults during the first phase of the crisis, in 2002. “I think I was turning 12 when the news started to break … We watched things like &lt;u&gt;&lt;a href="http://www.usccb.org/issues-and-action/child-and-youth-protection/upload/Charter-for-the-Protection-of-Children-and-Young-People-2018-final.pdf"&gt;the Dallas Charter&lt;/a&gt;&lt;/u&gt; [come into effect] and really believed that things were being taken care of,” she says. “I’m noticing a lot of people older than me [seem to feel] very helpless. Like, ‘We tried once, and now it’s gone.’”&lt;/p&gt;&lt;p&gt;Hoberg expects that Catholic parents of her generation will be reckoning with the aftereffects of the sexual-abuse crisis for years to come. “It’s going to be a long road,” she says. “The kids aren’t going away, and these questions are only going to get harder [as they get older].”&lt;/p&gt;&lt;p&gt;She’s uncertain, she adds, about how she might handle a future in which her son decides he wants to go to seminary—a sentiment that Chris Mayerle, the Utah dad whose son is an altar server, echoes. His son has expressed interest in becoming a priest, and if he were to follow through, Mayerle says, “we’d be excited, in all honesty. The Church is in great need of renewal, and it’s gotta start somewhere. But whatever seminary he wanted to go to, we would vet very closely.”&lt;/p&gt;</content>
    <author>
      <name>Julie Beck</name>
      <uri>http://local.theatlantic.com/author/julie-beck/?utm_source=msn</uri>
    </author>
    <author>
      <name>Ashley Fetters</name>
      <uri>http://local.theatlantic.com/author/ashley-fetters/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/GettyImages_143070459/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>(Monashee Frantz / Getty)</media:credit>
      <media:description>Pews and stained-glass windows in a church.</media:description>
    </media:content>
    <title type="html">Faced With an Ongoing Sexual-Abuse Crisis, What Are Catholic Parents to Do?</title>
    <link href="https://local.theatlantic.com/family/archive/2019/03/catholic-church-abuse-crisis-how-parents-are-grappling/584866/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T09:00:00-04:00</published>
    <updated>2019-03-17T12:17:53-04:00</updated>
    <summary type="html">“I think it’s different for parents. We have to protect our children. That’s our No. 1 calling in life, and that comes before everything.”​</summary>
    <id>tag:theatlantic.com,2019:50-584866</id>
  </entry>
  <entry>
    <content type="html">&lt;figure&gt;&lt;img alt="" height="547" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/DIS_Sketch_Kornhaber_Djawadi_original/595833ffa.jpg" width="672"&gt;&lt;figcaption class="credit"&gt;John Cuneo&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class="dropcap"&gt;&lt;span class="smallcaps"&gt;The arsenal of&lt;/span&gt; instruments Ramin Djawadi has used to score &lt;em&gt;Game of Thrones&lt;/em&gt; includes mournful strings, mighty horns, and the Armenian double-reed woodwind known as a duduk. During the series’ first five seasons, however, he left one common weapon untouched: the piano. Early on, the showrunners, David Benioff and D. B. Weiss, decided that the ivories were too delicate for the show’s brutal realms, where even weddings tend to involve some stabbing. They also banned the flute, for fear that &lt;em&gt;Thrones&lt;/em&gt; would sound like a Renaissance fair.&lt;/p&gt;&lt;p&gt;But when Djawadi sat down to soundtrack a pivotal sequence in Season 6—the slow reveal that the embattled royal mother, Cersei Lannister, was about to bomb her own kingdom’s cathedral, incinerating half a dozen regular characters in the process—none of the instruments he tried seemed right. “I played the whole scene with harp, and everyone was shaking heads,” he told me. “There’s a warmth to it that the colder piano doesn’t have.”&lt;/p&gt;&lt;p&gt;So Djawadi finally brought the piano to Westeros. As one of Cersei’s minions skulked through the sewers below the cathedral, lighting fuses, the score reverberated with haunting piano arpeggios. The heretofore unheard instrument suggested, however subtly, that one of the series’ signature plot twists was in the making. But the elegiac mood of the composition, called “Light of the Seven,” conveyed more: Cersei’s violent act wasn’t just a game-board-upending coup; it was a tragedy born of malice and desperation. “It doesn’t accompany the scene,” Benioff and Weiss told me via email. “It shapes the scene, as much if not more than any other creative element.”&lt;/p&gt;&lt;p&gt;When &lt;i&gt;Thrones&lt;/i&gt; leaves the air this year, its cultural legacy will include—and has been enabled by—Djawadi’s richly textured music. The 44-year-old German Iranian composer cemented the series’ iconic status back in 2011 with a theme song whose relentless thrum of strings catchily embodied the roiling intrigue to come. Since then, he’s created a sprawling sonic landscape befitting the show’s apocalyptic refrain: &lt;i&gt;Winter is coming&lt;/i&gt;. Even Djawadi’s most valiant melodies carry a whiff of the ominous.&lt;/p&gt;&lt;p&gt;I visited Djawadi in his Santa Monica studio recently, and he broke down for me how he’d written “Light of the Seven” to draw out the scene’s themes. He punctuated his piano chords with unsettling silence, employed a church organ to evoke Cersei’s torturous past with the religious cult she was attacking, and instructed two boys to sing together in such a way that they were “not out of tune, but you get that feeling of &lt;i&gt;Something’s wrong&lt;/i&gt;.”&lt;/p&gt;&lt;p&gt;&lt;i&gt;Thrones&lt;/i&gt; fans thrilled to the scene, and to its sound. Shortly after the episode aired, “Light of the Seven” landed at No. 1 on the Spotify Viral 50, displacing the soon-to-be-ubiquitous pop of Maggie Rogers’s “Alaska”—an impressive feat for a 10-minute instrumental, and evidence of one of the more surprising twists in the &lt;i&gt;Thrones&lt;/i&gt; saga to date: It’s made a rock star of its composer.&lt;/p&gt;&lt;p class="dropcap"&gt;O&lt;span class="smallcaps"&gt;rchestral composition &lt;/span&gt;has long competed with another of Djawadi’s musical obsessions. As a teenager in Duisburg, Germany, he headbanged at Anthrax concerts, shredded guitars in bands with names like Antagonist, and worshipped Steve Vai and Yngwie Malmsteen, two of the most fire-fingered technicians to ever wear leather pants. Walking through his studio, I admired the lutes and djembes on display, but Djawadi was most excited to show off a seven-string electric guitar from Vai’s early-1990s line of instruments, patterned with psychedelic flames. “Good memories,” he said, holding it in a mildly heroic pose.&lt;/p&gt;&lt;p&gt;Growing up in the Rhineland, however, classical music was unavoidable. “In kindergarten, they teach you about canons,” Djawadi told me. “They put a Mozart piece in front of you and explain how the counterpoint is working.”&lt;/p&gt;&lt;p&gt;Fluency in the work of both Eddie Van Halen and Ludwig van Beethoven helped Djawadi develop a sound that is at once complex and crowd-pleasing. That unlikely combination is especially evident in his compositions for HBO’s other sexy-gory fantasia, &lt;i&gt;Westworld&lt;/i&gt;, about &lt;a href="https://www.theatlantic.com/magazine/archive/2016/10/sympathy-for-the-robot/497531/?utm_source=msn"&gt;artificially intelligent theme-park cowboys gaining consciousness&lt;/a&gt;. For that series, he regularly arranges contemporary-pop classics into saloon player-piano ditties that feel native to the show’s world. For the series premiere, Djawadi remade the Rolling Stones’ “Paint It Black” to resemble Rossini’s “William Tell Overture.” The stylish action scene that resulted was very Djawadi: emotionally large and sneakily intricate.&lt;/p&gt;&lt;p&gt;Djawadi honed his sensibility at Hans Zimmer’s Remote Control Productions, where he still rents a studio today. Zimmer, of course, is the visionary German composer responsible for an outsize number of the past three decades’ trends in film music, with breakthroughs like the all-synth score for 1989’s &lt;i&gt;Driving Miss Daisy &lt;/i&gt;and the pulsating orchestration of Christopher Nolan’s 2000s oeuvre.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/entertainment/archive/2017/02/how-hans-zimmer-became-a-rockstar/516912/?utm_source=msn"&gt;Read: How Hans Zimmer became a rock star&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Back when Djawadi worked at the studio as an assistant, Zimmer and his team of composers were agonizing over 2003’s &lt;i&gt;Pirates of the Caribbean&lt;/i&gt;. Specifically, they were stumped by Johnny Depp and Orlando Bloom’s first duel, which was, for some reason, spectated by a donkey.&lt;/p&gt;&lt;p&gt;“If you don’t get the sword fight with the donkey right, you might as well bury the movie,” Zimmer told me recently. “Very quietly, the guy who was making the coffee, who I didn’t think played a musical instrument, said, ‘When you go home tonight, do you mind if I have a go at it?’ ”&lt;/p&gt;&lt;p&gt;The guy was Djawadi, and the treatment he came up with was “staggeringly brilliant,” Zimmer said. “He made it look as if it was a ballet. As if the music had been written &lt;i&gt;first&lt;/i&gt;. You could tell it wasn’t just a good musician at work, but a really good brain at work.”&lt;/p&gt;&lt;p&gt;Zimmer’s influence on his former protégé can be heard in the throb of the &lt;i&gt;Thrones&lt;/i&gt; theme song (shades of &lt;i&gt;Pirates&lt;/i&gt;) and the thunderous brass &lt;i&gt;brammm &lt;/i&gt;of its battle scenes (&lt;i&gt;Inception&lt;/i&gt;-esque). But Djawadi also cites his Iranian-born father as an inspiration, and suspects that the time signatures of the &lt;i&gt;Game of Thrones&lt;/i&gt; and &lt;i&gt;Westworld &lt;/i&gt;theme songs (6/8 and 12/8, respectively) were unconsciously derived from Middle Eastern music.&lt;/p&gt;&lt;p class="dropcap"&gt;C&lt;span class="smallcaps"&gt;ompared with the &lt;/span&gt;&lt;span class="smallcaps"&gt;work&lt;/span&gt; of scoring even a long feature film, serialized television demands massive volumes of composition. Consider: The eight &lt;i&gt;Star Wars &lt;/i&gt;films that John Williams has overseen total more than 18 hours in running time. That’s not even as long as two seasons of &lt;i&gt;Thrones&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;Djawadi’s first hit TV show, Fox’s 2005 thriller &lt;i&gt;Prison Break&lt;/i&gt;, ran up to 24 episodes a season. “I had to write 40 minutes in one week, which was insane,” he told me. “I learned how to write fast.” For &lt;i&gt;Thrones&lt;/i&gt;, the seasons are shorter and the turnaround time cushier, ranging from weeks to months per episode. But the production process is far more elaborate. His &lt;i&gt;Prison Break&lt;/i&gt; scores were made entirely on studio computers; for &lt;i&gt;Thrones&lt;/i&gt;, with its cinematic ambitions, Djawadi writes the songs and then sends the notations to an orchestra in Prague.&lt;/p&gt;&lt;p&gt;It’s not just the quantity of the writing that makes TV a distinct challenge. Whereas a film has a clear beginning, middle, and end, a series unfolds over seasons and years, its direction not always clear even to its creators. On &lt;i&gt;Thrones&lt;/i&gt;, George R. R. Martin’s unfinished book series provided a road map for the rambling story, but the showrunners had to invent new plot turns &lt;a href="https://www.theatlantic.com/entertainment/archive/2016/01/george-r-r-martin-game-of-thrones/422502/?utm_source=msn"&gt;as the series began to outpace Martin’s writing&lt;/a&gt;. Djawadi needed to write a score capacious enough to evolve over seven seasons, pushing the conceit of “variations on a theme” to the limit. “He can think in large concepts and long arcs, which is really valuable,” Zimmer told me. “He’s thinking nine hours ahead about what is going to happen.”&lt;/p&gt;&lt;p&gt;Take the show’s iconic dragons. A high, whistled melody—like something out of &lt;i&gt;Close Encounters of the Third Kind&lt;/i&gt;—played when Daenerys Targaryen’s baby beasts first showed up in Season 1. “I had to make sure the music can do &lt;i&gt;that &lt;/i&gt;tiny little thing,” Djawadi said, playing an eerie jingle on his keyboard, “but also build to &lt;i&gt;that&lt;/i&gt;”—a stentorian French-horn version that was heard during a recent battle involving the fire-breathers, who by Season 7 had grown as big as airliners.&lt;/p&gt;&lt;p&gt;As the show hurtles viewers from one intricate story line to another, Djawadi’s musical motifs also illuminate deeper transformations. In the most recent season, the lonely string line that accompanied scenes shared by wary allies Daenerys and Jon Snow got lovey-dovier with each passing week, foreshadowing—and helping to establish—a romance that didn’t blossom until the finale, in a candlelit liaison between the khaleesi and the king in the North.&lt;/p&gt;&lt;p class="dropcap"&gt;T&lt;span class="smallcaps"&gt;oday, Djawadi is &lt;/span&gt;a jeans-and-T‑shirt-wearing father of 5-year-old twins. But his teen dreams of stage glory never quite went away—and now they’re coming true, if in a fashion the lead guitarist of Antagonist could never have envisioned. For the past three years, fans have flocked to see him in the touring &lt;i&gt;Game of Thrones&lt;/i&gt; Live Concert Experience, an arena-scale pageant of fake snowfall, musicians in tunics, and the Iron Throne rotating onstage as if it were a potato in a microwave. Djawadi conducts, plays instruments, and emcees at the extravaganzas. “It’s completely different from recording in a studio,” he said. “I missed having that feeling in your stomach: &lt;i&gt;What’s going to happen tonight?&lt;/i&gt;”&lt;/p&gt;&lt;aside class="callout-placeholder" data-source="curated"&gt;&lt;/aside&gt;&lt;p&gt;I caught the show at the Boston Garden and found it to be a staggering testament to &lt;i&gt;Thrones&lt;/i&gt;’s popularity and music’s role in it. An arena where people more frequently cheer for the Ariana Grandes of the world was instead packed with fans in various states of cosplay, rowdily participating in an instrumental-music concert. When huge screens broadcast Cersei Lannister’s walk of penance from Season 5, the crowd imagined they were her bitter subjects, shouting “Shame!” and “Whore!” Later, they hooted as &lt;a href="https://www.youtube.com/watch?v=GItsT2Qp6H8"&gt;Djawadi performed “Light of the Seven” on the piano and organ&lt;/a&gt; amid licks of green flames. (With his gleaming smile and dark curls, Djawadi has become something of a heartthrob—“The Hottest Person in &lt;i&gt;Game of Thrones&lt;/i&gt; Is Not Jon Snow,” Refinery29 reported.) For an encore, Djawadi strapped on a guitar and grinningly jammed with other musicians in a rendition of a Westeros drinking song as screens overhead displayed the faces of all the characters who’d died in the series thus far.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/entertainment/archive/2017/03/the-game-of-thrones-live-experience-concert-review/518826/?utm_source=msn"&gt;Read: The ‘Game of Thrones’ Live Experience lets fans bask in the highlights&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Djawadi is an attentive front man, taking note of what the audience responds to each night and altering the spectacle to dazzle fans further. In general, he’s found, the crowd loves special effects. On the latest run of the tour, for example, a violinist gets hoisted 30 feet in the air and her draping dress becomes the trunk of a mystical Weirwood tree. Matter-of-factly, Djawadi mentioned another change he’d been working on: “We’ve gotta add more pyro.”&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;&lt;i&gt;This article appears in the April 2019 print edition with the headline “Songs of Ice and Fire.”&lt;/i&gt;&lt;/small&gt;&lt;/p&gt;</content>
    <author>
      <name>Spencer Kornhaber</name>
      <uri>http://local.theatlantic.com/author/spencer-kornhaber/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/2019/03/DIS_Sketch_Kornhaber_Djawadi_crops/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>John Cuneo</media:credit>
    </media:content>
    <title type="html">LATESET</title>
    <link href="https://local.theatlantic.com/magazine/archive/2019/04/game-of-thrones-music-ramin-djawadi/583213/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T09:00:00-04:00</published>
    <updated>2019-03-25T12:26:50-04:00</updated>
    <summary type="html">Ramin Djawadi’s score helped make the show a hit—and brought unlikely fame to the composer.</summary>
    <id>tag:theatlantic.com,2019:39-583213</id>
  </entry>
  <entry>
    <content type="html">&lt;p dir="ltr"&gt;The Trump administration has made a priority of punishing and pressuring Iran. But the same administration that withdrew from the nuclear deal that President Donald Trump dubbed “a great embarrassment” may actually end up preserving it.&lt;/p&gt;&lt;p&gt;Iran and all the other signatories are still observing the deal’s terms for now. The U.S. reimposed sanctions on the Islamic Republic last fall, driving down its oil exports and further stressing its weak economy. But even as the administration pursues what it calls a “maximum pressure” campaign against the country, it has also made exceptions through sanctions waivers that have helped keep Iranian &lt;a href="https://af.reuters.com/article/worldNews/idAFKCN1QU35R"&gt;oil flowing&lt;/a&gt; and even preserved some &lt;a href="https://www.washingtonexaminer.com/policy/defense-national-security/state-department-confirms-waivers-for-work-on-iranian-nuclear-sites"&gt;international nuclear cooperation&lt;/a&gt; with the country.&lt;/p&gt;&lt;p&gt;Now, ahead of a key deadline in May, the administration is sending conflicting signals about just how far it plans to go to confront the regime. At issue, in part, is the stated intent to choke off Iran’s oil exports entirely and throttle its oil-dependent economy. Following through could mean fights with allies that import Iranian oil, or even a higher risk that Iran ditches the deal altogether and starts racing to a nuclear weapon. Backing off the promise could leave the deal limping along for a potential new president to reenter it, as the Democratic Party &lt;a href="https://www.timesofisrael.com/democratic-party-passes-resolution-calling-for-us-to-re-enter-iran-nuke-deal/"&gt;has called for&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;While Trump-administration officials are all singing from the same hawkish hymnal about the march to zero exports, cracks are beginning to show. State Department officials say they are not “looking to grant” new waivers when the current round expires around May 4, but won’t comment on renewing existing ones; they hedge about getting to zero “as soon as possible” and the need to avoid disrupting oil markets. Representatives from the Department of Energy and the National Security Council (NSC) have meanwhile pointed to data showing that oil markets are well supplied enough to keep prices stable, even with the loss of Iranian crude. “We’re not very worried about it,” a Department of Energy spokesperson told me. “We think the market will balance itself out.”&lt;/p&gt;&lt;p&gt;Hawks in Congress seem to agree. “If our policy objective is zero, our policy should be doing its damnedest to get to zero,” one Republican congressional staffer familiar with the interagency discussions told me. “My sense is we’re not. There is hedging.” This person and another source familiar with the discussions said the disconnect is fueling an interagency argument between members of the State Department and the NSC as the deadline approaches. Asked for comment on the purported disagreement, a spokesperson for the NSC said, “The National Security Council coordinates closely across the interagency to apply maximum economic pressure against Iran.” A State Department spokesman also did not comment directly on the interagency disconnect, but offered a statement from Brian Hook, the U.S. special envoy for Iran, reiterating the policy to get to zero and noting that “we have already achieved significant reductions in Iran’s exports.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/international/archive/2018/06/iran-sanctions-nuclear/562043/?utm_source=msn"&gt;Peter Beinart: How sanctions feed authoritarianism&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;There’s public unity, at any rate, about forcing change in Iran. Trump has &lt;a href="https://www.washingtonpost.com/outlook/2019/02/07/trump-is-moving-us-closer-war-with-iran/?utm_term=.337cddbd843b"&gt;directly threatened&lt;/a&gt; Iranian President Hassan Rouhani via tweet, vowing “CONSEQUENCES THE LIKES OF WHICH FEW THROUGHOUT HISTORY HAVE EVER SUFFERED BEFORE” should Rouhani threaten the United States. Secretary of State Mike Pompeo &lt;a href="https://www.state.gov/secretary/remarks/2018/05/282301.htm"&gt;has vowed&lt;/a&gt; “unprecedented financial pressure on the Iranian regime.” National Security Adviser John Bolton &lt;a href="https://www.realclearpolitics.com/video/2018/08/07/john_bolton_neither_iran_or_north_korea_have_taken_effective_steps_to_denuclearize.html"&gt;has dubbed&lt;/a&gt; Iran the “central banker of terrorism” and noted, “That’s not behavior we should tolerate.” Hook said in his statement to &lt;em&gt;The Atlantic&lt;/em&gt; that sanctions on Iran are “draining their resources to fund terrorism.”&lt;/p&gt;&lt;p&gt;Yet there’s also discord beneath the surface. Hook spent months negotiating with the Europeans to preserve a version of a deal that Trump would accept, only to have the president announce his withdrawal last May. At a recent conference in Warsaw, Vice President Mike Pence publicly demanded that the Europeans leave the deal, &lt;a href="https://www.nytimes.com/2019/02/24/us/politics/secretary-of-state-mike-pompeo.html#click=https://t.co/Z7VnWIkSsc"&gt;reportedly infuriating&lt;/a&gt; Pompeo, who has made no such demands.&lt;/p&gt;&lt;p dir="ltr"&gt;Hook has consistently reiterated the zero-exports goal, but he also &lt;a href="https://www.spglobal.com/platts/en/market-insights/latest-news/oil/031319-ceraweek-us-waivers-for-iran-oil-imports-may-hinge-on-venezuela-sanctions-impact-state-official"&gt;told a conference&lt;/a&gt; this week that Trump “doesn’t want to shock oil markets,” even as he acknowledged market surpluses. In a sign of the interagency disconnect, Richard Goldberg, director for countering Iranian weapons of mass destruction at the NSC, said, “The oil market is well supplied and can absorb the loss of Iranian crude,” speaking at the Foundation for Defense of Democracies last month. Projections from the Energy Information Administration released this week &lt;a href="https://www.eia.gov/outlooks/steo/"&gt;show the same thing&lt;/a&gt;, even accounting for losses of Venezuelan oil exports due to additional U.S. sanctions.&lt;/p&gt;&lt;p&gt;Trump’s exit from the Iran deal last year came with some caveats. The basic framework of the Joint Comprehensive Plan of Action (JCPOA), as the pact is formally known, was an exchange of economic incentives, including a suspension of past sanctions, for Iranian nuclear restraint. Ahead of reimposing sanctions on Iranian oil exports, though, Trump gave Iran’s trading partners about six months to make other arrangements, and bargained with Saudi Arabia to increase oil production to keep prices stable. But the idea was that any country still importing Iranian oil by that November would be sanctioned.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/international/archive/2018/11/new-trump-imposed-sanctions-iran-monday/574630/?utm_source=msn"&gt;Read: Iran will continue to try to evade U.S. sanctions&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Iran’s exports began declining even before then, as countries fled the possibility of financial punishment. And even as Trump &lt;a href="https://www.reuters.com/article/us-usa-iran-sanctions-oil/u-s-renews-iran-sanctions-grants-oil-waivers-to-china-seven-others-idUSKCN1NA0O8"&gt;worried about&lt;/a&gt; prices, Energy Secretary Rick Perry &lt;a href="https://www.wsj.com/articles/the-world-can-live-without-iranian-oil-1541361933"&gt;was sanguine&lt;/a&gt; about the issue on the op-ed page of &lt;em&gt;The Wall Street Journal&lt;/em&gt;: “The U.S. Energy Information Administration expects global oil supply to meet demand in 2019 even without Iranian oil.” So it was a surprise that the deadline came and Trump &lt;a href="https://www.reuters.com/article/us-usa-iran-sanctions-waivers/us-grants-temporary-iran-oil-waivers-to-eight-countries-including-china-pompeo-idUSKCN1NA1OS"&gt;handed out&lt;/a&gt; some sanctions exceptions, including to China, Taiwan, India, and South Korea, granting them access to Iranian oil for another six months without penalty. The markets didn’t see it coming; oversupply resulted; prices &lt;a href="https://finance.yahoo.com/news/u-oil-waivers-rocked-market-015249927.html"&gt;dropped&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Over the period since Trump announced he was leaving the Iran deal, though, Iran’s oil exports &lt;a href="https://www.reuters.com/article/us-iran-oil-exports/despite-sanctions-irans-oil-exports-rise-in-early-2019-sources-idUSKCN1Q818X"&gt;have fallen&lt;/a&gt; by more than half, from more than 2.5 million barrels per day to about a million barrels per day. But neither Hook nor Pompeo will specify over what time period they hope to get to zero. Asked at an energy conference this week whether it was even possible to get there, Pompeo would only say, “I’m not going to get ahead of myself or ahead of the president, but make no mistake about it, that’s the direction of travel.”&lt;/p&gt;&lt;p&gt;Meanwhile, Reuters&lt;em&gt; &lt;/em&gt;&lt;a href="https://af.reuters.com/article/worldNews/idAFKCN1QU35R"&gt;has reported&lt;/a&gt; that the United States is leaving the door open for waivers, even if at a reduced number. Japanese and South Korean officials have &lt;a href="https://www.spglobal.com/platts/en/market-insights/latest-news/oil/022519-us-will-stick-to-its-zero-tolerance-policy-on-iranian-oil-us-fannon"&gt;stated publicly&lt;/a&gt; that they’re seeking them; outside analysts &lt;a href="https://www.reuters.com/article/us-iran-us-oil/u-s-likely-to-cut-number-of-iran-oil-sanctions-waivers-in-may-analysts-idUSKCN1PC090"&gt;have also suggested&lt;/a&gt; that China is a likely candidate, given how much Iranian oil it currently imports and its ongoing trade negotiations with the United States. Sources in India &lt;a href="https://www.reuters.com/article/us-usa-iran-sanctions-india-exclusive/exclusive-amid-rising-trade-tensions-with-us-india-wants-to-extend-iran-oil-sanctions-waiver-sources-idUSKCN1QO0TA"&gt;have told&lt;/a&gt; reporters that that country, too, is engaged in waiver negotiations with the U.S.&lt;/p&gt;&lt;p&gt;Hook is adamant that “maximum pressure” means just that. “The United States is not looking to grant any exceptions or waivers to our campaign of maximum economic pressure on the Iranian regime,” his statement said. “Our policy is to get to zero imports of Iranian crude as quickly as possible.”&lt;/p&gt;&lt;p&gt;But Hook’s comments about oil markets leave room for maneuver, and they echo concerns that Trump raised before granting oil-sanctions waivers last time. Leaving aside possible geopolitical or diplomatic reasons to grant waivers—say, to avoid having to sanction an ally such as South Korea, or to sweeten trade negotiations with China—the oil-prices rationale conflicts with the analyses of other agencies. Energy Department projections say the market has 2 million barrels per day of spare production capacity—more than enough to replace a million lost barrels of Iranian oil per day if needed. The price spike feared last fall has not come to pass. When the Energy Information Administration published its latest projections this past week, the price of oil was $64 a barrel—right about &lt;a href="https://www.eia.gov/outlooks/steo/"&gt;where it was&lt;/a&gt; this time last year, though oil prices fluctuate.  &lt;/p&gt;&lt;p&gt;“If you know the oil markets right now, you know that price is not a factor,” said Amos Hochstein, President Barack Obama’s international-energy special envoy, who managed Iran sanctions. By contrast, in the first two years of Iranian oil sanctions under Obama, he said oil prices were more than $100 a barrel.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/international/archive/2018/03/mike-pompeo-foreign-policy/555593/?utm_source=msn"&gt;Read: How Mike Pompeo sees the world&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Still, technical problems will complicate the push to zero Iranian exports. China, for example, is still importing roughly &lt;a href="https://www.reuters.com/article/us-iran-asia-oil/hit-by-sanctions-asias-iran-crude-oil-imports-drop-to-three-year-low-in-2018-idUSKCN1PP0DX"&gt;half a million&lt;/a&gt; barrels of Iranian oil per day. “It is difficult to sanction China on this issue,” Hochstein said. “They have financial institutions that can facilitate the oil trade that are not engaged in the U.S. financial market, and therefore [are] immune to sanctions.”&lt;/p&gt;&lt;p&gt;Separately, however, the administration has used sanctions waivers in other ways. At a conference in December, Christopher Ford, the assistant secretary of state for international security and nonproliferation, &lt;a href="https://www.state.gov/t/isn/rls/rm/2018/288017.htm"&gt;noted&lt;/a&gt; that even as the administration sought to sanction Iran to drive it to negotiate a better deal, they were seeking to preserve some international cooperation with Iran on things such as civil nuclear research and energy projects. The waivers basically prevent the Europeans from facing sanctions for participating in projects allowed under the deal. There, too, the effect, if not the intent, of the waivers could be to keep in place parts of the basic framework of the deal Trump vowed to eliminate.&lt;/p&gt;&lt;p dir="ltr"&gt;“We don’t agree that we should have maximum pressure right now, considering that we want the Iranians to stay in the nuclear deal,” said a Democratic congressional aide. “But if you’re going to have maximum pressure, then waivers don’t work.”&lt;/p&gt;&lt;p&gt;Even if a Democrat won the White House in 2020, though, he or she might not think it wise to reenter the JCPOA as it currently stands. Robert Einhorn, who helped negotiate the nuclear deal in the Obama administration, noted that some key provisions would expire not long after a hypothetical Democrat took office in 2021. Besides, Iran is, according to the public assessment of the U.S. intelligence community, still abiding by the terms of the deal under current U.S. sanctions—what’s the political benefit of giving up sanctions leverage right off the bat?&lt;/p&gt;&lt;p&gt;Richard Nephew, who was the sanctions expert for Obama’s negotiating team with Iran, told me that even if a Democrat made a tactical decision to reenter the deal, “we’ve got to figure out a way to deal with the lost time.” The current terms of the JCPOA, he said, are “rapidly becoming not worth it.”&lt;/p&gt;&lt;p&gt;Administration officials have repeatedly said that they seek not regime change but behavior change, and that their goal is to drive the Iranians to the table to strike a better deal. But critics of the “maximum pressure” policy I spoke to, whether or not they supported the Iran deal initially, all agree on one thing: Iran is prepared to wait out the next two years of the Trump administration. “Absent an unforeseen U.S. sweetener, I believe Iran is willing to wait,” Hochstein said. “They’re willing to take the pain. They’ve demonstrated that. They’ve had bad times before.”&lt;/p&gt;</content>
    <author>
      <name>Kathy Gilsinan</name>
      <uri>http://local.theatlantic.com/author/kathy-gilsinan/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_18228706573548/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Cliff Owen / AP</media:credit>
      <media:description>Secretary of State Mike Pompeo, left, leaves the stage as Brian Hook, special representative for Iran, walks to the podium to speak about the creation of the Iran Action Group at the State Department.</media:description>
    </media:content>
    <title type="html">Trying to Kill the Iran Deal Could End Up Saving It</title>
    <link href="https://local.theatlantic.com/politics/archive/2019/03/us-attempts-kill-iran-nuclear-deal-could-save-it/585109/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T07:00:00-04:00</published>
    <updated>2019-03-17T12:40:12-04:00</updated>
    <summary type="html">Trump administration officials are publicly united on their policy of punishing the Islamic Republic. But cracks are showing over just how far to go.</summary>
    <id>tag:theatlantic.com,2019:50-585109</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;For the second time in just a few months, admissions at America’s elite colleges are under a microscope. In late 2018, the scrutiny was on T. M. Landry, a predominantly black private school in Louisiana that had garnered a national reputation for sending dozens of graduates to the Ivy League and other prestigious institutions. A &lt;em&gt;New York Times&lt;/em&gt; report &lt;a href="https://www.nytimes.com/2018/11/30/us/tm-landry-college-prep-black-students.html"&gt;revealed the school&lt;/a&gt; as a fraud, faking transcripts and hiding allegations of abuse. The Landry scandal caused tremors in higher education, but damage was limited by the fact that colleges could plausibly claim victimhood—although, I &lt;a href="https://www.theatlantic.com/education/archive/2018/12/tm-landry-and-myth-meritocracy-education/578149/?utm_source=msn"&gt;argued at the time&lt;/a&gt;, it was difficult not to come away from the debacle with a sense that it called into question core tenets of the American educational meritocracy.&lt;/p&gt;&lt;p&gt;As explosive as the Landry affair was, it is now dwarfed by the bombshell dropped by the Justice Department on Tuesday, when federal lawyers &lt;a href="https://www.theatlantic.com/education/archive/2019/03/college-admissions-scandal-9-revealing-moments/584803/?utm_source=msn"&gt;indicted 50 people on racketeering charges&lt;/a&gt; for allegedly facilitating or taking part in a nationwide fraud to game admissions at top colleges. The accused include CEOs, wealthy investors, and at least two celebrities. According to the indictment, the conspiracy had been refined over many iterations, and was marketed as a service to the ultra-wealthy. Its creator described it as an innovation, a cost-effective “side door” into top colleges. In practice, it was a system of bribes to accomplices such as testing-center officials, who could help alter SAT and ACT scores, and college coaches in second-tier sports, who could help admit applicants who pretended to be athletes.&lt;/p&gt;&lt;p&gt;The story immediately went into the stratosphere. No one could resist the specter of the rich and famous engaging in lurid criminality to give their kids even more of an advantage. All the major news outlets led with the scandal. Twitter, the hub of the media elite, had a ball, alternating between mockery and fury. A tidal wave of scorn washed over the whole of American discourse. Ask Tom Brady, Lance Armstrong, or Goldman Sachs: The only thing people dislike more than cheaters winning is winners cheating.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/education/archive/2019/03/college-admissions-scandal-9-revealing-moments/584803/?utm_source=msn"&gt;Read: 9 Revealing Moments From the College-Admissions Indictment&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Resenting the dynastically wealthy is practically a national sport, and for the most part, that’s what the admissions scandal has been understood to be about: the perfidy of the 1 percent. Many drew parallels to entirely legal ways &lt;a href="https://www.usatoday.com/story/news/2019/03/13/affirmative-action-rich-how-elites-legally-game-system/3148618002/"&gt;the rich can rig college admissions&lt;/a&gt;, like pledging donations or enrolling in private prep schools. Implicit in the public contempt is the belief that none of this has anything to do with regular middle-class folk. In fact, some of the angriest responses came from people who attended the very colleges that had been part of the scam. For many, the scandal felt like a sign of the times, showing the divide between the rich, cheating their way to the top, and everyone else, who had climbed up the hard way.&lt;/p&gt;&lt;p&gt;Maybe that’s why an odd twist in Tuesday’s scandal stood out: Many of the students who benefited did not know about the fraud being committed for them. In several instances, their parents endeavored to keep the payoffs and cheating secret, arranging false tests so the children would never know that their scores had been deceitfully obtained. The kids were fakes, and ignorant of that fact.&lt;/p&gt;&lt;p&gt;It’s hard to blame people for mocking these oblivious teenagers, who thought they were walking on their own, but were in fact being carried. But it’s also worth considering how events would have appeared from their perspective. A high ACT score would have seemed like just another stroke of good fortune in a life full of it. The same goes for their acceptance into a selective college. In one tragicomic passage in the indictment, the scheme’s orchestrator describes how his student “clients” would sometimes come to him, surprised by their own high test scores, and suggest that maybe they’d do even better if they took the test again. They mistook the secret forces working on their behalf for their own natural talent. If you can’t see the hidden hand behind your success, what other explanations are there besides luck and ability?&lt;/p&gt;&lt;p&gt;In other words, from the students’ viewpoint, this is about as archetypal an instance of privilege as could be imagined. Advantage, after all, is rarely noticed by the advantaged. People don’t have an easy way to compare their lives with those of others, to see how the same situations might turn out differently if they themselves came from a different background. The first instinct is often to attribute disproportionate success to above-average aptitude, but most successful people know aptitude can’t explain everything that’s gone their way. That’s why, in many cases, privilege looks and feels like an accumulation of good luck, a series of little victories that make everything work okay in the end. In reality, luck and aptitude don’t tell the full story. Instead, wealth or caste or social standing work to load the dice in favor of the fortunate.&lt;/p&gt;&lt;p&gt;Now a confession: I too attended one of the colleges named in Tuesday's indictment. The news set me to wondering, &lt;em&gt;Did I know someone who had bought his or her way into college? How could I tell? For that matter, how would I have known if secret forces had worked on &lt;/em&gt;my&lt;em&gt; behalf?&lt;/em&gt;&lt;/p&gt;&lt;p&gt;At first, the question seemed ridiculous. I did not grow up fabulously wealthy, and I’m reasonably certain that my parents paid no bribes for me. I can say with total confidence that no one was seeking my athletic prowess, real or imagined.&lt;/p&gt;&lt;p&gt;Then I remembered that my father had also attended my alma mater. I hadn’t thought about that too much when I’d applied, believing that my grades spoke for themselves. No one ever brought it up to me, and I hadn’t really dwelled on it since. It was definitely not a fact that I had ever used to discount my own academic achievements.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/education/archive/2019/03/stop-college-admission-cheating-admit-more-students/584749/?utm_source=msn"&gt;Read: One Way to Stop College-Admissions Insanity: Admit More Students&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;But I’m nearly certain that somewhere in the application process, some admissions official, whose face I’d never see, took note that I was a legacy applicant, and moved me up a few spots on the list. Here was something I’d overlooked, a hidden hand behind my own good fortune, silently working to transmit my parents’ economic and social station downward to me. Perhaps less was separating me from the admissions-scandal students than I’d thought.&lt;/p&gt;&lt;p&gt;In this, I’m not alone. How many people who attended a good college, or secured a prestigious job, or otherwise climb one rung after another up the ladder of social and professional standing, can look back and see nothing similar?&lt;/p&gt;&lt;p&gt;While some people do start in remarkably disadvantaged places and rise through society, &lt;a href="https://www.theatlantic.com/magazine/archive/2018/06/the-birth-of-a-new-american-aristocracy/559130/?utm_source=msn"&gt;social mobility is the exception, not the rule&lt;/a&gt;. It’s true that most successful peoples’ parents have never paid an illegal fixer to secure them a college seat. But consider: If you attended a high-performing public high school, your parents probably &lt;em&gt;did &lt;/em&gt;&lt;a href="https://www.washingtonpost.com/realestate/school-quality-has-a-mighty-influence-on-neighborhood-choice-home-values/2015/09/03/826c289a-46ad-11e5-8ab4-c73967a143d3_story.html?noredirect=on&amp;amp;utm_term=.f99b143290a2"&gt;pay a premium&lt;/a&gt; on their house to live in the attendance zone. And what about the countless other, smaller outlays parents can make to help propel their children upward, things like test prep, sports equipment, after-school activities, travel? Even basic necessities like healthy food, medical care, or personal safety come at a financial cost. None of these expenditures are solely the province of the very wealthy, but nor are they guaranteed, and each serves as a little investment in the future, giving children a small leg up on peers who do not receive the same.&lt;/p&gt;&lt;p&gt;Parental wealth is hardly the only form of unearned advantage. Other privileges are even more deeply embedded, transmitted almost as birthright. In America, whiteness ranks highest among these. In education, in the workplace, in the criminal-justice system, white children and teenagers consistently receive hidden benefits that their nonwhite peers do not. How many white teenagers have gotten caught smoking weed or drinking, and were let off with a laugh and a warning? For a child of color—&lt;a href="https://www.vox.com/policy-and-politics/2018/1/29/16936908/marijuana-legalization-racial-disparities-arrests"&gt;particularly a black child&lt;/a&gt;—the exact same episode is more likely to end with an arrest, and a ruined future. Where one person has a good chance of going home feeling lucky, another might leave in a squad car. How many white kids found it easy to get a summer job, while black children &lt;a href="https://hbswk.hbs.edu/item/minorities-who-whiten-job-resumes-get-more-interviews"&gt;with the same applications&lt;/a&gt; were turned away? How many white students have been &lt;a href="https://www.theatlantic.com/education/archive/2014/11/modern-day-segregation-in-public-schools/382846/?utm_source=msn"&gt;steered toward advanced-level courses&lt;/a&gt;, while their black peers were not? These advantages often persist across the income spectrum. For example, even after controlling for socioeconomic status, white students are &lt;a data-saferedirecturl="https://www.google.com/url?q=http://www.aera.net/Newsroom/News-Releases-and-Statements/Does-Student-Race-Affect-Gifted-Assignment/Discretion-and-Disproportionality-Explaining-the-Underrepresentation-of-High-Achieving-Students-of-Color-in-Gifted-Programs&amp;amp;source=gmail&amp;amp;ust=1552867908837000&amp;amp;usg=AFQjCNEsAyhEQf0gOSLACBhoukndrkDeww" href="http://www.aera.net/Newsroom/News-Releases-and-Statements/Does-Student-Race-Affect-Gifted-Assignment/Discretion-and-Disproportionality-Explaining-the-Underrepresentation-of-High-Achieving-Students-of-Color-in-Gifted-Programs" target="_blank"&gt;significantly more likely&lt;/a&gt; to be assigned to a gifted-and-talented program than black students.&lt;/p&gt;&lt;p&gt;Legally speaking, none of these things remotely resemble paying off a test administrator. Pragmatically speaking, and from the perspective of the person who benefits? There is a certain symmetry. You have parents spending money to put their children in the place that best guarantees their success. You have many of those children growing up at least partially ignorant of the efforts expended to help them, and the forces working to protect them. Certainly, in both cases, the people who benefit are likely to end up thinking they’ve mostly earned what they’ve received, as a reward for hard work and natural aptitude. And if they got a lucky break or two along the way, well, that’s just life.&lt;/p&gt;&lt;p&gt;The lesson here isn’t to forgive the alleged fraudsters. Rather, it is that in a society stratified from top to bottom by race and wealth, privilege can’t be understood as something held exclusively by the richest 1 percent, or even the richest 10 percent, to the detriment of all others. If they’re propelled to their station by forces out of their sight and beyond their control, so too is everyone else lifted or confined by those same forces. Because of that, there is often no indicting the meritocracy without indicting oneself. One might even begin to wonder whether the real fraud is the idea of merit in the first place—that maybe “deservingness” is a shoddy basis for organizing a society altogether.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content>
    <author>
      <name>Will Stancil</name>
      <uri>http://local.theatlantic.com/author/will-stancil/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTR2FMZ6/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Luke MacGregor / Reuters</media:credit>
    </media:content>
    <title type="html">Ignorance Was Bliss for the Children of the College-Admissions Scandal</title>
    <link href="https://local.theatlantic.com/education/archive/2019/03/college-admissions-scandal-kids-didnt-need-know/585055/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T07:00:00-04:00</published>
    <updated>2019-03-17T19:17:37-04:00</updated>
    <summary type="html">And in that, they’re no different from anyone else who can’t see the hidden forces working in their favor.</summary>
    <id>tag:theatlantic.com,2019:50-585055</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;Nature is “red in tooth and claw,” as Alfred, Lord Tennyson wrote in the poem “In Memoriam A.H.H.” In that now-famous line, Ten­nyson was considering, pre-Darwin, the apparent callousness of nature. Nature is not cruel; it is simply indifferent, and these behaviors show a disregard for other living things, rather than malice.&lt;/p&gt;&lt;p&gt;Humans alone are capable of cruelty, and sexual coercion and rape are immoral and criminal acts. Describing nonhuman behavior in these terms trivializes rape.&lt;/p&gt;&lt;p&gt;We do need to talk about dolphins, though, as their sexual behav­ior is concerning and much discussed. We humans have a strange relation­ship with dolphins. We are often in awe at their intelligence and grace, and the tricks they do for us in captivity and in the wild. And they have nice smiley faces.&lt;/p&gt;&lt;figure class="left"&gt;&lt;a href="https://www.indiebound.org/book/9781615195312"&gt;&lt;img alt="" height="350" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/9781615195312/b16d3afeb.jpg" width="250"&gt;&lt;/a&gt;

&lt;figcaption class="caption"&gt;&lt;em&gt;This post is adapted from Rutherford’s &lt;a href="https://www.indiebound.org/book/9781615195312"&gt;new book&lt;/a&gt;. &lt;/em&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Dolphin&lt;/em&gt; is a loose and informal name for several different groups of cetaceans, including the Delphinidae (ocean dolphins) and three classes that live in rivers or estuaries (Indian, New World, and brackish). They are smart and have large, complex brains. They also have complex societies, among them notably (but certainly not exclusively) the bottlenose dolphins best studied in Shark Bay in Australia. Two or three male Shark Bay dolphins will form a gang that swim and hunt with each other, called a “first-order” pair or trio. Sometimes two pairs will team up and form a second-order alliance.&lt;/p&gt;&lt;p&gt;These Shark Bay dolphins are also viciously violent. When breeding season comes around, there is fierce competition for access to females, as happens in many sexual species. In most cases in nature, that competition is between individual males. The bottle­nose dolphins have a different tactic: They form gangs.&lt;/p&gt;&lt;p&gt;Alliances are an essential part of the mating strategies of the males. First-order partnerships will single out a female, rush at her, and then herd her away to have sex, which is coercive (this is a general assumption, because it is rarely seen). During this aggressive corralling, the female repeatedly tries to escape, and does so in about one of every four attempts. The males restrict her attempts at freedom by charging in, and bashing her with their tails, head-butting, biting, and body-slamming her into submission.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/technology/archive/2013/08/if-you-insulted-a-dolphin-20-years-ago-hes-probably-still-bitter-about-it/278446/?utm_source=msn"&gt;Read: If you insulted a dolphin 20 years ago, he’s probably still bitter about it&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Second-order alliances do the same, but the team-up makes a ratio of five or six males to one female. The males are often closely related in these alliances, so as a means of transferring their genes into the future, this fits perfectly well within evolutionary theory. On occasion, they form looser “super-alliances,” where multiple second-order gangs will join forces—up to 14 individual males—to corral a single female. These gangs don’t tend to be closely related.&lt;/p&gt;&lt;p&gt;It should be noted that forced copulation has not been directly witnessed, as far as I am aware. The evidence comes from obser­vations of the precopulatory behavior, and physical evidence of violence on the females. Many people say semi-jokingly that in contrast to their cute and smart image, dolphins rape. There is no doubt that sexual coercion is part of their reproductive strategy, as it is in many organisms, and that the behavior is violent. But we must be careful not to anthropomorphize their behavior, whether it be cute, smart, or horrid.&lt;/p&gt;&lt;p&gt;Infanticide is another unpleasant behavior seen in dolphins. It often gets translated into murder in the popular press, but it should be noted that in plenty of other organisms, both males and females kill the young of others within their own species as a reproductive strategy.&lt;/p&gt;&lt;p&gt;A female lion lactates for more than a year when she is nursing cubs, and during this time won’t breed. Males acting alone or sometimes in packs will kill her young in order to bring her back to being fertile so they can then sire a pride. Mother-and-daughter teams of chimps in Tanzania have been seen killing and eating the babies of other parents for reasons that are not clear. Alpha-female meerkats will kill the litters of subordinate females so that they will be free to help nurture the alpha’s litter. Female cheetahs get around all these issues by copulating with multiple males. Their sperm mixes internally in the female, and she will give birth to offspring of several paternities in a single litter.&lt;/p&gt;&lt;p&gt;There are plenty of reports of dolphin calves washed up on beaches with extreme injuries. One study in the 1990s reported nine that had died of blunt-force trauma, including multiple rib fractures, lung lacerations, and deep puncture wounds that were consistent with bites from an adult dolphin.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/health/archive/2015/12/evolution-of-morality-social-humans-and-apes/418371/?utm_source=msn"&gt;Read: Is human morality a product of evolution?&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Are dolphins murderers or rapists? No, because we cannot apply human legal terms to other animals. Is the behavior distasteful to us? Yes, but then again, nature does not care what you think.&lt;/p&gt;&lt;p&gt;This walk through some of the grimmer aspects of the behavior of animals serves as a reminder that nature can be brutal. The struggle for existence means competition, and competition results in conflict and sometimes lethal violence. We recognize these behaviors because humans compete and can be horrifically violent.&lt;/p&gt;&lt;p&gt;But we are not compelled to act violently. The evolution of our minds may have gifted us the ability to craft tools that enable mas­sacres. But it has also furnished us with choices unavailable to our evolutionary cousins. We are different because, with behavioral modernity, we have eased our own struggle for existence away from the brutality of nature, so that we are not obliged to kill others or force sex upon females in order to ensure our survival.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;&lt;em&gt;This post is adapted from Rutherford’s new book, &lt;/em&gt;&lt;a href="https://www.indiebound.org/book/9781615195312"&gt;Humanimal: How &lt;em&gt;Homo sapiens&lt;/em&gt; Became Nature’s Most Paradoxical Creature&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;</content>
    <author>
      <name>Adam Rutherford</name>
      <uri>http://local.theatlantic.com/author/adam-rutherford/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_110705147475/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Javier Galeano / AP</media:credit>
    </media:content>
    <title type="html">Can a Dolphin Really Commit Rape?</title>
    <link href="https://local.theatlantic.com/science/archive/2019/03/animals-rape-murder-morality-humans/585049/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T07:00:00-04:00</published>
    <updated>2019-03-17T17:15:38-04:00</updated>
    <summary type="html">Nature isn’t cruel—it’s just careless.</summary>
    <id>tag:theatlantic.com,2019:50-585049</id>
  </entry>
  <entry>
    <content type="html">&lt;p class="dropcap" dir="ltr"&gt;It’s 4 o’clock in the afternoon in a hotel in Pasadena, and Patricia Arquette, wearing a full-length crimson dress and red velvet heels, is being chased down a hallway by Dr. Ruth Westheimer. It’s not the most frenetic of action sequences—Dr. Ruth, a nonagenarian, moves slowly, but she pursues Arquette with the intention and focus of a bloodhound pursuing a scent. When she finally catches up to the actor—with the help of a publicist who bounds ahead—the two women are thrilled to encounter each other. They pose for a picture together, Arquette bending almost into a right angle to get closer to the diminutive German sex therapist. “You’re going to be on my Twitter,” Dr. Ruth tells her, with some pride. “You’re going to be on mine,” Arquette replies.&lt;/p&gt;&lt;p dir="ltr"&gt;Arquette does indeed later&lt;a href="https://twitter.com/PattyArquette/status/1095160620884811777"&gt; tweet the photo&lt;/a&gt;, and&lt;a href="https://www.instagram.com/p/Btw4OdCFgvN/"&gt; Instagrams it too&lt;/a&gt;, with the hashtag #DrRuthArquette2020.&lt;/p&gt;&lt;p dir="ltr"&gt;Whether or not she ends up as one half of a Westheimer presidential ticket, Arquette, at 50, is indisputably working through one of the most fascinating and gratifying moments of her career. In January she won a Golden Globe for her mewling, hypnotic portrayal of the prison worker Joyce “Tilly” Mitchell in Showtime’s &lt;em&gt;Escape at Dannemora&lt;/em&gt;, a seven-episode miniseries based on a 2015 prison break in upstate New York. Later this month, Arquette stars as the monstrously manipulative Dee Dee Blanchard in Hulu’s &lt;em&gt;The Act&lt;/em&gt;, a true-crime story based on a &lt;em&gt;BuzzFeed&lt;/em&gt; feature about a mother and daughter locked in a poisonously codependent charade.&lt;/p&gt;&lt;p dir="ltr"&gt;“I am a little exhausted of playing crazy women,” Arquette had earlier confessed to a panel at a Television Critics Association presentation to promote &lt;em&gt;The Act&lt;/em&gt;. In addition to the mental and emotional toll of getting inside two such ferociously complex characters, she’d transformed herself physically, gaining 40 pounds to play Tilly, and keeping much of it on for Dee Dee. Various people she was close to, Arquette told me later, people she loves, tried to convince her that the weight gain wasn’t necessary, that she could wear a fat suit instead. They were worried about how deglamorizing herself might affect her career. But Tilly—who in the series is embroiled in relationships with both of the inmates whose escape she helps facilitate—had a number of sex scenes, and Arquette wanted them to be as authentic as possible.&lt;/p&gt;&lt;p dir="ltr"&gt;“I want to have these conversations about women being sexual who don’t have that certain Hollywood body type,” she said when we talked a few hours after the panel, inadvertently quenching some of the glamour of her scarlet gown by hunching all the way over the table toward the audio recorder until she’s almost supine. “If you look around you in the real world, does everyone look like that? Aren’t we supposed to be telling the stories of human beings?”&lt;/p&gt;&lt;p dir="ltr"&gt;This push-pull, between the industry wanting Arquette to be one thing—a luminously blond, almost feline movie star—and Arquette wanting, well, &lt;em&gt;more&lt;/em&gt;, has defined the course of her career. For every concession she makes, there’s a correction. In her first major role in 1987, while still a teenager, she played the wholesome ingenue drop-kicking Freddy Krueger in&lt;em&gt; A Nightmare on Elm Street 3: Dream Warriors&lt;/em&gt;. A few years later came an Edith Wharton adaptation, &lt;em&gt;Ethan Frome&lt;/em&gt;. She’s been the exuberant, adorable call girl in &lt;em&gt;True Romance&lt;/em&gt;. A grieving mother who somehow becomes a freedom fighter in &lt;em&gt;Burma in Beyond Rangoon&lt;/em&gt;. Not one but two femme fatales in David Lynch’s psychosexual neo-noir thriller, &lt;em&gt;Lost Highway&lt;/em&gt;. In Charlie Kaufman’s &lt;em&gt;Human Nature&lt;/em&gt;, Arquette portrayed a woman whose hormonal disorder left her covered in thick body hair. In &lt;em&gt;Little Nicky&lt;/em&gt;, she was the genial love interest to Adam Sandler’s gurning, adolescent demon. In Richard Linklater’s &lt;em&gt;Boyhood&lt;/em&gt;, she did what for many actors would be unthinkable—she let audiences watch her visibly age over the course of 12 years, in a role for which she won her first Academy Award.&lt;/p&gt;&lt;p dir="ltr"&gt;For the 30-plus years Arquette has been acting, critics haven’t always known how to respond. A male journalist profiling her for &lt;em&gt;The Independent &lt;/em&gt;in 2000 &lt;a href="https://www.independent.co.uk/news/people/profiles/the-thursday-interview-patricia-arquette-624874.html"&gt;observed&lt;/a&gt; something “unpredictable and Lorena Bobbitty” within Arquette’s performances, concluding that “the male characters who come into contact with her never seem to know whether they should snog her or jump on to a chair and scream.” Roger Ebert, a palpable fan, seemed enamored of most everything she did, although he was frequently dubious about the material she was attached to. (Of the ill-fated Catholicism-meets-body-horror movie &lt;em&gt;Stigmata&lt;/em&gt;, he wrote, “Arquette is vulnerable and touching in an impossible role.”)&lt;/p&gt;&lt;figure class="u-block-center"&gt;&lt;img alt="" height="462" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/DANNEMORA_Christopher_SaundersSHOWTIME/1839be021.jpg" width="672"&gt;&lt;figcaption class="caption"&gt;Patricia Arquette as Tilly in &lt;em&gt;Escape at Dannemora &lt;/em&gt;(Christopher Saunders / Showtime)&lt;/figcaption&gt;&lt;/figure&gt;&lt;p dir="ltr"&gt;More recently, though, television’s artistic renaissance—and its willingness to tackle complex stories about older women—has offered Arquette some truly challenging characters, roles in which she can physically and emotionally transform herself. She was nervous about playing Tilly, a frowsy, painfully drab character who defies sympathy. She didn’t know whether people were ready to engage with characters like Tilly: ordinary-looking, middle-aged women having affairs, being depressed, and being lonely. “It’s a vulnerable thing, to act,” she said. “And there’s a very narrow definition of what’s acceptable.” The performance she gave in &lt;em&gt;Dannemora&lt;/em&gt; was arguably her most spectacular work to date. Tilly is a toothache of a character, inflamed and unpleasant and raw. But her need is so desperate and encompassing that it’s hard to tear your gaze away.&lt;/p&gt;&lt;p dir="ltr"&gt;Four years ago, shortly after winning her Oscar, taking advantage of the podium to plead for equal pay in Hollywood, and starring in &lt;em&gt;CSI: Cyber&lt;/em&gt;, Arquette made a guest appearance in a sketch on &lt;em&gt;Inside Amy Schumer&lt;/em&gt;. The conceit is that Schumer is jogging in the park when she runs into Julia Louis-Dreyfus, Tina Fey, and Arquette, who’ve gathered to help Louis-Dreyfus celebrate her “last fuckable day.” Being in your 50s in Hollywood, the women tell Schumer, means being cast out into a kind of arctic, desireless hinterland, where your movie posters are pictures of kitchens and you’re too old to realistically play Larry King’s wife.&lt;/p&gt;&lt;div class="oembed" data-oembed-name="www.youtube.com" data-oembed-src="https://www.youtube.com/watch?v=XPpsI8mWKmg"&gt;&lt;iframe allow="autoplay; fullscreen" allowfullscreen="true" class="embedly-embed" frameborder="0" height="480" scrolling="no" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FXPpsI8mWKmg%3Ffeature%3Doembed&amp;amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXPpsI8mWKmg&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXPpsI8mWKmg%2Fhqdefault.jpg&amp;amp;key=e59abcd3fdf14abe95641518e479f5c0&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="854"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p dir="ltr"&gt;What’s funny about watching that sketch now is how thoroughly its stars have since debunked the notion that aging as a woman in Hollywood means sacrificing influence, or artistic vision. Louis-Dreyfus has won six Emmys in a row for her role as Selina Meyer in HBO’s &lt;em&gt;Veep&lt;/em&gt;. Fey created a hit Netflix series and a Tony-nominated Broadway musical. And only three years since &lt;em&gt;CSI: Cyber&lt;/em&gt; was canceled, Arquette has capitalized on TV’s new wave of streaming series to remind everyone of her power.&lt;/p&gt;&lt;hr class="c-section-divider"&gt;&lt;p class="dropcap" dir="ltr"&gt;&lt;em&gt;The Act&lt;/em&gt;’s Dee Dee, a woman with Munchausen syndrome by proxy, is a less flamboyantly difficult character than Tilly, but no less complicated. Virtually everything she says or does is a lie, so the lines Arquette delivers usually have no relationship to what her character actually means. Dee Dee’s acts of kindness and caretaking are wounds in masquerade. Her love for her daughter, Gypsy Rose (played by Joey King), manifests itself entirely in Dee Dee creating damage that she can then repair. There are seemingly infinite layers to the way Arquette plays her—a woman who’s constructed such an elaborate edifice of lies around herself that she can’t get out. Her most transparent emotion in the series, which Arquette communicates with quietly darting eyes and sudden physical rigidity, is panic.&lt;/p&gt;&lt;p dir="ltr"&gt;The series is based on the writer Michelle Dean’s&lt;a href="https://www.buzzfeednews.com/article/michelledean/dee-dee-wanted-her-daughter-to-be-sick-gypsy-wanted-her-mom"&gt; account&lt;/a&gt; of a shocking true-crime story (Dean also co-created the adaptation). The real Gypsy—after a lifetime of enduring agonizing medical procedures and being effectively kept prisoner by Dee Dee’s insistence that she suffered from cancer, muscular dystrophy, cerebral palsy, epilepsy, asthma, and more—secretly plotted with her boyfriend to kill her mother. The murder is teased both in the title of Dean’s feature and in the first scene of the show, so it doesn’t seem unfair to spoil it. But in the series, even as brutally and violently as it’s portrayed, the act of killing itself is less horrifying to watch than the ongoing abuse Dee Dee inflicts on her daughter, disguised, always, as love.&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;em&gt;The Act&lt;/em&gt;’s co-showrunner, Nick Antosca, told me that the team felt it was crucial to cast an actor who could find the humanity in Dee Dee, not just the darkness. Initially Antosca used the word &lt;em&gt;likable&lt;/em&gt;, but immediately corrected himself. “It’s not about being likable. It’s about having depth. No one’s going to like Dee Dee at the end of this show, but they’re going to understand that she’s a human being. And that every human being, no matter the monstrous things they do, needs love, needs connection.”&lt;/p&gt;&lt;figure&gt;&lt;img alt="" height="448" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/TheAct_Brownie_Harris/6a2fe7358.jpg" width="672"&gt;&lt;figcaption class="caption"&gt;Patricia Arquette as DeeDee Blanchard in &lt;em&gt;The Act &lt;/em&gt;(Brownie Harris / Hulu)&lt;/figcaption&gt;&lt;/figure&gt;&lt;p dir="ltr"&gt;This issue of likability, though, has been on Arquette’s mind. Sometimes people ask her how she makes her characters likable, or whether she’s worried that they won’t come across that way. “I say, I don’t &lt;em&gt;want to worry&lt;/em&gt; about a woman being likable. I feel like everything in our lives is informed by that question. In our anger, are we likable? If your kid dies, and you wail, are you likable? I really am happy to throw that question, concern, whatever it is, into a dumpster fire and just be free.”&lt;/p&gt;&lt;p dir="ltr"&gt;While shooting &lt;em&gt;The Act&lt;/em&gt;, she said, she noticed that male directors would bring up the question of likability, while female directors wouldn’t. She started laughing, with increasing force, at how nonsensical it seems. “I said, ‘At the end of it, if you guys like Dee Dee there’s something wrong with you.’ [&lt;em&gt;Giggling.&lt;/em&gt;] You can’t get away from the fact that this woman has her daughter have surgeries! [&lt;em&gt;Full-on guffawing.&lt;/em&gt;] Stop! It’s almost absurd! [&lt;em&gt;Wheezing through laughter, almost in tears.&lt;/em&gt;] I told them 19 times, ‘Stop with that silly talk.’ I really find it ironic.”&lt;/p&gt;&lt;p dir="ltr"&gt;She pulled it together, kind of, and brought it back to Tilly. “Then I told them, ‘I just won all these awards for this lady no one likes! Leave me alone.’”&lt;/p&gt;&lt;p dir="ltr"&gt;On set, Arquette forged a particular and profound bond with King that helped both actors get through their more grueling scenes. “After super intense scenes, a lot of the time we would both start laughing, because it’s so emotional,” King told me. “It takes everything out of you, and for it not to take that little last bit away, you’ve got to find some humor in it.” Arquette is enormously protective of King, in an unmistakably maternal way. During the TCA panel, when King mentions an app she uses, Arquette jumps in and shakes her head. “Don’t tell everyone! Don’t print that,” she says, motioning at the entire room. For &lt;em&gt;The Act&lt;/em&gt;, King had to do nudity for the first time, and in those scenes, she said, even though Arquette wasn’t in them, she took over, making sure monitors were turned off and the only people watching were the people who absolutely needed to be there.&lt;/p&gt;&lt;p dir="ltr"&gt;“It was so amazing,” King said. “Because I didn’t know what to ask for, I didn’t understand, and it was a big deal, and I was super nervous. And to know that she was in my corner and was fighting for me, it just felt so good.”&lt;/p&gt;&lt;p dir="ltr"&gt;Onscreen, the closeness between the two actors makes for powerful chemistry, the kind that only makes the subject matter in the series more disturbing. Right before she started shooting &lt;em&gt;The Act&lt;/em&gt;, Arquette’s youngest child left home, and she tried to use that energy—that feeling of worrying about her daughter and missing her—in her work, amplifying it to an extreme level. With Dee Dee, she said, “I don’t think about it as sympathy or empathy. Just: &lt;em&gt;How does she think? &lt;/em&gt;Once I understand how [the characters] think, it feels like the truth to me.”&lt;/p&gt;&lt;p dir="ltr"&gt;Up next, Arquette features in another project exploring the maternal imperative, the Netflix movie &lt;em&gt;Otherhood&lt;/em&gt;. She describes it as a “comedy ... kind of a &lt;em&gt;momedy&lt;/em&gt;,” about three women with empty-nest syndrome who decide to go to New York together to reconnect with their adult sons. (The other mothers are played by Angela Bassett and Felicity Huffman; the latter’s &lt;a href="https://www.washingtonpost.com/world/national-security/fbi-accuses-wealthy-parents-including-celebrities-in-college-entrance-bribery-scheme/2019/03/12/d91c9942-44d1-11e9-8aab-95b8d80a1e4f_story.html"&gt;recent legal issues&lt;/a&gt; may or may not affect the movie’s release.) “It was just really fun to be a part of,” she said. “And it wasn’t heavy. And no one dies.” She’s exhilarated by how much television’s streaming wars have reinvigorated production in the entertainment industry: “The competition is for good content now and that only makes things better.”&lt;/p&gt;&lt;p&gt;What really gratifies her, she said, more than awards, are the opportunities she’s getting in this moment. She thinks of her career in different phases, different boxes, all confining in their own way, all encouraging her to limit herself. But now, at 50, a word she uses repeatedly to describe herself is &lt;em&gt;liberated&lt;/em&gt;. “It’s really kind of a shocking time in my career,” Arquette said. “I didn’t see it coming.”&lt;/p&gt;</content>
    <author>
      <name>Sophie Gilbert</name>
      <uri>http://local.theatlantic.com/author/sophie-gilbert/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/Patricia_Arquette_final/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Willy Sanjuan / Invision / AP / Quinn Ryan / The Atlantic</media:credit>
    </media:content>
    <title type="html">Patricia Arquette’s Second Act</title>
    <link href="https://local.theatlantic.com/entertainment/archive/2019/03/patricia-arquettes-second-act/584986/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T07:00:00-04:00</published>
    <updated>2019-03-17T07:00:07-04:00</updated>
    <summary type="html">At 50, the Oscar, Emmy, and Golden Globe winner is getting some of the most exciting roles of her career.</summary>
    <id>tag:theatlantic.com,2019:50-584986</id>
  </entry>
  <entry>
    <content type="html">&lt;p dir="ltr"&gt;On a Tuesday in November 1990, the sleepy town of Aramoana was burned into New Zealand's collective consciousness.&lt;/p&gt;&lt;p dir="ltr"&gt;The 13 residents &lt;a href="https://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&amp;amp;objectid=10353715"&gt;killed in a gun rampage&lt;/a&gt; that shocked the nation were, until Friday’s attacks in Christchurch, victims of the country’s worst-ever mass shooting, one that opened a widespread reevaluation of New Zealand’s relationship with firearms. All subsequent gun debates here have been guided by the tragic events in Aramoana and their soul-searching aftermath.&lt;/p&gt;&lt;p dir="ltr"&gt;Nearly three decades later, another &lt;a href="https://www.reuters.com/article/us-newzealand-shootout-factbox-idUSKCN1QW1P0"&gt;horrific event&lt;/a&gt; is having a similar effect. The terrorist attack on two Christchurch mosques has focused international attention on this faraway country, seen as an idyllic place that is both geographically and emotionally separate from much of the world’s tumult. Domestically, it has exposed an attitude to gun ownership in New Zealand that experts argue has become increasingly lax, with the government set to &lt;a href="https://www.beehive.govt.nz/release/pm-statement-christchurch-shooting-%E2%80%93-4pm-17-march"&gt;discuss changes&lt;/a&gt; to the country’s gun laws on Monday. “I can tell you one thing right now,” Prime Minister Jacinda Ardern &lt;a href="https://www.beehive.govt.nz/release/statement-jacinda-ardern-christchurch-mass-shooting-%E2%80%93-9am-16-march"&gt;told journalists&lt;/a&gt; in the wake of the shooting. “Our gun laws will change.”&lt;/p&gt;&lt;p dir="ltr"&gt;It echoes the legacy of Aramoana. Mass shootings demand that all countries consider the role of firearms in the hands of their civilians. Some, such as Britain and Australia—victims of mass shootings in &lt;a href="http://news.bbc.co.uk/onthisday/hi/dates/stories/august/19/newsid_2534000/2534669.stm"&gt;Hungerford in 1987&lt;/a&gt; and &lt;a href="https://www.theatlantic.com/international/archive/2017/10/australia-gun-control/541710/?utm_source=msn"&gt;Port Arthur in 1996&lt;/a&gt;, respectively—chose to clamp down on gun ownership, demanding that rigorous checks be fulfilled in order to grant access to firearms. After Aramoana, New Zealanders have chosen a path that focuses on regulation, with only selective prohibition. Legislation passed in 1992 amended the 1983 Arms Act, placing restrictions on the sale of military-style semiautomatic (MSSA) rifles and introducing 10-year limits for firearm licenses, requiring that holders reapply in order to maintain legal access to their armories.&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/muslims-nyu-new-zealand-shooting/585070/?utm_source=msn"&gt;Read: ‘This could have been their 9/11 moment’&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Crucially, instead of trying to control the movements and sales of guns themselves, the New Zealand approach &lt;a href="https://www.police.govt.nz/sites/default/files/publications/the-arms-code-2013.pdf"&gt;focuses&lt;/a&gt; on granting a firearms license to only those individuals whom the police consider to be a “fit and proper person.” Applicants must have no history of violence, drug abuse, or mental-health problems, and applications must be supported by their partner or next of kin. Anyone over the age of 16 can apply for a basic A firearms license, allowing the license holder to own and operate “any number of sporting-type rifles and shotguns,” provided that they are kept in a “lockable cabinet, container, or receptacle” that needs to be of “stout construction.”&lt;/p&gt;&lt;p dir="ltr"&gt;This emphasis on “sporting-type rifles” is critical, and is typically the main reason civilians would be granted a firearms license—self-defense is not an acceptable justification. Only endorsed members of pistol clubs can get a B license, which allows access to pistols; ownership of MSSA rifles, often used in mass shootings, requires an elusive E license.&lt;/p&gt;&lt;p dir="ltr"&gt;Yet while the country’s close relationship with guns has been tested by these regulations, it certainly hasn’t been broken. &lt;a href="https://www.police.govt.nz/sites/default/files/publications/14-sep-2018-ir-01-18-11101.pdf"&gt;Figures from New Zealand’s police&lt;/a&gt; show that in October 2018, there were 248,764 active firearms licenses, meaning about 5 percent of the resident population is approved for handling a firearm. Worryingly for authorities, Ardern has confirmed that the primary shooter in the Christchurch terror attack was among those who held a firearms license.&lt;/p&gt;&lt;p dir="ltr"&gt;But because license holders just need to register restricted weapons (of which there were 65,837 at last count), the authorities are able to estimate only how many guns are being held by civilians. The police believe there were up to 1.2 million firearms in 2014, and the &lt;a href="http://www.smallarmssurvey.org/fileadmin/docs/T-Briefing-Papers/SAS-BP-Civilian-Firearms-Numbers.pdf"&gt;2018 Small Arms Survey&lt;/a&gt; calculated there were 26.3 firearms per 100 New Zealand civilians, one of the highest such ratios in the world—comparable to Switzerland, though far short of the United States, where the figure is 120.5.&lt;/p&gt;&lt;p dir="ltr"&gt;Some of these rules might soon have to change, argues Alexander Gillespie, a professor of law at the University of Waikato, shifting from licensing the ownership of firearms to outright prohibiting them, and adding a complete firearms register. “The problem,” he told me, “is that the regulation is not strict enough.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/entertainment/archive/2019/03/new-zealand-shooting-manifesto-poems-dylan-thomas/585079/?utm_source=msn"&gt;Read: When poems of resilience get twisted for terrorism&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Guns capture the rural-urban social and political divide here, conspicuous through their absence in major urban areas. Even the question of whether city police forces should carry firearms, as opposed to keeping them secured in their vehicles, as the forces typically do, &lt;a href="https://www.radionz.co.nz/news/national/383838/canterbury-police-no-longer-carry-guns-after-arresting-wanted-man"&gt;splits opinion&lt;/a&gt;. But in rural communities, hunting with guns remains central to many communities, with wild deer, pigs, and goats among those primarily targeted. These and other invasive species were deliberately introduced by colonists for the explicit purpose of killing for sport, creating a culture of hunting that persists in contemporary society. “It was part of a vision of New Zealand masculinity,” explains Hera Cook, a historian and researcher into New Zealand firearms policy at the University of Otago.&lt;/p&gt;&lt;p dir="ltr"&gt;While guns were, for many years, primarily sold alongside gear for outdoor pursuits such as camping equipment and fishing rods, hidden in the margins, Cook believes they are slowly becoming more visible through the rise of Gun City—“The World’s Largest Gun Store,” according to its tagline—and other specialist firearms retailers. “Gun City has been a real step change in terms of selling guns in New Zealand,” she argues.&lt;/p&gt;&lt;p dir="ltr"&gt;In the years since the events in Aramoana stunned New Zealanders, many here believed their country had found a way to balance a historically gun-toting society with the need for sensible, secure 21st-century firearms regulation. Now the illusion has been shattered, the scars of that debate have been ripped open once more, and Christchurch can replace Aramoana as shorthand for the worst of the country’s complex relationship with firearms.&lt;/p&gt;</content>
    <author>
      <name>Chris Fitch</name>
      <uri>http://local.theatlantic.com/author/chris-fitch/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTS2DESI/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Reuters</media:credit>
      <media:description>Jacinda Ardern, New Zealand's prime minister, has promised to toughen the country's gun-ownership laws.</media:description>
    </media:content>
    <title type="html">From Aramoana to Christchurch: A Shorthand of New Zealand’s Relationship With Guns</title>
    <link href="https://local.theatlantic.com/international/archive/2019/03/aramoana-christchurch-new-zealand-guns/585145/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T06:04:36-04:00</published>
    <updated>2019-03-17T10:15:10-04:00</updated>
    <summary type="html">Nearly 30 years ago, a mass shooting in a small town reshaped how New Zealand regulates gun ownership. The attack in Christchurch could have a similar effect.</summary>
    <id>tag:theatlantic.com,2019:50-585145</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;In the summer of 2017, I found myself in a mosque in suburban Minneapolis where a bomb had exploded not long before. It had already been a busy year for my beat, reporting on Muslim Americans, which had become synonymous with writing about suspected hate crimes, the destruction of mosques, and a constant parade of anti-Muslim rhetoric—from anonymous online trolls to prominent politicians.&lt;/p&gt;&lt;p&gt;I thought back to that morning in Minneapolis when I heard the news that at least one terrorist had murdered 49 people in Christchurch, New Zealand, at two different mosques. The attack was horrifying but also deeply familiar. If I was surprised, it was mostly by the location—a country with little experience of mass shootings.&lt;/p&gt;&lt;p&gt;Eight months before the Minnesota mosque bombing, a white man walked into a mosque in Quebec City and began firing on worshippers, killing six and injuring 19 others. &lt;em&gt;The New York Times&lt;/em&gt; &lt;u&gt;&lt;a href="https://www.nytimes.com/2019/02/08/world/canada/alexandre-bissonnette-sentence.html"&gt;reported&lt;/a&gt;&lt;/u&gt; that he was “fixated on President Trump, the far right and Muslims.” About a month after that, another white man &lt;u&gt;&lt;a href="https://www.cnn.com/2018/03/06/us/kansas-bar-shooting-plea/index.html"&gt;shot and killed two Indian immigrants&lt;/a&gt;&lt;/u&gt; in a bar in Kansas, believing they were “Iranians.” According to witnesses, he shouted, “Get out of my country,” before opening fire.&lt;/p&gt;&lt;p&gt;For every atrocity, it seems there’s a close call. In 2016, three men plotted to bomb a mosque and apartment complex in Wichita, Kansas, because of its high concentration of Muslims from Somalia. One of them referred to Muslims as “cockroaches.” That plot was foiled.&lt;/p&gt;&lt;p&gt;One militia member involved in the Minnesota mosque bombing, according to the &lt;a href="https://www.justice.gov/usao-mn/press-release/file/1043271/download"&gt;affidavit&lt;/a&gt;, said he wanted to “scare them out of the country,” referring to Muslims, “because they push their beliefs on everyone else.” He also said he went through with the bombing to “show them, ‘Hey, you’re not welcome here. Get the fuck out.”&lt;/p&gt;&lt;p&gt;The imam of the mosque pondered in my presence why President Donald Trump was so quick to condemn acts of terror allegedly committed &lt;em&gt;by&lt;/em&gt; Muslims and &lt;u&gt;&lt;a href="https://www.bbc.com/news/world-us-canada-40084410"&gt;oddly restrained&lt;/a&gt;&lt;/u&gt; and &lt;u&gt;&lt;a href="https://www.washingtonpost.com/news/morning-mix/wp/2017/08/08/trump-still-hasnt-not-condemned-the-minnesota-mosque-bombing-muslim-leaders-are-waiting/?noredirect=on&amp;amp;utm_term=.a52a9a92141e"&gt;absent&lt;/a&gt;&lt;/u&gt; when acts of violence were allegedly committed &lt;em&gt;against&lt;/em&gt; Muslims.&lt;/p&gt;&lt;p&gt;“He is the president of this country, and this happened to us. He has to come here and at least express his feelings and say this is bad,” the imam &lt;u&gt;&lt;a href="https://www.buzzfeednews.com/article/talalansari/minnesotans-gather-in-solidarity-with-muslim-americans"&gt;told me&lt;/a&gt;&lt;/u&gt;.&lt;/p&gt;&lt;p&gt;But the president seems incapable of denouncing violence against Muslims with energy or sincerity. In this way, he is profoundly American.&lt;/p&gt;&lt;p&gt;Muslims here are regularly &lt;u&gt;&lt;a href="https://www.motherjones.com/media/2019/03/tucker-carlson-calls-iraqis-semiliterate-primitive-monkeys-in-latest-round-of-tapes/"&gt;dehumanized&lt;/a&gt;&lt;/u&gt;. Even their religion is &lt;u&gt;&lt;a href="https://www.nytimes.com/2018/09/26/opinion/islamophobia-muslim-religion-politics.html"&gt;delegitimized&lt;/a&gt;&lt;/u&gt; as not a religion, and some have gone so far as to state that &lt;u&gt;&lt;a href="https://www.cnn.com/2019/03/10/media/jeanine-pirro-ilhan-omar/"&gt;adherence to the Muslim faith may be incompatible &lt;/a&gt;&lt;/u&gt;with the U.S. Constitution.&lt;/p&gt;&lt;p&gt;In 2018, a former colleague and I marveled at how often elected officials seemed to make disparaging statements about Muslims and just get away with it. Similar statements about any other religious minority wouldn’t stand, we thought. We challenged ourselves to find at least one instance in every state. Our &lt;u&gt;&lt;a href="https://www.buzzfeednews.com/article/hannahallam/trump-republicans-bashing-muslims-without-repercussions"&gt;analysis revealed&lt;/a&gt;&lt;/u&gt; that since 2015, Republican officials in 49 states have openly denigrated Muslims and proposed anti-Muslim legislation, typically with impunity. (The exception was Utah, but if we’d extended the time frame from five years to seven, it would have made the list too.)&lt;/p&gt;&lt;p&gt;These facts become all the more alarming when one realizes that Muslim Americans, for all the negative attention they receive, account for an estimated 1 percent of the U.S. population.&lt;/p&gt;&lt;p&gt;&lt;em&gt;The Washington Post&lt;/em&gt; &lt;a href="https://www.washingtonpost.com/national/in-the-united-states-right-wing-violence-is-on-the-rise/2018/11/25/61f7f24a-deb4-11e8-85df-7a6b4d25cfbb_story.html?utm_term=.634ea7955ecb"&gt;reported last year&lt;/a&gt; that “over the past decade, attackers motivated by right-wing political ideologies have committed dozens of shootings, bombings and other acts of violence, far more than any other category of domestic extremist.” At what point will Americans widely acknowledge that white supremacy can be as big a threat to Americans as Islamism? That point seems far off; right now, many Americans don’t acknowledge that anti-Muslim bigotry is a problem &lt;em&gt;at all&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;This is a country where a politician &lt;u&gt;&lt;a href="https://www.buzzfeednews.com/article/talalansari/oklahoma-lawmaker-who-called-islam-a-cancer-gets-study-on-ra"&gt;can say&lt;/a&gt;&lt;/u&gt; Islam is “a cancer in our nation that needs to be cut out” and remain in office. A nation where &lt;u&gt;&lt;a href="https://www.buzzfeednews.com/article/talalansari/act-marches-anti-sharia"&gt;people proudly held “anti-Sharia” rallies&lt;/a&gt;&lt;/u&gt; in 28 cities in 21 states, in 2017.&lt;/p&gt;&lt;p&gt;In 2016, I wrote a story about the &lt;u&gt;&lt;a href="https://www.buzzfeednews.com/article/davidmack/ozone-park-shooting#.skdA8GAlQ"&gt;shooting death of an imam and his associate&lt;/a&gt;&lt;/u&gt; in Queens, New York. At first, the police said it might have been a robbery gone wrong. But surveillance footage made the shooting appear more like a targeted assassination than a failed robbery. In response to my story, someone on Twitter sent me an image of Pepe the Frogs (a right-wing meme) in Nazi outfits with blood on their bayonets. The caption: “Did someone say RIGHT WING DEATH SQUADS?” I was mildly alarmed at the time, but laughed it off. I would not have the same response today.&lt;/p&gt;&lt;p&gt;It pains me to write this: There are obvious signs to anyone paying attention that right here at home, Muslims could suffer the same fate as those in New Zealand. But it is more important to realize that, on a smaller scale, Muslims have already suffered that fate.&lt;/p&gt;</content>
    <author>
      <name>Talal Ansari</name>
      <uri>http://local.theatlantic.com/author/talal-ansari/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTX6RCEN/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Murad Sezer / Reuters</media:credit>
      <media:description>People take part in a demonstration against the Christchurch attack following Friday prayers in Istanbul, Turkey. The banners read "Say No to Global Terror!"</media:description>
    </media:content>
    <title type="html">It Could Happen Here</title>
    <link href="https://local.theatlantic.com/ideas/archive/2019/03/christchurch-attack-muslim-rhetoric/585106/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T06:00:00-04:00</published>
    <updated>2019-03-17T06:00:06-04:00</updated>
    <summary type="html">At what point will Americans widely acknowledge that white supremacy can be as big a threat to Americans as Islamism?</summary>
    <id>tag:theatlantic.com,2019:50-585106</id>
  </entry>
  <entry>
    <content type="html">&lt;p class="dropcap" dir="ltr"&gt;Every city in the South, it seems, is trying to figure out what to do with its monuments. Richmond has kept its grand “Monument Avenue” lined with statues of Confederate luminaries. New Orleans took Robert E. Lee and Jefferson Davis down from their pedestals. In the city of Atlanta, whose leading Civil War monument is the enormous Atlanta Cyclorama, the strategy is novel: use history itself to strip a divisive object of its symbolic power.&lt;/p&gt;&lt;p dir="ltr"&gt;Cycloramas are panorama paintings designed for exhibition in rotundas. The viewer stands in the middle, cocooned by a canvas that becomes the world. The Atlanta Cyclorama shows the 1864 Battle of Atlanta, a crucial turning point in the Civil War that launched General Sherman on his infamous march and sealed the South’s fate. Now the center of a major new exhibition at the Atlanta History Center, its canvas measures 49 feet high by 382 feet long and weighs over 9,000 pounds, making it one of the largest paintings in the United States.&lt;/p&gt;&lt;p dir="ltr"&gt;Ever since it premiered in 1886, the Cyclorama has itself been a battleground—a key theater in America’s 150-year-long fight over how to remember its Civil War. Some exhibitions have cast it as a Union victory; others as a Confederate one. At various moments, Union and Confederate veterans, white and black politicians, civil rights leaders and segregationists have all tried to claim and control the Cyclorama. Some literally repainted it to promote their memory of the war. For much of the 20th-century, the Lost Cause won out, and the Cyclorama served as Atlanta’s Confederate monument. It became part of an effort to uphold white supremacy under the guise of merely commemorating history.&lt;br&gt;&lt;br&gt;
The Cyclorama underscores why we care so much about monuments: Not for the past they portray, but for the values they project into the present. “Southern white communities used monuments to preserve their version of the Civil War,” Sheffield Hale, the Atlanta History Center’s director, told me. “A statue of a Confederate general … is not about loss or grief. It is about power.”&lt;br&gt;&lt;br&gt;
When I spoke to Hale and his team of curators at the opening weekend late last month, they were very clear about the goal of the exhibition. They hope to end the Cyclorama’s career as a vessel for Civil War myths—to take away its power without erasing its history.&lt;br&gt;&lt;br&gt;
They have succeeded. The new exhibition transforms the Cyclorama from, as Hale puts it, “attraction to artifact”—from monument to museum piece. It shifts the focus almost entirely from the history depicted in the painting to the history of the painting itself; from the battle that the Cyclorama depicts to the battle over that battle. And in doing so, it shows how we might resolve the long debate over Civil War monuments: instead of letting the monuments tell our history, we can tell theirs.&lt;/p&gt;&lt;p class="dropcap" dir="ltr"&gt;Over its 133-year existence, the Cyclorama has proved uniquely pliable as a Civil War memento, perhaps because it was designed that way.&lt;/p&gt;&lt;p dir="ltr"&gt;In their 19th-century heyday, cycloramas travelled from city to city, just as fairs or circuses did. They needed to appeal to a wide audience. When the Milwaukee-based American Panorama Company created the Atlanta Cyclorama, it instructed its team (all German immigrants who spoke no English) to paint an ambiguous juncture in the Battle of Atlanta: 4:45 p.m. on July 22, a moment when four Confederate brigades had just broken the Union line and taken control of Union artillery. Minutes later, Union reinforcements led by General John Logan would beat back the Confederates and end the threat. The Cyclorama depicts Logan on horseback, gallantly charging toward the battle. But he wasn’t there yet. The scene is tense, the outcome unresolved. The painters up north in Wisconsin crafted the Cyclorama to depict an impending Union victory. From another angle, though, the scene could also be interpreted as a Confederate opportunity. This was a moment when the war could have gone the other way.&lt;/p&gt;&lt;p dir="ltr"&gt;In 1892, Paul Atkinson, a promoter from Georgia, brought the Cyclorama to Chattanooga and then to Atlanta. Atkinson knew he would need the painting to tell a different story. “This is all right to the son of a federal soldier,” he recalled later in a letter to a friend. “But it don’t sit so well with the son of a Confederate.”&lt;/p&gt;&lt;p dir="ltr"&gt;Because the Cyclorama only hinted at the Union victory to come, it didn’t take much to alter the intended meaning. Simply by repainting gray uniforms in blue, Atkinson converted captured Confederate soldiers into Union prisoners. He also added a few tattered American flags, which he showed lying in the dust. “The painting is wonderful,” wrote the Atlanta Constitution when the Cyclorama premiered in Atlanta, because “it is the only one in existence where the Confederates get the best of things.” “The only confederate victory ever painted,” raved an advertisement. Fake news, 1890s-style.&lt;/p&gt;&lt;p dir="ltr"&gt;But fake news can stick. The retouched Cyclorama settled in Atlanta just as white Southerners were embracing the “Lost Cause” narrative of the Civil War, a myth in which Confederates fought valiantly to defend the old South’s noble way of life. David Blight, the leading expert on Civil War memory, says that the Cyclorama “clearly became a memorial to the Confederacy, either as a false victory or just as Lost Cause sentiment.” In the next few decades, statues and plaques to the Confederacy rose up all over the South. The Cyclorama, says Sheffield Hale, became Atlanta’s version of such a monument.&lt;/p&gt;&lt;p dir="ltr"&gt;Yet Atlanta was also emerging as the cradle of a new, more economically dynamic South, and the Cyclorama was soon caught up in its host city’s identity crisis. In the 1930s, Mayor William Hartsfield, who wanted Atlanta to become “the city too busy to hate,” tried explicitly to decouple the Cyclorama from the Lost Cause. “It must be remembered that this picture is not a shrine or memorial,” Hartsfield said in an interview with the Atlanta Constitution. “It was painted purely for exhibition purposes, not to be worshipped or venerated as a relic.” The mayor commissioned a restoration of the Cyclorama—which included the addition of plaster figurines spread out at the base of the painting, in an attempt to give it a three-dimensional element—and Atkinson’s Union prisoners were restored to their Confederate originals.&lt;/p&gt;&lt;p dir="ltr"&gt;Hartsfield’s effort was too little, too late. Or perhaps too little, too soon. In 1939, the film of Margaret Mitchell’s Lost Cause novel &lt;em&gt;Gone with the Wind&lt;/em&gt; premiered in Atlanta. As part of the festivities, Hartsfield escorted Clark Gable and Vivien Leigh around the Cyclorama. At Gable’s request, a figure of a dying Rhett Butler mysteriously appeared in the Cyclorama’s plaster-model foreground. Attendance spiked—along with passions. Newspaper reports from the 1940s called the Cyclorama “a shrine to the Confederacy,” and recounted multiple people fainting at the base of the painting, overcome with emotion. In 1939, a withered Confederate veteran accidently bumped into a plaster model of a Union soldier in front of the painting, sized him up, and whacked him with his cane. Hartsfield, sensing the winds, declared the anniversary of the Battle of Atlanta a “memory day.” Atlantans weren’t ready to give up the Lost Cause or their monument to it.&lt;/p&gt;&lt;figure class="u-block-center"&gt;&lt;img alt="" height="542" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/ahc082509007/dcf7af5fe.tiff" width="672"&gt;&lt;figcaption class="caption"&gt;Hartsfield escorts Vivien Leigh, Clark Gable, and Olivia de Havilland around the Cyclorama (Kenan Research Center at the Atlanta History Center)&lt;/figcaption&gt;&lt;/figure&gt;&lt;p dir="ltr"&gt;Atlanta’s first black mayor, Maynard Jackson, worked even harder to wrench the Cyclorama away from the Old South. When Jackson was elected in 1974, the painting had fallen into disrepair. (An ill-advised decision to coat it in buttermilk in 1934—in order to counteract the original coating of linseed oil—had left behind what one reporter called “a thin layer of cheese.”) White Atlantans, migrating to the suburbs at a breakneck clip, tried to bring the Cyclorama with them by fighting to move it from Atlanta to Stone Mountain, a recently completed mega-monument to the Confederacy. Jackson was having none of it. He made the Cyclorama a priority in the city budget and raised enough to keep it in its home in the downtown neighborhood of Grant Park, by then a racially mixed neighborhood. “Some people say it is ironic that this administration would work to save the Cyclorama,” he said in a pointed public address to mark the reopening. “I see no irony. Suffice it to say: Look at who won the battle.”&lt;/p&gt;&lt;p dir="ltr"&gt;Mayor Jackson intervened because he understood the stakes. The Cyclorama had framed the legacy of the Civil War for hundreds of thousands of visitors. How the city chose to exhibit this monument both shaped and reflected how Americans were remembering the War. Nevertheless, attendance plummeted over the years, and with it revenue.  In 2014, after an emergency task force recommended the painting either be moved or put into storage, Mayor Kasim Reed gave the struggling enterprise to the History Center on a 75-year loan.&lt;/p&gt;&lt;p dir="ltr"&gt;For Hale, who had served on Reed’s task force and worked for years on the question of how to deal with Confederate monuments all over Georgia, the Cyclorama was the ultimate challenge. Rather than simply hyping the painting, as each previous exhibition of the Cyclorama had done, Hale and his team of curators decided to try something new. “To me, the most interesting thing about the Cyclorama is not the size, the painting, all of that,” Hale told me, “but its journey.”&lt;/p&gt;&lt;p class="dropcap" dir="ltr"&gt;The History Center’s exhibition focuses on that journey. Before descending into the rotunda to see the Cyclorama itself, audiences pass through a spacious atrium with two wall displays. One contains a high-tech map of Sherman’s Georgia campaign (on which little amoeba-like blobs of blue and gray chase each other around while a ticker at the bottom counts a steadily rising death toll).&lt;/p&gt;&lt;p dir="ltr"&gt;Dwarfing that display is the second wall, which makes no mention of the Cyclorama or the Battle of Atlanta. Instead, a series of small text-boxes rehearses—and then dispels—popular “myths” about the Civil War: “MYTH: The nation was healed”; “MYTH: The Confederate cause was right.” Gordon Jones, the History Center’s chief military curator, says he wants the wall to be “an ideological tool kit” that viewers can use to understand how people remembered—and misremembered—the history of the Civil War. Hale is more blunt. When we walk through the exhibition together, he points at the wall of myths and says, “the Lost-Causers aren’t going to like that.”&lt;/p&gt;&lt;p dir="ltr"&gt;The painting itself is magnificent, beautifully returned to its original 1880s dimensions (in 1922, the Cyclorama moved to a building that was too small; the curators lopped off a bunch of sky). Even to our IMAXed eyes, it looks strikingly huge and all-encompassing. The 1930s diorama figures, too, have been meticulously restored, including Clark Gable. But almost more striking than the painting itself is a 12-minute film that is projected over the canvas.&lt;/p&gt;&lt;p dir="ltr"&gt;The film uses historical reenactments to breeze through the history of the Cyclorama. A grizzled Union veteran, viewing the Cyclorama before it traveled South, warns his son that “if the Rebs get their way, they’ll be the heroes we remember.” Right on cue, a thickly-accented Paul Atkinson (played by an actor who looks an awful lot like Matthew McConaughey) gleefully paints in the Union prisoners. A Confederate veteran sees the Cyclorama and waxes nostalgic about the Old South, but a black Union veteran follows him and makes clear that slavery was the true cause of the war. In a scene from the 1930s, a young daughter corrects her mother’s Lost Cause mindset. Mayor Jackson gives his speech. The film ends with a black mother and daughter commenting on the painting today. “A lot of people have mistaken a historical painting for actual history,” the daughter says. “And that’s worth talking about.”&lt;/p&gt;&lt;p dir="ltr"&gt;The film is a bit didactic, and its point could hardly be clearer: Memories of the Civil War have less to do with what actually happened than with the politics and prejudices of the people remembering it. The Cyclorama doesn’t show us the history of a battle; it shows us a battle over history.&lt;/p&gt;&lt;p class="dropcap" dir="ltr"&gt;Just as previous exhibitions of the Cyclorama have reflected their present moments, the new display reflects ours. At a time when the lines between fact and fiction, memory and history, myth and truth seem increasingly blurry, the exhibition uses the Cyclorama to give its visitors—who will include every fifth-grader in the Atlanta public schools—the tools to discriminate between them. “This is not for some antiquarian interest,” Hale insists. “We’re trying to use this to make better Atlantans.” At the opening night of the exhibition, he tailored his speech for an audience of prominent Georgia Republicans: Brian Kemp, Georgia’s newly elected, stridently pro-Trump governor, and Senator David Perdue, among others. Hale hoped to spark a conversation with white conservatives who might otherwise excuse Confederate nostalgia as an expression of Southern pride. “The Cyclorama is a prism through which we can refract the current debate about heritage into fact-based history,” he said in his speech.&lt;/p&gt;&lt;p dir="ltr"&gt;Ideally, Hale told me later on, this exhibition too will soon appear obsolete. “In 30 years are we going to be teaching about the Lost Cause? Hopefully it will be a surprise that there even was such a thing,” he says, before lapsing into a gardening metaphor: “But I don’t know. I’ve been trying to put Roundup on it for years, and it seems to evade all chemicals. It’s a very hearty weed.”&lt;/p&gt;&lt;p dir="ltr"&gt;Jones, the History Center’s military curator, said the monuments debate raging in cities and towns across the South “is perfect timing for us.” He hopes the exhibition will let the painting call upon the past without glorifying it. “I think success in the future would be that when you hear the word ‘Cyclorama’ in Atlanta, you don’t recoil. You don’t recoil or rejoice,” says Jones. He clarifies: “People should be passionate about this, but they should also think about it. Informed passion.”&lt;/p&gt;&lt;p dir="ltr"&gt;What is so important about the Cyclorama exhibition, though, is that is pushes us to view the painting in a purely rational, even dispassionate way. Perhaps this is a useful lesson for other cities around the South grappling with their monuments: Under the glare of historical fact, passion withers. And without passion, monuments lose their power.&lt;/p&gt;</content>
    <author>
      <name>Daniel Judt</name>
      <uri>http://local.theatlantic.com/author/daniel-judt/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_19051569306106/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Ron Harris / AP</media:credit>
      <media:description>A worker puts some final touches on the diorama that is part of the Atlanta Cyclorama display</media:description>
    </media:content>
    <title type="html">Atlanta’s Civil War Monument, Minus the Pro-Confederate Bunkum</title>
    <link href="https://local.theatlantic.com/ideas/archive/2019/03/how-atlanta-cyclorama-lost-its-confederate-overtone/584938/?utm_source=msn" rel="alternate" />
    <published>2019-03-17T06:00:00-04:00</published>
    <updated>2019-03-17T09:41:22-04:00</updated>
    <summary type="html">A new exhibition of a gigantic painting uses historical fact to dispel Lost Cause mythology.</summary>
    <id>tag:theatlantic.com,2019:50-584938</id>
  </entry>
  <entry>
    <content type="html">&lt;p class="dropcap"&gt;I&lt;span class="smallcaps"&gt;’m hardly&lt;/span&gt; the target audience for Simon &amp;amp; Schuster’s new Masters at Work series, a collection of slim books touted as “the best virtual internship you’ll ever have” in your quest for a vocation. Nor is a young medical student eyeing the arduous specialty of neurosurgery likely to be a prime candidate for this particular entry in the first batch of “narrative career guides.” Surely she’d be too busy steeling her nerves and honing her scalpel skills.&lt;/p&gt;&lt;figure class="left"&gt;&lt;img alt="" height="255" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/0419_c2c_neurosurgeon/2b5c5d2f7.jpg" width="180"&gt;&lt;figcaption class="credit"&gt;Simon &amp;amp; Schuster&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Except who can resist a chance to spy on jobs they can’t really fathom? Watching the chairman of Mount Sinai’s neurosurgery department, Joshua Bederson, at work is a fascinating and informative—and awe- and cringe-inducing—experience. Peel back the scalp, drill through the skull, then probe and slice and suck away at tumors (“pebble-like growths,” mushy sheaths, or anything in between): The enterprise is so physical and so intricate, and so fraught. The tiniest slip in the mysterious labyrinth of the brain can spell disaster.&lt;/p&gt;&lt;p&gt;John Colapinto, a &lt;i&gt;New Yorker&lt;/i&gt; staff writer, drills down and probes very deftly himself. He has found an ideal subject in Bederson, who isn’t merely a virtuoso in the OR but also flouts the callous-egomaniac stereotype of neurosurgeons. What a daunting model to live up to!&lt;/p&gt;&lt;p&gt;We eavesdrop on one of Bederson’s chief residents, soon to move on from Mount Sinai, as he does his last prep work for the master—parting a patient’s hair and applying gel before exposing the “pearly jelly” of the brain. “I’ll be opening a barbershop,” he jokes. “Doing similar stuff, just slightly less stressful.” Next up for me in the series: Kate Bolick’s &lt;i&gt;Becoming a Hair Stylist. &lt;/i&gt;&lt;/p&gt;</content>
    <author>
      <name>Ann Hulbert</name>
      <uri>http://local.theatlantic.com/author/ann-hulbert/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/2019/03/0419_c2c_neurosurgeon/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Simon &amp; Schuster</media:credit>
    </media:content>
    <title type="html">Brain Surgery, Up Close</title>
    <link href="https://local.theatlantic.com/magazine/archive/2019/04/becoming-a-neurosurgeon-john-colapinto/583234/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T13:00:00-04:00</published>
    <updated>2019-03-16T13:00:21-04:00</updated>
    <summary type="html">Watching a neurosurgeon at work is awe- and cringe-inducing.</summary>
    <id>tag:theatlantic.com,2019:39-583234</id>
  </entry>
  <entry>
    <content type="html">&lt;figure&gt;&lt;img alt="" height="882" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/CULT_Omni_Parker_Ellen_Lead/e0cea3ff2.jpg" width="672"&gt;&lt;figcaption class="credit"&gt;Hsiao-Ron Cheng&lt;/figcaption&gt;&lt;/figure&gt;&lt;p class="dropcap"&gt;“T&lt;span class="smallcaps"&gt;hank you so much!&lt;/span&gt; I appreciate it,” says Ellen DeGeneres, bobbing and bowing and volleying her gaze into the screaming tiers of her studio audience. “Thank you! I feel the same way about you!” Up and down, left and right, that take-no-prisoners soul-seeking stare, that ice-glare of empathy. “I feel like you’re not satisfied unless I look at each and every one of you. I feel like I’m trying to see all of you and wave, and yet I can’t do it.” Neon sprig of a haircut; space-age ears; pizzicato physicality and readiness, like she might start juggling or break-dancing. “But I’ll try to get every single bit of eye contact I can …” And then she straightens and looks into the camera, dings it with her Ellen-beam of crazed and searching blue. Oh yes, Ellen, here I am, on a Monday afternoon. You’ve found me.&lt;/p&gt;&lt;p&gt;&lt;i&gt;The Ellen DeGeneres Show&lt;/i&gt;, popularly known as just &lt;i&gt;Ellen&lt;/i&gt;, is in its 16th season. It made its debut during the reign of Bush II. It effervesced in the Obama era. It has survived the internet. More than survived—it has &lt;i&gt;absorbed&lt;/i&gt; it, very comfortable with memes, viral videos, all of that. Though it operates according to the conventional dream logic of the daytime talk show (you’re talking with Michael Bublé, then you’re cooking, then your mother appears), it produces extra amounts of serotonin, extra wobbly bubbles of feel-good. It promotes, relentlessly, the idea of being kind. &lt;span class="smallcaps"&gt;be kind&lt;/span&gt; says the &lt;i&gt;Ellen&lt;/i&gt; hat. &lt;span class="smallcaps"&gt;be kind&lt;/span&gt; says the &lt;i&gt;Ellen&lt;/i&gt; mug. “Be kind to one another,” says Ellen herself, at the end of every episode. Be kind, goddammit!&lt;/p&gt;&lt;p&gt;Ellen helps people—with her show’s famous munificence, spraying out gift cards, heads of lettuce, plane tickets, wads of cash to the lucky and the strapped; and more profoundly with the mood-elevating properties of her Ellen-ness. I have friends—you probably do too—for whom an &lt;i&gt;Ellen&lt;/i&gt; viewing habit, at the moment of need, worked better than Zoloft. (She also helps gorillas, through the Ellen DeGeneres Wildlife Fund.)&lt;/p&gt;&lt;p&gt;And now she’s thinking about leaving the show behind. Her contract is up next year, and &lt;a href="https://www.nytimes.com/2018/12/12/arts/television/ellen-degeneres.html"&gt;a recent interview with &lt;i&gt;The&lt;/i&gt; &lt;/a&gt;&lt;i&gt;&lt;a href="https://www.nytimes.com/2018/12/12/arts/television/ellen-degeneres.html"&gt;New York Times&lt;/a&gt; &lt;/i&gt;found her mulling her next move. Her 2018 Netflix special, &lt;i&gt;Relatable&lt;/i&gt;, was a slightly shaky return to stand-up, a mishmash of not-altogether-disarming jokes about her enormous wealth and confessions of kindness fatigue. (“I’m the ‘Be kind’ girl … I shouldn’t even have a horn in my car. There’s no reason for me to have a horn. I can’t honk, ever, at anyone.”) The audience is at her mercy as always, but the material is a work in progress. She’s in flux. So in the fourth week of the federal-government shutdown, with trash choking the national parks, frustration silting up the system, and ordinary reality beginning to fizz and flicker in its frame, I gave Ellen my full attention.&lt;/p&gt;&lt;p&gt;“Before you get going, can I say something?” asks &lt;i&gt;Good Morning America&lt;/i&gt;’s Robin Roberts, a guest on Monday’s show. “Can I say thank you for what you bravely did more than 20 years ago?” Roberts, openly gay since 2013, is referring of course to Ellen’s 1997 visible-from-space coming-out. She did it in a &lt;i&gt;Time&lt;/i&gt; cover story, and then on &lt;i&gt;Oprah&lt;/i&gt; (“When did you know that you were gay? Is it something like &lt;i&gt;ding-ding-ding-ding-ding&lt;/i&gt;—gay bells go off?” “I didn’t hear any bells”) and on her sitcom, &lt;i&gt;Ellen. &lt;/i&gt;Very brave, very life-giving, very Ellen. Also very good for ratings.&lt;/p&gt;&lt;p&gt;Then they dropped off. ABC yanked her sitcom in 1998, and Ellen entered (in mega-showbiz terms) the wilderness years. A place of pain and no work. Not quite &lt;i&gt;no&lt;/i&gt; work: She played Dory in &lt;i&gt;Finding Nemo.&lt;/i&gt; But a depression, a sense of obscurity. From which she emerged in 2003 with her daytime talk show, her magical zone of acceptance, her Trump rally in reverse. Minorities welcome. Vulnerabilities celebrated. Thumbs-up for everyone—cancer survivors, hurricane survivors, &lt;a href="https://www.youtube.com/watch?v=Qr6yi7Tc11o"&gt;a survivor of the Pulse nightclub shooting (comforted by special guest Katy Perry&lt;/a&gt;). Her journey to this point, her quest to live her truth, has been an American epic, and her people know all about it. “Bless you,” says the gleaming Roberts, and they go wild with approval.&lt;/p&gt;&lt;p&gt;“Nobody’s paying to see a nice person.” Jerry Seinfeld, considering the particular qualities of Ellen as he talked with her on his show &lt;i&gt;Comedians in Cars Getting Coffee&lt;/i&gt;, was definitive. Why do people like Ellen so much? It can’t just be niceness—humdrum, milky niceness. You’re nice, I’m nice, who cares? No, the source of her appeal lies elsewhere: in the tension between the huggy, all-tolerating, gorilla-preserving, mid-afternoon pluralism that is the Ellen mission, and the nightclub sharpness, the side-of-the-mouth zingers, that are the Ellen style. She came up as a comedian. She’s still a comedian. When old homophobic tweets cost Kevin Hart his Oscars hosting gig, &lt;a href="https://www.theatlantic.com/entertainment/archive/2019/01/kevin-hart-ellen-oscars-and-phantom-apology/579475/?utm_source=msn"&gt;she rallied to the defense of her fellow comic&lt;/a&gt;. Her Netflix special features a single, mildly explosive use of the word &lt;i&gt;fuck&lt;/i&gt;, and you can feel the recoil from the gentle &lt;i&gt;Ellen&lt;/i&gt; ultra-fans, the hard-core softies, in the audience. But a kind of cushioned ribaldry is part of her thing: “I don’t know a lot about balls, Heidi,” she once told Heidi Klum while they were making meatballs on her show. Sometimes she says nothing at all, and that works too. The point is Ellen, listening: the high gleam in her eye, the energy field of her comic intelligence.&lt;/p&gt;&lt;p&gt;On Wednesday, Ellen makes some Trump jokes, reprising Dory’s “Just Keep Swimming” song from &lt;i&gt;Finding Nemo&lt;/i&gt;, but with updated lyrics: &lt;i&gt;Just keep swimming. Swimming, swimming, even if you don’t agree with the president. And you think he might be working for the Russians. Just keep swimming, swimming …&lt;/i&gt; On Thursday, she isn’t there; Goldie Hawn and Kate Hudson guest-host the show. They make a smoothie with Gwyneth Paltrow. It’s mesmerizingly anodyne. Without Ellen—her brand, her buzz—it’s all fluff, deep fluff, narcotic and faintly sinister. Three o’clock: the slack waistband of the day. They’re out there, half-watching, the trapped American millions, the furloughed by life, the hospitalized and the immobilized and the incarcerated. Give them some substance, for Christ’s sake: a proverb, a fillip, a laugh, &lt;i&gt;something. &lt;/i&gt;&lt;/p&gt;&lt;aside class="callout-placeholder" data-source="curated"&gt;&lt;/aside&gt;&lt;p&gt;Ellen’s back on Friday—phew—and she does a monologue about the weather, because it’s been raining in L.A. “We need the rain, though, we do … It helps everything grow. This is true—I’m told Sofia Vergara grew two cup sizes.” (Hoots of illicit mirth from the audience, Ellen grinning knowingly.) “That’s how they grow, they get watered.” And there, into the precincts of her forgiveness, goes the leering and bulbous-eyed shade of Rodney Dangerfield. Smut becomes soapy at her touch. In a moment, Samuel L. Jackson will share his holiday snaps, and Ellen will deliver $20,000 to two sisters, federal workers both, going broke during the shutdown.&lt;/p&gt;&lt;p&gt;Ellen was &lt;a href="https://www.youtube.com/watch?v=dCsr0CNqB3g&amp;amp;t="&gt;snuggly with the Obamas&lt;/a&gt;. Barack came on her show and they danced; Michelle came on her show and they had a push-up contest. Are they all gone, those cozy vibes? Is Ellen besieged, in her Colosseum of kindness, by the snarling politics of the hour? She told the &lt;i&gt;Times&lt;/i&gt; that she doesn’t even read the news anymore (although her writers clearly do)—too distressing. It must be tiring, being a joy-delivery system in this environment. Who &lt;i&gt;wouldn’t&lt;/i&gt; want to drop an f-bomb? For the moment, though, her show is more important than ever before. Her rainbow wafts of diversity and acceptance are a kind of alternative news source. Trump rallies are about acceptance too, of course: &lt;i&gt;Hey, you—you with the anger, you with the unspeakable thoughts. We have a place for you here.&lt;/i&gt; It’s a very American thing, this wild invitation to be yourself. But to be the good, kind, self-regulating, meatball-making version of yourself—that’s the ticket. And that’s where Ellen comes in, mighty as Russell Crowe in &lt;i&gt;Gladiator&lt;/i&gt;. At her command, unleash tolerance.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;small&gt;&lt;i&gt;This article appears in the April 2019 print edition with the headline “Killing With Kindness.”&lt;/i&gt;&lt;/small&gt;&lt;/p&gt;</content>
    <author>
      <name>James Parker</name>
      <uri>http://local.theatlantic.com/author/james-parker/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/2019/03/CULT_Omni_Parker_Ellen_Lead/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Hsiao-Ron Cheng</media:credit>
    </media:content>
    <title type="html">Killing It With Kindness</title>
    <link href="https://local.theatlantic.com/magazine/archive/2019/04/ellen-degeneres-the-ellen-show/583225/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T09:00:00-04:00</published>
    <updated>2019-03-16T09:49:03-04:00</updated>
    <summary type="html">Ellen DeGeneres, daytime superstar, is itching to try something new. But America needs the old Ellen more than ever before.</summary>
    <id>tag:theatlantic.com,2019:39-583225</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;NEW YORK CITY—The prayer space at the Islamic Center at New York University is like any other college conference room: big windows, tall ceilings, retro carpeting. But when it’s transformed for Friday prayers, called &lt;em&gt;jummah&lt;/em&gt;, there’s a certain familiarity to it too: rows of tape showing worshippers where to sit, a line of chairs dividing women from men, people sitting cross-legged and chatting. This prayer space is similar to the two mosques, thousands of miles away in New Zealand, where 49 worshippers were killed and scores of others were injured by a gunman on Friday.&lt;/p&gt;&lt;p&gt;For Mohammed Hojaij, a junior at NYU who serves on the board of the Muslim Students Association, that’s what was most sickening as he watched the video of the attack that was allegedly posted by the shooter: “Looking at the carpet, the design, the greeting at the door,” seeing how similar it was to the mosque he grew up attending in Dearborn, Michigan, “it was almost a part of me,” he said. “I felt it.”&lt;/p&gt;&lt;p&gt;To the group of young Muslims who showed up for&lt;em&gt; &lt;/em&gt;prayers on Friday, the deadly shooting in Christchurch and the ugly ideology that apparently motivated it do not feel far away. They see similar versions of white supremacy and anti-Muslim rhetoric all around them in America. Many of them are too young to remember 9/11, or were barely even born when it happened; their formative moment is happening now, in the shadow of ascendant white nationalism. Young Muslims are scared and grieving over what happened in New Zealand. But they’re also ready to get political.&lt;/p&gt;&lt;p&gt;&lt;cite&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2017/03/american-muslims-demographics/520239/?utm_source=msn"&gt;[Read: American Muslims are young, politically liberal, and scared]&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;Because New Zealand is located in a time zone 17 hours ahead of New York City’s, Muslim students at NYU had the whole brutal day to think about whether they wanted to attend &lt;em&gt;jummah &lt;/em&gt;prayers. “It was difficult … to decide whether or not it was appropriate for people to go out,” said Hojaij. “It felt like it was almost dangerous—like there was still a threat looming.” Asad Dandia, an NYU alumnus who still volunteers at the Islamic Center, told his mother in Brooklyn not to leave her house without him. He was worried that someone might target her, because she wears a hijab and doesn’t speak English very well.&lt;/p&gt;&lt;p&gt;In the end, though, people turned out—a lot of people. More than 300 men and women crowded into the space, standing in rows, shoulder to shoulder, to pray. Omer Malik, an NYU senior who serves as president of the Muslim Students Association, said the turnout was as big as he’s seen it in his four years at school.&lt;/p&gt;&lt;p&gt;The message shared at the beginning of prayers was emotional. “If you’re angry, man, it’s okay to be angry. If you feel scared, it’s okay to be scared,” said Imam Khalid Latif, the executive director of the Islamic Center. “We’re going to do what we can to make sure tomorrow is as best as it possibly can be … This is divine promise. Indeed, with hardship, there is relief.” The room was completely still as Latif spoke. Several students were crying.&lt;/p&gt;&lt;p&gt;But Latif’s message was not just about grieving: He stated forcefully, in a voice edged with emotion, that the New Zealand shooting was driven by a dangerous ideology. “That act is … rooted in the same white-supremacist mind-set that underlies the very systems and structures of the country we live in,” he said. “On a globalized level, it is running rampant.”&lt;/p&gt;&lt;p&gt;&lt;cite&gt;&lt;a href="https://www.theatlantic.com/international/archive/2019/03/violence-new-zealand-echoes-past-terrorist-patterns/585043/?utm_source=msn"&gt;[Read: How white-supremacist violence echoes other forms of terrorism]&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;In his role as a Muslim chaplain, Latif told me afterward, he is responsible for caring for students, but also coaching them to use their voices. “Our young people have shown over and over that they can be a real catalyst for change,” he said. “Organized evil will triumph over disorganized righteousness.” In his message to the community, he explicitly encouraged students to get politically active. “We are in the beginning of 2019, and 2020 is ahead. And each one of us has to say to ourselves what our commitment will be,” he told the room. “One of the most American things we can do is speak out in protest against injustice in any administration’s policy.”&lt;/p&gt;&lt;p&gt;The students in the room seemed to resonate with this message. “Because of everything that’s been happening in this country since 2016, politically, we’ve had to come together as a community in the MSA,” said Maha Hashwi, a junior who serves on the board of the Muslim Students Association. The students have been working on building partnerships with other groups on campus, added Malik, and they’re not afraid to be outspoken about political issues.&lt;/p&gt;&lt;p&gt;They are coming of age in a political environment in which anti-Muslim rhetoric is common; a number of students told me they were devastated, but not surprised, to hear about the New Zealand attack. “We are the generation that’s going to do something about it,” said Samina Saifee, a sophomore. “We are young, we’re passionate, and we understand things in a different way.”&lt;/p&gt;&lt;p&gt;From a demographic point of view, Saifee may be right. &lt;a href="https://www.theatlantic.com/politics/archive/2017/03/american-muslims-demographics/520239/?utm_source=msn"&gt;As recently as 2017, polling from the Institute for Social Policy and Understanding&lt;/a&gt; showed that American Muslims as a whole are much younger than other religious groups, with nearly 40 percent of Muslim adults aged 29 and under. They’re overwhelmingly sympathetic to liberal and progressive policies.&lt;/p&gt;&lt;p&gt;And they live with a lot of fear: &lt;a href="https://www.theatlantic.com/politics/archive/2017/03/american-muslims-demographics/520239/?utm_source=msn"&gt;As I reported in 2017&lt;/a&gt;, roughly one-fifth of Muslims under 30 have made plans to leave the United States if they need to, and nearly half say they fear being the victim of a white-supremacist attack. The shooting in New Zealand confirmed what many young American Muslims have grown up knowing: White-supremacist individuals and groups want to hurt people like them. In Christchurch, the white supremacist succeeded.&lt;/p&gt;&lt;p&gt;&lt;cite&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2017/06/haroon-moghul-how-to-be-a-muslim/528552/?utm_source=msn"&gt;[Read: Trying to be an apolitical Muslim in America]&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;A growing number of Muslims in their 30s and 40s have become visible leaders in U.S. politics—figures such as Rashida Tlaib and Ilhan Omar, the newly elected Muslim congresswomen, or Linda Sarsour, the Palestinian activist who co-headlined the Women’s March. Latif is one of those leaders: He told me that in the wake of the New Zealand attack, he got calls from the New York City comptroller’s office and the office of the city’s mayor, Bill de Blasio. For leaders like Latif, September 11 was the formative moment for their identity as Muslims in America, and for many, that experience drove them to get involved in politics.&lt;/p&gt;&lt;p&gt;But for the next generation of Muslim leaders, these students who are still in school, 9/11 is something they’ve only heard spoken about by their parents and other elders. “The young kids, for whom this is the first Islamic center that they’ve ever been to, their first time making a real community—this is what their first experience has to be, and that’s just very unfair to them,” said Dandia. “This could have been their 9/11 moment.”&lt;/p&gt;</content>
    <author>
      <name>Emma Green</name>
      <uri>http://local.theatlantic.com/author/emma-green/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_120224155362/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Frank Franklin II / Associated Press</media:credit>
      <media:description>Imam Khalid Latif, the executive director of the Islamic Center at NYU, speaking in February 2012</media:description>
    </media:content>
    <title type="html">‘This Could Have Been Their 9/11 Moment’</title>
    <link href="https://local.theatlantic.com/politics/archive/2019/03/muslims-nyu-new-zealand-shooting/585070/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T08:00:00-04:00</published>
    <updated>2019-03-16T22:53:02-04:00</updated>
    <summary type="html">A generation of young American Muslims is coming of age in a time when a mass shooting at a mosque is horrifying, but not surprising.</summary>
    <id>tag:theatlantic.com,2019:50-585070</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;The director Jia Zhangke filmed some of the first shots of &lt;em&gt;Ash Is Purest White&lt;/em&gt; in his home province of Shanxi, China, using the grainiest of digital video. The footage is nondescript—it just captures local folk on a bus—but it’s a pointed jolt of authenticity that helps set the stage for a decades-spanning drama of love and betrayal in a drastically changing country. Jia, whose stark, sometimes unflattering realism has led to repeated clashes with Chinese &lt;a href="https://www.newyorker.com/magazine/2009/05/11/the-long-shot"&gt;censors&lt;/a&gt;, possesses an unparalleled skill for creating a tangible sense of time and place to anchor his sweeping stories.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Ash Is Purest White &lt;/em&gt;is the ninth feature from Jia, and it bears many of the hallmarks of his past works. The film stars the director’s wife and muse, Zhao Tao, who has appeared in all but two of his movies, as a woman living through dramatic upheaval in Shanxi, a northwest province known for spectacular landscapes and a massive coal-mining industry. Like Jia’s 2006 masterpiece, &lt;em&gt;Still Life&lt;/em&gt;, &lt;em&gt;Ash Is Purest White&lt;/em&gt; spends a good chunk of its plot in the area of Hubei province that’s being irrevocably transformed by the building of the Three Gorges Dam. And like his last two films, &lt;em&gt;A Touch of Sin &lt;/em&gt;and the staggering&lt;a href="https://www.theatlantic.com/entertainment/archive/2016/12/mountains-may-depart/511166/?utm_source=msn"&gt; &lt;em&gt;Mountains May Depart&lt;/em&gt;&lt;/a&gt;, the movie unfolds as a triptych, with three distinct chapters in varying tones.&lt;/p&gt;&lt;p&gt;At times, &lt;em&gt;Ash Is Purest White &lt;/em&gt;feels a little like a greatest-hits recap for Jia, who emerged as a director in the late ’90s to become one of China’s foremost filmmakers. The plot of &lt;em&gt;Ash Is Purest White &lt;/em&gt;is a little more recognizably mainstream than Jia’s other work; it’s the tale of a young woman whose love for a local gangster eventually lands her in jail, and her odyssey to reconnect with him after she gets out. But this mob-movie romance, told with Jia’s usual languid pacing and oblique morals, wanders in surprising new directions, both for Jia and for the tropes he’s taking on.&lt;/p&gt;&lt;p&gt;When &lt;em&gt;Ash Is Purest White &lt;/em&gt;begins, Zhao Qiao (Zhao) is a big fish in a fairly small pond: the girlfriend of the local crime boss, Guo Bin (Liao Fan), in her hometown of Datong. Guo is every bit the local bigshot, smoking endless cigarettes, resolving petty disputes, and meeting with shady businessmen—a routine interrupted by the occasional trip to the disco (Jia’s&lt;a href="https://film.avclub.com/director-jia-zhangke-on-technology-relationships-and-1798244155"&gt; fondness&lt;/a&gt; for cheesy American pop music, also a&lt;a href="https://www.theatlantic.com/entertainment/archive/2016/12/mountains-may-depart/511166/?utm_source=msn"&gt; centerpiece&lt;/a&gt; of &lt;em&gt;Mountains May Depart, &lt;/em&gt;is all over this movie). But young pretenders are beginning to nip at Guo’s heels. Soon enough, a public confrontation with her boyfriend’s rivals ends with Zhao being sent to prison for five years.&lt;/p&gt;&lt;p&gt;The Datong scenes are bravura stuff from Jia, who has always excelled at photographing the clamor and confusion of an industrial city. Yet the first third of &lt;em&gt;Ash Is Purest White &lt;/em&gt;is fairly stationary, with Guo sitting atop his petty empire. What comes next is both quieter and more dynamic: an unhurried odyssey through mainland China, as Zhao leaves prison, journeys down the Yangtze River in search of a new life with Guo, and sees, for the first time, the ways in which her homeland has already shifted beyond recognition and will continue to do so. On boats, buses, and trains, Zhao meets people who are pursuing brighter futures in some form or another. Her own quest for answers and fulfillment, however, is never quite realized.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Ash Is Purest White &lt;/em&gt;is an immersive, 136-minute epic that somehow feels longer, even though it’s told entirely through Zhao’s often limited perspective as a tourist or observer. Jia makes each new bustling or desolate locale that Zhao encounters an adventure in itself, while reaffirming that the trappings of her former life are unattainable. Eventually, Zhao does end up back in her home province, though it’s almost a foreign landscape, a city left in the dust by China’s rapid 21st-century innovation. The film deals with individual loss, growth, and revolution amid countrywide upheaval. Despite the grand scale, like all of Jia’s works, &lt;em&gt;Ash Is Purest White &lt;/em&gt;leaves questions of good and evil to the viewer—this isn’t a philosophical story, but a personal one&lt;strong&gt;. &lt;/strong&gt;&lt;/p&gt;</content>
    <author>
      <name>David Sims</name>
      <uri>http://local.theatlantic.com/author/david-sims/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/ash/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Cohen Media Group</media:credit>
      <media:description>Zhao Tao in 'Ash Is Purest White'</media:description>
    </media:content>
    <title type="html">Ash is Pure</title>
    <link href="https://local.theatlantic.com/entertainment/archive/2019/03/ash-purest-white-review-jia-zhangke/585013/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T08:00:00-04:00</published>
    <updated>2019-03-26T11:15:25-04:00</updated>
    <summary type="html">The latest film from the Chinese auteur Jia Zhangke is a decades-spanning tale of love and betrayal in a drastically changing country.</summary>
    <id>tag:theatlantic.com,2019:50-585013</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;The attack dogs have been let loose.&lt;/p&gt;&lt;p&gt;That much was clear from the &lt;u&gt;&lt;a href="https://apnews.com/5e747986f9204bd88ed0b38ab314c22a"&gt;stark message&lt;/a&gt;&lt;/u&gt; North Korea delivered this week after &lt;u&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/after-hanoi-trump-knows-he-cant-fix-north-korea-alone/584611/?utm_source=msn"&gt;the collapse&lt;/a&gt;&lt;/u&gt; of Donald Trump’s summit with Kim Jong Un in Vietnam last month: Kim is considering abandoning nuclear negotiations with the United States and resuming the nuclear and missile tests that brought the two countries to the &lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2018/01/duckworth-trump-north-korea/551381/?utm_source=msn"&gt;brink of war&lt;/a&gt;&lt;/u&gt; early on in the Trump administration.&lt;/p&gt;&lt;p&gt;Just as important as the message was the messenger. North Korea’s vice foreign minister, Choe Son Hui, delivered the warning during a briefing in Pyongyang on Friday with foreign diplomats and journalists. Choe is an &lt;u&gt;&lt;a href="https://www.38north.org/2016/10/mmadden101116/"&gt;experienced diplomat&lt;/a&gt;&lt;/u&gt; (and a former English-language interpreter) who has dealt with Americans in official and unofficial talks for years. She knows the America file cold. But she also has a reputation for fiery remarks&lt;em&gt;—&lt;/em&gt;like when she &lt;u&gt;&lt;a href="https://www.reuters.com/article/us-northkorea-missiles-usa-russia/having-nuclear-weapons-matter-of-life-and-death-for-north-korea-agency-idUSKBN1CP1IZ"&gt;vowed&lt;/a&gt;&lt;/u&gt; to “respond to fire with fire” at the height of military tensions with the United States in 2017, or that time she nearly deep-sixed the president’s first summit with North Korea’s leader in 2018 by &lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2018/05/libya-trump-kim/561158/?utm_source=msn"&gt;denouncing&lt;/a&gt;&lt;/u&gt; U.S. Vice President Mike Pence as a “political dummy” and threatening a “nuclear-to-nuclear showdown” with the United States.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/after-hanoi-trump-knows-he-cant-fix-north-korea-alone/584611/?utm_source=msn"&gt;Read: Trump knows he can’t fix North Korea alone&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Choe’s principal foil in the Trump administration is National Security Adviser John Bolton, who prompted her outburst against Pence in the first place by &lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2018/05/libya-trump-kim/561158/?utm_source=msn"&gt;calling on&lt;/a&gt;&lt;/u&gt; the North Koreans to ship their whole nuclear program to the United States the way Libya did. Bolton &lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2018/03/john-bolton-north-korea/556370/?utm_source=msn"&gt;has been arguing&lt;/a&gt;&lt;/u&gt; since he served in the George W. Bush administration that North Korea’s leaders have no intention of negotiating away their nuclear weapons and that the only way to remove the grave threat their arsenal poses to the United States is through regime change brought about by economic pressure or a preventive war. (He’s mostly refrained from expressing these views since joining the Trump administration last April.)&lt;/p&gt;&lt;p&gt;And Bolton, whom Choe blamed on Friday for poisoning the Vietnam summit with “gangster-like” demands for North Korea to commit to full denuclearization before receiving sanctions relief, has been sicced on the North Koreans as well since the showdown in Vietnam. The national security adviser, who largely deferred (at least publicly) to Secretary of State Mike Pompeo on diplomacy with North Korea, has emerged in recent weeks as the administration’s most prominent spokesperson on the nuclear talks.&lt;/p&gt;&lt;p&gt;Zipping around the Sunday shows, he’s urged North Korea to relinquish all its weapons of mass destruction as part of a “big deal” and pledged to maintain and perhaps escalate economic sanctions against Pyongyang if Kim doesn’t. He’s done all this with relish. “The North Koreans were very disappointed we didn’t buy their bad deal,” he &lt;u&gt;&lt;a href="https://www.foxnews.com/transcript/rep-debbie-dingell-on-what-michael-cohens-testimony-means-for-future-investigations-of-president-trump"&gt;said&lt;/a&gt;&lt;/u&gt; of Kim’s offer in Vietnam to dismantle his main nuclear complex in exchange for relief from most sanctions. “That’s life in the big city.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/how-long-will-us-live-nuclear-north-korea/583990/?utm_source=msn"&gt;Read: How long will the U.S. live with a nuclear North Korea?&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;It’s the kind of barbed rhetoric that Bolton and Choe avoided when their bosses were championing the results of their first summit in Singapore last year and promising to deliver a breakthrough when they met again.&lt;/p&gt;&lt;p&gt;The unmuzzling of the attack dogs on each side is a reminder that Trump and Kim are each contending with a hard-line faction at home that views the diplomacy they’re engaged in as a hopeless and dangerous endeavor. As Choe noted this week, Kim decided to press ahead with diplomacy in Vietnam despite the fact that military leaders are petitioning him not to give up his nuclear program.&lt;/p&gt;&lt;p&gt;But it’s also a sign of the paradoxical outcome of a summit that was intended to dramatically defuse tensions between North Korea and the United States: Each side has come away with the recognition that despite all the pageantry, there’s a huge gulf between their positions, and with the conviction that exerting pressure is the key to getting the other side to come around to its preferred approach. The Americans think sanctions will force the North Koreans to fully renounce their nuclear program. The North Koreans think the further development of their nuclear arsenal—through ongoing production of nuclear material, recent &lt;u&gt;&lt;a href="https://docs.google.com/document/d/1O6rzj1RsNC-0HLqVP9dvLPJ4f8z-AitHX0nZ9n6OJi4/edit"&gt;reversals&lt;/a&gt;&lt;/u&gt; of moves to dismantle a rocket site, and now the specter of more tests of ballistic missiles and nuclear weapons—will compel the Americans to settle, for the time being at least, for something far short of full denuclearization. Tough talk from Bolton and Choe is a form of pressure.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/video/index/584713/alaska-icbm/?utm_source=msn"&gt;Watch: ‘Alaska DGAF’: North Korea’s missile test doesn’t faze Alaskans&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;There is a very fine line, however, between applying pressure and shattering a delicate and deteriorating diplomatic process. As Chung-in Moon, a foreign-policy adviser to South Korea’s president, &lt;u&gt;&lt;a href="https://www.foreignaffairs.com/articles/north-korea/2019-03-14/next-stage-korean-peace-process"&gt;wrote&lt;/a&gt;&lt;/u&gt; this week, citing the way in which the spat between Choe and Pence nearly sabotaged the first Trump-Kim summit, “Mutual restraint in word and deed is essential for the resuscitation of negotiation. The surest way to derail the negotiations and precipitate a potential catastrophe would be for North Korea to engage in any nuclear or missile tests.”&lt;/p&gt;</content>
    <author>
      <name>Uri Friedman</name>
      <uri>http://local.theatlantic.com/author/uri-friedman/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTX6OYU0/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Leah Millis / Reuters</media:credit>
      <media:description>Kim Jong Un and Donald Trump look on during the extended bilateral meeting at the North Korea–U.S. summit in Hanoi, Vietnam, on February 28.</media:description>
    </media:content>
    <title type="html">The U.S. and North Korea Are Back to Talking Tough</title>
    <link href="https://local.theatlantic.com/politics/archive/2019/03/north-korea-warns-it-may-end-nuclear-talks-us/585115/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T07:00:00-04:00</published>
    <updated>2019-03-16T15:15:41-04:00</updated>
    <summary type="html">Pyongyang’s latest threats don’t necessarily mean diplomacy is dead. But they are a sign of just how deadlocked nuclear talks have become.</summary>
    <id>tag:theatlantic.com,2019:50-585115</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;One of the U.K.’s propaganda films in World War II remixed portions of Leni Riefenstahl’s &lt;i&gt;Triumph of the Will&lt;/i&gt; by overdubbing various Nazi leaders’ speeches at the 1934 Reich Party Congress at Nuremberg &lt;a href="https://www.youtube.com/watch?v=NhN1qDoqOGM"&gt;into English&lt;/a&gt;. In this version, Adolf Hitler and his lieutenants confessed to being pitiful and weak. “I grew into a discontented and neurotic child,” the führer said to rallying masses. “My lungs were bad. My mother spoilt me and secured my exemption from military service. Consider my triumphant path to power.”&lt;/p&gt;&lt;p&gt;The &lt;a href="https://books.google.com/books?id=3joSEQGA5bEC&amp;amp;pg=PA41&amp;amp;lpg=PA41&amp;amp;dq=%22I+grew+into+a+discontented+and+neurotic+child%22&amp;amp;source=bl&amp;amp;ots=rOASNwHH5h&amp;amp;sig=ACfU3U0foCMSjtQYjlsPXBlSDy2p5zWXqQ&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ved=2ahUKEwiZ0_mo4YThAhXm3YMKHUXRCpMQ6AEwAXoECAAQAQ#v=onepage&amp;amp;q=%22I%20grew%20into%20a%20discontented%20and%20neurotic%20child%22&amp;amp;f=false"&gt;author of the words&lt;/a&gt; spoken in the satire was Dylan Thomas, the Welsh poet who had a record of &lt;a href="https://www.discoverdylanthomas.com/mocking-mussolini-fascists-dylan-thomas-responded-rise-far-right-guest-blog-dr-paul-jackson"&gt;jeering at the fascists&lt;/a&gt; seeking power in Europe. In a particularly sick perversion of authorial intent, Thomas’s most famous poem, 1951’s “Do Not Go Gentle Into That Good Night,” opens the 74-page manifesto written by one of the alleged murderers of 49 people at two New Zealand mosques on Friday.&lt;/p&gt;&lt;p&gt;The shooter’s document goes on to &lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/new-zealand-shooters-manifesto-will-continue-spread/585085/?utm_source=msn"&gt;invoke fascist and white-separatist ideology&lt;/a&gt; as the rationale for the murder spree. Certain passages of meme-driven &lt;a href="https://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt;sarcasm&lt;/a&gt;&lt;a href="http://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt; appear aimed at amping up political divides and creating confusion&lt;/a&gt;. But quoting Thomas’s poetry is not like trollingly praising a black right-wing pundit or a popular and putatively apolitical video-gamer, as the shooter did. The manifesto advocates direct terroristic action by like-minded racists, and Thomas’s refrain “Rage, rage against the dying of the light”—believed to have been written initially about the poet’s ailing father—may just have been straightforwardly repurposed to fit that violent goal.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/technology/archive/2019/03/how-terrorism-new-zealand-spread-social-media/585040/?utm_source=msn"&gt;Read: Social media are a mass shooter’s best friend&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Two other poems are fully quoted in the manifesto. One is a doctored version of Rudyard Kipling’s “The Beginnings” that replaces the original’s refrain “When the English began to hate” with “When the Saxon began to hate.” The rest of the poem, originally written about the anti-German sentiment that took root in the U.K. during World War I, is untouched. In the context of the manifesto, the verses might as well be about online radicalization: “It was not preached to the crowd. / It was not taught by the state. / No man spoke it aloud / When the Saxon began to hate.”&lt;/p&gt;&lt;p&gt;The manifesto closes with “Invictus,” by the 19th-century English writer William Ernest Henley. With its avowal that “my head is bloody, but unbowed,” it’s among the most commonly cited poems ever, with famous invocations including by Nelson Mandela while he was imprisoned for resisting South African apartheid and Timothy McVeigh before his execution for killing 168 people in the Oklahoma City bombing. Henley wrote the poem in 1875 while recovering from surgery on his leg. It is a straightforward statement of resilience in the face of death, or, as Henley puts it, “the Horror of the shade”: “I thank whatever gods may be / For my unconquerable soul.”&lt;/p&gt;&lt;p&gt;These are not obscure poems, and the varying circumstances around their creation do not tightly align with the New Zealand terrorist’s ideology (though, it’s worth noting, Kipling’s legacy is bound up with &lt;a href="https://io9.gizmodo.com/reminder-rudyard-kipling-was-a-racist-fuck-and-the-jun-1771044121"&gt;racist imperialism&lt;/a&gt;). He chose them, plausibly, to undergird his broader message about taking the difficult but necessary action in the face of great odds. He could have turned anywhere in Western culture for other odes to lonely, steely bravery—among the most common story tropes there are—but it may be no coincidence that he drew specifically from the dead-white-male literary canon.&lt;/p&gt;&lt;p&gt;Other mass murderers have invoked different artworks to evoke the same sense of grandiose anti-heroism. James Holmes, who shot up an Aurora, Colorado, movie theater in 2012, found inspiration from the Joker of &lt;em&gt;The Dark Knight&lt;/em&gt;. Dylann Roof, the white supremacist who massacred Charleston churchgoers in 2015, quoted two movie characters in his manifesto. One was Edward Norton’s neo-Nazi in &lt;em&gt;American History X&lt;/em&gt;: “I see all this stuff going on, and I don’t see anyone doing anything about it. And it pisses me off.” The other was the troubled teen vigilante of the 2011 manga adaptation &lt;em&gt;Himizu&lt;/em&gt;: “Even if my life is worth less than a speck of dirt, I want to use it for the good of society.”&lt;b&gt; &lt;/b&gt;The killer’s actions, it was widely noted at the time, betrayed these movies’ underlying critiques of violence and hate.&lt;/p&gt;&lt;p&gt;The language of messianic bravery can be adopted by anyone, of course, including those of noble intent. But there’s a particularly nauseating pattern in it being repeatedly invoked by men who kill groups of defenseless people. The Dylan Thomas work actually most relevant to the New Zealand killer’s case is thus not the one quoted in the manifesto, but the Hitler mockery movie. The Übermensch&lt;em&gt; &lt;/em&gt;rhetoric that still poisons the world, Thomas suggested back then, is but the costume of pathetic men.&lt;/p&gt;</content>
    <author>
      <name>Spencer Kornhaber</name>
      <uri>http://local.theatlantic.com/author/spencer-kornhaber/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_19074670766994/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>AP Photo/Mark Lennihan</media:credit>
      <media:description>People leave the Islamic Cultural Center of New York under increased police security following the shooting in New Zealand.</media:description>
    </media:content>
    <title type="html">When Poems of Resilience Get Twisted for Terrorism</title>
    <link href="https://local.theatlantic.com/entertainment/archive/2019/03/new-zealand-shooting-manifesto-poems-dylan-thomas/585079/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T07:00:00-04:00</published>
    <updated>2019-03-16T15:18:17-04:00</updated>
    <summary type="html">The New Zealand shooter quoted Dylan Thomas and Rudyard Kipling in his manifesto, hijacking the language of bravery in familiar ways.</summary>
    <id>tag:theatlantic.com,2019:50-585079</id>
  </entry>
  <entry>
    <content type="html">&lt;p dir="ltr"&gt;MOUNT VERNON, Iowa—The first woman who asked a question wanted to know about ethanol. E10 or E15?&lt;/p&gt;&lt;p dir="ltr"&gt;This is more than an academic question. The E number is the percentage of the corn-based fuel that can legally be mixed in with gasoline. More ethanol, which President Donald Trump said in October he wants to make the year-round standard, means more corn being used and so more money in the pockets of Iowa farmers, and more jobs for Iowans at processing plants. But more ethanol also means more federal subsidies to pump money in to cover the costs of making the biofuel, and more environmental risks from what would be released by corroding engines.&lt;/p&gt;&lt;p dir="ltr"&gt;Beto O’Rourke’s full answer went on for a bit.&lt;/p&gt;&lt;p dir="ltr"&gt;“How do we free ourselves from a commodity market over which we have no control? We do so by adding value to what we grow at the same time that we meet our energy needs, renewable standards that we have in this country and the crisis of climate change,” he said. “The farmers in Iowa are able to do that. We visited an ethanol facility today: 50 jobs in a community that wants to have high-wage, high-skill, high-investment industry in their hometowns—drawing young people back or keeping them there in the first place. Owned not by some gigantic corporation in another place; owned cooperatively by the farmers that are growing the corn there in the first place. In other words, we’re addressing not just a fuel standard, not just environmental concerns, but we’re reviving rural America in the process. So let’s stand behind and with those farmers. Iowa is showing us the way.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/beto-wants-be-like-obama-announced-more-like-trump/584965/?utm_source=msn"&gt;Read: Beto wants to be Obama—but came off like Trump&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Not included: E10 or E15, or an alternative, or what any of the answers would entail.&lt;/p&gt;&lt;p dir="ltr"&gt;That’s all right, said Mirt Bowers, a retired former vice president of patient services at a local hospital, who asked the question. “I’m not sure he answered,” she said. “I think his position is yes, we need to look at it. I’m not quite sure where he is firmly with the E15.”&lt;/p&gt;&lt;p dir="ltr"&gt;Bowers said she is willing to give O’Rourke a pass. He’s from oil country, she said. He can’t take a clear position, because he has to be careful of the politics back home in Texas, she figured.&lt;/p&gt;&lt;p dir="ltr"&gt;She said this as she waited in a line at the bar afterward, eager to take a photo with O’Rourke on her phone. Bowers said she would expect more of other candidates. Bernie Sanders, Elizabeth Warren, and Kamala Harris, for example, aren’t from oil country, so she’d want a clear answer.&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/betos-announcement-shows-triumph-secular-democrats/585001/?utm_source=msn"&gt;Peter Beinart: Secular Democrats are the new normal&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Earlier in the day, leaving an art gallery in Washington, Iowa, O’Rourke was asked about impeaching Donald Trump. He’d been in favor of it, a reporter pointed out. Was he still?&lt;/p&gt;&lt;p dir="ltr"&gt;“To be clear, I didn’t say that. You asked me one time if I would vote, and I said yes. So I wasn’t out there calling for it, so I think the distinction’s important in this case,” O’Rourke said. “Beyond the shadow of a doubt that the president sought to collude with a foreign power against the United States to undermine our democracy. Beyond a shadow of a doubt the president sought to obstruct justice in the investigation into what happened in 2016.”&lt;/p&gt;&lt;p dir="ltr"&gt;He said that he thinks Trump’s fate will be decided by the 2020 election, and that’s what he’s focused on as a presidential candidate while staying out of the debate in Washington now that he’s no longer a congressman. Was he saying there isn’t time to pursue impeachment before the election, the reporter asked him, or was he saying that he isn’t in favor of impeachment at all?&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/beto-orourke-and-democrats-generation-gap/584926/?utm_source=msn"&gt;Read: The voters Democrats aren’t really fighting over&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;“I’m not asking Congress to do one thing or the other,” he said. “You’re asking me, ‘Has the president committed impeachable offenses?’ Yes. Period.”&lt;/p&gt;&lt;p dir="ltr"&gt;He turned, trying to get to his rental car and drive to the next event. Another reporter stopped him and read him a quotation from when he was running for the Senate, long after he came around to opposing Obamacare when he was first running for Congress. Then, he said that a single-payer, Medicare-for-all sort of program was the best way to ensure that all Americans got the health care they needed. Was he still for that?&lt;/p&gt;&lt;p dir="ltr"&gt;“I think that’s one of the ways to ensure that we get to guaranteed high-quality health care for every single American. I’m no longer sure that that’s the fastest way for us to get there,” O’Rourke said.&lt;/p&gt;&lt;p dir="ltr"&gt;He said, as he’s been saying at every event, that he’s for good health care. He’s interested in a bill that Representative Jan Schakowsky of Illinois has that would keep employer-based insurance, but reinvest in Medicare and have that as an option for whoever wants it. A public option, but not single payer.&lt;/p&gt;&lt;p dir="ltr"&gt;Later in the day, at a podcast taping in Cedar Rapids, he was pressed on more. What about the criticism he’s faced for saying that he helps out with raising his children, but that most of it is on his wife?&lt;/p&gt;&lt;p dir="ltr"&gt;“We have a long way to go. I have got to do everything within my power to do my part. And there’s much more that we can do. Much of it will be guided by the women in my life and the women that I meet,” he said, later adding that on women’s issues overall, he’s glad to see a lot of women running in the primary with him. So there’s “a lot of work left to do, but all of those issues—important. And I’m grateful for a lot of the leadership that a lot of these women are providing right now.”&lt;/p&gt;&lt;p dir="ltr"&gt;Pushed on specifics about reproductive rights by one of the people in the audience, he thanked the woman who’d asked the question for working for Planned Parenthood, condemned the moves of the Texas state legislature and the Trump administration to scale back rights, and reminded people that &lt;em&gt;Roe v. Wade&lt;/em&gt; is in the balance, depending on the Supreme Court appointments that are on the line in the next election.&lt;/p&gt;&lt;p dir="ltr"&gt;“When I talk to people across the state of Texas who may not agree with me on every position,” O’Rourke said, “when I talk about the lives that we are losing, and the health care we are losing out on, I begin to find the common ground.”&lt;/p&gt;&lt;p dir="ltr"&gt;Asked how he’d address gerrymandering as president, O’Rourke spoke about how bad the voter laws are in Texas and how he wants to address “systemic racism.” Then he invoked his success in drawing people out in his own Senate race last year.&lt;/p&gt;&lt;p dir="ltr"&gt;All the answers drew applause.&lt;/p&gt;&lt;p dir="ltr"&gt;As he headed back to his car after the event with the woman who’d asked about ethanol on Friday afternoon, I asked him whether he thought it was unfair for people to be pressing him on specifics two days into his race.&lt;/p&gt;&lt;p dir="ltr"&gt;“I leave it up to them to decide. All I can do is answer the questions that are posed, introduce myself, describe what I think this country can do, and I’m trying to do that,” he said.&lt;/p&gt;&lt;p dir="ltr"&gt;He got in the driver’s seat of the rental and buckled in. He’s driving himself between events, eating submarine sandwiches. He said he was reading two books as he goes: the just released &lt;em&gt;The Uninhabitable Earth&lt;/em&gt;, which describes how climate change will destroy the planet if concrete steps aren’t taken quickly, and Joseph Campbell’s classic &lt;em&gt;The Power of Myth&lt;/em&gt;.&lt;/p&gt;&lt;p dir="ltr"&gt;There were no lines around the block, like there have been for Elizabeth Warren, Kamala Harris, and Bernie Sanders. The crowds for O’Rourke could be measured by the dozens, not the hundreds, about the same number of voters who showed up for Senator Michael Bennet of Colorado and New York City Mayor Bill de Blasio when they came to Iowa a few weeks ago to tease runs of their own—but he had a clump of reporters and photographers tracking him that Bennet, de Blasio, and most of the others in the race could only dream of.&lt;/p&gt;&lt;p dir="ltr"&gt;Events look packed in part because they’ve been in small spaces—coffee shops, a small-town art gallery. O’Rourke doesn’t have the staff to fully plan the events he’s doing, let alone build anything bigger.&lt;/p&gt;&lt;p dir="ltr"&gt;But over his first 48 hours, and with the schedule through the Midwest that’s been released for the days ahead, O’Rourke is running with confidence in his savant understanding of political tactics in the time of Trump and social-media celebrity, and as a sort of endurance test. No other candidate has done as many events on a full Iowa swing as he’s tried to squeeze in. He’s looking to replicate his Senate campaign of last year and to put himself forward as a vessel for what he likes to call the “genius of our democracy”: Pour your hopes and aspirations into him, and he will carry them forward with his spirit of positivity and the level of drive that had him schedule a 5K run on the morning of his third day in the race. Believe in him, because he believes in you, and together, believe in what more America can be.&lt;/p&gt;&lt;p dir="ltr"&gt;Asked earlier on Friday what he thought his challenge would be in this race, he said it was about impressing himself personally on enough voters to win.&lt;/p&gt;&lt;p dir="ltr"&gt;“It’s a big country,” he said, “and traveling to be with everyone—it’s a function of geography and time. But I will work with everything I’ve got.”&lt;/p&gt;&lt;p dir="ltr"&gt;One question that looms over his entry: How much money has he raised online, given how much of a juggernaut he proved to be in his Senate race and the enthusiasm he’s thought to generate online? O’Rourke set that standard himself, writing in one of the emails that he sent to his list on Thursday, “Our momentum right out of the gate will determine whether or not we are competitive.”&lt;/p&gt;&lt;p dir="ltr"&gt;As pretty much all the other candidates have, he announced that he had raised money from all 50 states shortly after jumping in. But while most of the other candidates have released their fundraising totals for the first day or two—Sanders raised nearly $6 million online without specifically asking for a donation—O’Rourke has so far left his own total unspecified.&lt;/p&gt;&lt;p dir="ltr"&gt;“I can’t right now,” he said when a reporter asked him whether he would release the number.&lt;/p&gt;&lt;p dir="ltr"&gt;Well, he could, I pointed out to him.&lt;/p&gt;&lt;p dir="ltr"&gt;“You’re right. I could,” he said. “Let me answer the question better: I choose not to.”&lt;/p&gt;&lt;p dir="ltr"&gt;He has repeated over and over that he won’t knock his competition, that they’re all great, and the number of people running is a credit to the Democratic Party. But he thinks he’s better than all of them, I pointed out to him, since that’s inherent in jumping in late himself.&lt;/p&gt;&lt;p dir="ltr"&gt;His explanation for why is rooted in the Senate race and how he proved able to bring people together, increase turnout, and become a sensation.&lt;/p&gt;&lt;p dir="ltr"&gt;That may be, but along the way, he also lost. His campaign made him a celebrity and an inspiration to many people. It did not make him a senator.&lt;/p&gt;&lt;p dir="ltr"&gt;“We lost by 2.6, but we also, in some larger sense, transformed politics for the better in Texas. You saw people win races that were thought before to be unwinnable,” he said. “In part our campaign in part contributed to those successes and the successes you see down the road.”&lt;/p&gt;&lt;p dir="ltr"&gt;Preparing for O’Rourke’s visit to that bar in Mount Vernon, the owner’s son Joe Jennison looked through his catalog for a good song for the player piano up front so he could get an autograph on the perforated paper.&lt;/p&gt;&lt;p dir="ltr"&gt;“Happy Days Are Here Again” seemed like the obvious choice. O’Rourke took the red-and-white box of paper and a marker as he walked in and signed one word: &lt;em&gt;Beto&lt;/em&gt;, scrawled in his loose script.&lt;/p&gt;&lt;p dir="ltr"&gt;“I feel that he was sincere and genuine,” Jennison said after.&lt;/p&gt;&lt;p dir="ltr"&gt;Asked whether he’d heard anything that could help him pin down exactly what O’Rourke stood for or what he’d do as president, Jennison grimaced. “I don’t know how to answer that,” he said, but waved his hands to say no when asked whether that didn’t matter. “Of course it matters,” he said.&lt;/p&gt;&lt;p dir="ltr"&gt;There are 11 months to go, he said. He didn’t know who O’Rourke was until two days earlier, when an aide reached out and asked to book the bar for half an hour. Now he’s hoping he can get the rest of the candidates in, and he’s already thinking about what songs he’ll try to get them to autograph.&lt;/p&gt;&lt;p dir="ltr"&gt;But, Jennison said, “if the caucuses were tomorrow, he’d have my vote.”&lt;/p&gt;</content>
    <author>
      <name>Edward-Isaac Dovere</name>
      <uri>http://local.theatlantic.com/author/edward-isaac-dovere/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_19073703368985/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Charlie Neibergall / Associated Press</media:credit>
      <media:description>Beto O'Rourke campaigning in Burlington, Iowa</media:description>
    </media:content>
    <title type="html">O’Rourke Mostly Gets a Pass for His Lack of Specifics</title>
    <link href="https://local.theatlantic.com/politics/archive/2019/03/beto-orourkes-passionate-iowa-tour-short-specifics/585121/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T06:00:00-04:00</published>
    <updated>2019-03-16T11:42:23-04:00</updated>
    <summary type="html">The former Texas congressman is confident in his savant understanding of tactics in the time of Trump and social-media celebrity.</summary>
    <id>tag:theatlantic.com,2019:50-585121</id>
  </entry>
  <entry>
    <content type="html">&lt;p dir="ltr"&gt;The arrival of more than 1 million migrants in Europe in 2015 transformed the region’s political landscape. Four years later, the numbers seeking refuge have fallen sharply—even if the rhetoric surrounding the newcomers has not.&lt;/p&gt;&lt;p dir="ltr"&gt;European Union data &lt;a href="https://ec.europa.eu/eurostat/documents/2995521/9665546/3-14032019-AP-EN.pdf/eca81dc5-89c7-4a9d-97ad-444b6bd32790"&gt;released Thursday&lt;/a&gt; showed that the number of first-time asylum seekers in the bloc declined for the fourth straight year. It now stands at 580,800, just above the number that arrived in 2014, the year before the migrant crisis began.&lt;/p&gt;&lt;p dir="ltr"&gt;These latest figures are significant not because a semblance of order has been restored to those countries that account for the main source of asylum seekers—Syria, Afghanistan, and Iraq remain in various stages of tumult—but because migration remains a potent rallying call for far-right and populist parties that continue to use the issue to mobilize voters ahead of European Parliament elections in May. Additionally, European governments have tightened their rules not only for immigration but also for asylum, resulting in a steep decline in approval rates, &lt;a href="https://www.easo.europa.eu/asylum-trends-overview-2018"&gt;according to separate European data&lt;/a&gt;.&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/international/archive/2019/03/europe-interior-minister-kickl-far-right/584845/?utm_source=msn"&gt;Read: How the far right weaponized Europe’s interior ministries to block refugees&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Still, the numbers released Thursday are unlikely to placate the &lt;a href="https://www.reuters.com/article/us-eu-eurobarometer/immigration-terrorism-top-concern-list-of-europeans-poll-idUSKBN1JA2FX"&gt;plurality of Europeans&lt;/a&gt; who say they believe immigration is the most important issue facing the bloc. Indeed, the arrival of large numbers of migrants four years ago fostered a belief that EU governments had lost control of the bloc’s borders, bolstering support for parties that until then had occupied the fringes of European politics. That has changed markedly, though: Populist parties are expected to make significant enough gains in the upcoming polls to put a major dent in the four-decade-long electoral dominance of the EU’s centrist parties—a repeat of the pattern seen in an array of national elections across Europe.&lt;/p&gt;&lt;p dir="ltr"&gt;Many of these parties are skeptical of the EU itself, but particularly of the bloc’s migration policies. Some of that skepticism has been a centerpiece of government policies in Italy, Austria, and elsewhere. Italian Deputy Prime Minister Matteo Salvini’s opposition to immigration, for instance, has helped ensure that fewer migrants are making the perilous journey across the Mediterranean to Italy, the previously favored destination. Italy saw a 61 percent decline in the number of asylum seekers, according to the EU data. (Left-wing parties that call for more immigration, such as Germany’s Greens and Sweden’s Left Party, have also made significant gains, but are not part of governments in their countries.)&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/international/archive/2018/10/unexpected-rise-germanys-green-party-bavaria/572473/?utm_source=msn"&gt;Read: The far right isn’t the only rising force in Germany&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Europe’s traditional center-right and center-left parties are not blind to the prevailing political winds. Rejections of asylum applications outnumbered approvals by a two-to-one margin last year, &lt;a href="https://www.easo.europa.eu/asylum-trends-overview-2018"&gt;according to the European Asylum Support Office&lt;/a&gt;. (In 2015, one in two applications was successful.) Germany, whose open-door policy for Syrians fleeing the civil war sparked the flow of migrants into Europe and consequently saw a far-right party enter Parliament for the first time since World War II, has tightened its rules—though it remains the top destination for asylum seekers. Berlin has sped up how it makes decisions on asylum requests, a process that in theory also speeds up the deportation of those whose claims are denied. Additionally, Berlin now deems Afghanistan a safe country, meaning Afghans seeking refuge in Germany are no longer assured of it.&lt;/p&gt;&lt;p dir="ltr"&gt;Annegret Kramp-Karrenbauer, the head of Chancellor Angela Merkel’s governing Christian Democratic Union, &lt;a href="https://finance.yahoo.com/news/merkels-successor-says-germanys-2015-refugee-influx-must-not-happen-154126589.html"&gt;recently said&lt;/a&gt; Germany “must make sure nothing like” the surge of Syrian migrants “ever happens again.” Sweden and other countries are also rethinking their relatively liberal humanitarian migration policies in the face of public backlash.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/magazine/archive/2018/04/the-refugee-detectives/554090/?utm_source=msn"&gt;Read: The refugee detectives&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;A fundamental challenge for the bloc is its piecemeal policy on asylum. Prior to the crisis, the so-called Dublin rule, which mandated that migrants seek asylum in the country where they first arrive, appeared to be sufficient to handle the relatively low number of claims. But that fractured when hundreds of thousands of migrants from Syria and elsewhere began arriving in Italy, Greece, Spain, and the frontiers of eastern Europe to make their way west.&lt;/p&gt;&lt;p dir="ltr"&gt;Since then, the EU has tried to forge a common asylum policy, but with no real success. One major stumbling block is whether Brussels can enforce a quota that distributes refugees among the bloc’s members so the Mediterranean states in particular don’t bear an unfair burden. Governments in countries such as Hungary, which have been vocal about their opposition to migrants in general and Muslim migrants in particular, have adamantly opposed this plan.&lt;/p&gt;&lt;p&gt;Yet while migration and asylum continue to dominate Europe’s politics, the numbers show that the issue is not as pressing as it once was.&lt;/p&gt;</content>
    <author>
      <name>Krishnadev Calamur</name>
      <uri>http://local.theatlantic.com/author/krishnadev-calamur/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTX6RCZ3/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Yannis Behrakis / Reuters</media:credit>
      <media:description>A Syrian refugee carries his daughter in Greece as he approaches the Greek-Macedonian border in September 2015.</media:description>
    </media:content>
    <title type="html">The Nativists Won in Europe</title>
    <link href="https://local.theatlantic.com/international/archive/2019/03/europe-refugees-syria-borders/585097/?utm_source=msn" rel="alternate" />
    <published>2019-03-16T06:00:00-04:00</published>
    <updated>2019-03-16T14:33:01-04:00</updated>
    <summary type="html">Even moderate countries have severely restricted the number of refugees they allow to stay within their borders.</summary>
    <id>tag:theatlantic.com,2019:50-585097</id>
  </entry>
  <entry>
    <content type="html">&lt;h3&gt;What We’re Following&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;At least 49 people were killed in mass shootings during Friday Prayer at two mosques in Christchurch. &lt;/strong&gt;The prime minister called it one of the “darkest days” in New Zealand’s history—the island nation &lt;a href="https://www.theatlantic.com/politics/archive/2019/03/new-zealands-history-mass-shootings-christchurch/585052/?utm_source=msn"&gt;hasn’t had a mass shooting in more than 20 years.&lt;/a&gt; The gruesomeness of the attack was only heightened through online materials left by a suspect, a white Australian man now in police custody. The gunman live-streamed the attack on Facebook, and that video quickly ricocheted online, where some unwitting users saw it—highlighting the continued failings of content moderation and &lt;a href="https://www.theatlantic.com/technology/archive/2019/03/how-terrorism-new-zealand-spread-social-media/585040/?utm_source=msn"&gt;how platforms can aid a mass shooter’s goal of spreading terror.&lt;/a&gt; The violent rhetoric of one of the alleged shooters also seemed &lt;a href="https://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt;intended for a very specific audience.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;California Governor Gavin Newsom signed an order this week to pause the death penalty in his state&lt;/strong&gt;, removing more than a quarter of the U.S.’s death row from execution. The move shows just how fragile capital punishment is in the U.S. now, and could spark a broader movement against it. (America is also one of very few countries in the industrialized world to retain the practice.) This isn’t the first time California has moved to put a hiatus on executions: In 1972, the state Supreme Court’s efforts to abolish the death penalty resulted in a wave of backlash, that saw it restored just a year later. &lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/gavin-newsoms-death-penalty-moratorium-may-stick/584977/?utm_source=msn"&gt;Will things be different this time around?&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Thirty years ago, the British scientist Tim Berners-Lee released a new invention: the World Wide Web &lt;/strong&gt;at the European research center, CERN. The internet upended industry after industry, paving the way for the tech leviathans—such as Amazon, Facebook, and Google—that have been the subject of much public scorn of late. But even before these companies became so large and powerful, when the web was being widely heralded for its democratizing potential, there were &lt;a href="http://www.theatlantic.com/technology/archive/2019/03/people-who-hated-web-even-before-facebook/584932/?utm_source=msn"&gt;prescient skeptics of the societal changes that it would bring about.&lt;/a&gt;&lt;/p&gt;&lt;p style="text-align: right;"&gt;&lt;cite&gt;—&lt;a href="https://www.theatlantic.com/author/saahil-desai/?utm_source=msn"&gt;Saahil Desai&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;Weekend Read&lt;/h3&gt;&lt;figure&gt;&lt;a href="https://www.theatlantic.com/health/archive/2019/03/hospital-bills-medical-debt-bankruptcy/584998/?utm_source=msn"&gt;&lt;img alt="Doctors’ bills now play a role in 60 percent of Americans' personal-bankruptcy filings." height="378" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/lead_720_405-4/3e88253a5.jpg" width="672"&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;&lt;small&gt;(Billion Photos / Shutterstock / &lt;em&gt;The Atlantic&lt;/em&gt;)&lt;/small&gt;&lt;/p&gt;&lt;p&gt;Nearly 60 percent of Americans who’ve filed for bankruptcy said that a medical expense “very much” or “somewhat” contributed to their bankruptcy (outstripping causes such as home foreclosure or student loans). What’s behind this growing American crisis? Olga Khazan writes:&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;There are as many reasons for the medical-debt crisis as there are diagnostic codes that rule the medical-billing world. In interviews, half a dozen consumer advocates told me they are concerned the problem will get worse, since the uninsured rate is going up, and more people are signing up for cheaper but skimpier health-insurance plans that have been introduced by the Trump administration. More Americans are also now on high-deductible health plans, which often require the patient to pay thousands before insurance kicks in. Networks of doctors have grown narrower, meaning more providers are likely to be out-of-network.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;a href="https://www.theatlantic.com/health/archive/2019/03/hospital-bills-medical-debt-bankruptcy/584998/?utm_source=msn"&gt;→ Read the rest&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;Our Critic’s Picks&lt;/h3&gt;&lt;figure&gt;&lt;a href="https://www.theatlantic.com/entertainment/archive/2019/03/queer-eye-season-3-review/584812/?utm_source=msn"&gt;&lt;img alt="Queer Eye, season 3" height="378" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/lead_720_405_8-2/4b5f627e9.jpg" width="672"&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;&lt;small&gt;&lt;em&gt;Queer Eye&lt;/em&gt;’s culture expert, Karamo Brown, with Jody Castellucci, a makeover recipient. &lt;span&gt;(Netflix)&lt;/span&gt;&lt;/small&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Read:&lt;/strong&gt; &lt;em&gt;Horizon&lt;/em&gt;, by Barry Lopez, is an honest story about the threat of humanity’s extinction &lt;a href="https://www.theatlantic.com/entertainment/archive/2019/03/barry-lopez-warns-about-climate-change-new-book/585031/?utm_source=msn"&gt;due to climate change.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Watch: &lt;/strong&gt;The long-awaited third season of the Netflix makeover show &lt;em&gt;Queer Eye &lt;/em&gt;comes out on Friday. The show’s five gay hosts visit Kansas City, and the season excels when it doles out therapy in addition to haircuts, &lt;a href="https://www.theatlantic.com/entertainment/archive/2019/03/queer-eye-season-3-review/584812/?utm_source=msn"&gt;helping schlubs fix more than their wardrobe and home.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Listen:&lt;/strong&gt; The Swedish queen of dance-pop, Robyn—currently on tour for her latest album, &lt;em&gt;Honey&lt;/em&gt;, her first since 2010—knows just how to &lt;a href="https://www.theatlantic.com/entertainment/archive/2019/03/robyns-boston-concert-withheld-then-erupted-review/584659/?utm_source=msn"&gt;“amp up pleasure by withholding,”&lt;/a&gt; writes Spencer Kornhaber.&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;Poem of the Week&lt;/h3&gt;&lt;p&gt;This week, an excerpt from &lt;a href="https://www.theatlantic.com/past/docs/unbound/poetry/atlpoets/nye9503.htm?utm_source=msn"&gt;“Darling,” by Naomi Shihab Nye&lt;/a&gt;, published in March of 1995:&lt;/p&gt;&lt;p&gt;&lt;em&gt;Someone was there.&lt;br&gt;
Someone not there now was standing.&lt;br&gt;
Someone in the wrong place&lt;br&gt;
with a small moon-shaped scar on his left cheek&lt;br&gt;
and a boy by the hand.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Who had just drunk water, sharing the glass.&lt;br&gt;
Who had not thought about it deeply&lt;br&gt;
though they might have, had they known.&lt;br&gt;
Someone grown and someone not-grown.&lt;br&gt;
Who thought they had different amounts of time left.&lt;br&gt;
This guessing game ends with our hands in the air,&lt;br&gt;
becoming air.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.theatlantic.com/past/docs/unbound/poetry/atlpoets/nye9503.htm?utm_source=msn"&gt;&lt;u&gt;→ Read the rest&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;blockquote&gt;
&lt;p style="text-align: center;"&gt;&lt;em&gt;Looking for our daily mini crossword? &lt;a href="http://www.theatlantic.com/free-daily-crossword-puzzle/?utm_source=msn"&gt;Try your hand at it here.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;em&gt;Comments, questions, typos? Email newsletters editor Shan Wang at &lt;a href="mailto:swang@theatlantic.com?subject=Atlantic%20Daily%20feedback" name="m_6028999228484032643_swang_theatlantic_com_subject_" target="_blank"&gt;swang@theatlantic.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;em&gt;We have many other free email newsletters on a variety of other topics. &lt;a href="https://www.theatlantic.com/follow-the-atlantic/?utm_source=msn"&gt;Find the full list here.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    <author>
      <name>Saahil Desai</name>
      <uri>http://local.theatlantic.com/author/saahil-desai/?utm_source=msn</uri>
    </author>
    <author>
      <name>Shan Wang</name>
      <uri>http://local.theatlantic.com/author/shan-wang/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTX6RAKM/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Reuters</media:credit>
    </media:content>
    <title type="html">&lt;em&gt;The Atlantic&lt;/em&gt; Daily: ‘Darkest Days’</title>
    <link href="https://local.theatlantic.com/newsletters/archive/2019/03/christchurch-mosques-shooting-medical-debt-the-atlantic-daily/585028/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T19:59:24-04:00</published>
    <updated>2019-03-15T20:03:52-04:00</updated>
    <summary type="html">Mass shootings at two mosques in New Zealand—with social-media platforms the inevitable vectors in the aftermath. Plus: Americans are going bankrupt from medical bills</summary>
    <id>tag:theatlantic.com,2019:50-585028</id>
  </entry>
  <entry>
    <content type="html">&lt;h3&gt;What We’re Following Today&lt;/h3&gt;&lt;p&gt;&lt;em&gt;It’s Friday, March 15. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;At least 49 people &lt;u&gt;&lt;a href="https://www.nytimes.com/2019/03/15/world/asia/new-zealand-shooting.html"&gt;were killed&lt;/a&gt;&lt;/u&gt; in mass shootings at two mosques in Christchurch, New Zealand, the deadliest in the modern history of the country. The suspected gunman posted a 74-page manifesto on the &lt;u&gt;&lt;a href="https://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt;extremist chat room 8chan&lt;/a&gt;&lt;/u&gt; before his attack (&lt;u&gt;&lt;a href="https://www.theatlantic.com/technology/archive/2019/03/how-terrorism-new-zealand-spread-social-media/585040/?utm_source=msn"&gt;which he appeared to have live-streamed&lt;/a&gt;&lt;/u&gt;), invoking far-right language on the erosion of “whiteness” and citing “a future for white children” as a goal.&lt;/p&gt;&lt;p&gt;‣ Friday’s attacks were the first mass shootings in New Zealand since six people were murdered in 1997 in the North Island town of Raurimu, more than two decades ago. A sobering fact: In that same time, at least &lt;u&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/new-zealands-history-mass-shootings-christchurch/585052/?utm_source=msn"&gt;90 mass shootings have happened in the United States.&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;‣The Christchurch shootings mirror recent attacks by other terrorist groups. The emphasis on mass killing, the weaponization of social media, and the fixation on perceived threats to the identity of the group the attackers take as their own are shared threads. But none of this can “fully explain a violence so fundamentally senseless, and a community loss so fundamentally cruel,” &lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2019/03/violence-new-zealand-echoes-past-terrorist-patterns/585043/?utm_source=msn"&gt;writes&lt;/a&gt;&lt;/u&gt; Kathy Gilsinan.&lt;/p&gt;&lt;p&gt;‣ J. M. Berger warns how news organizations dangerously amplify &lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/02/christopher-hasson-was-inspired-breivik-manifesto/583567/?utm_source=msn"&gt;the impact of extremist manifestos by sharing them.&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;‣ Adam Serwer &lt;u&gt;&lt;a href="https://www.theatlantic.com/magazine/archive/2019/04/adam-serwer-madison-grant-white-nationalism/583258/?utm_source=msn"&gt;examines&lt;/a&gt;&lt;/u&gt; the deep American roots behind the seemingly fringe conspiracy theory of “white genocide” in the April issue of &lt;em&gt;The Atlantic&lt;/em&gt; magazine: “When Americans abandon their commitment to pluralism, the world notices, and catastrophe follows.”&lt;/p&gt;&lt;p&gt;Here’s what else we’re watching:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;VETO!: &lt;/strong&gt;As expected, President Donald Trump &lt;u&gt;&lt;a href="https://www.nytimes.com/2019/03/15/us/politics/trump-veto-national-emergency.html"&gt;vetoed&lt;/a&gt;&lt;/u&gt; the Congressional attempt to block his declaration of a national emergency, and leading up to the Senate’s rebuke on Thursday, &lt;u&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/trump-national-emergency-senate-vote/584920/?utm_source=msn"&gt;seemed to care very little&lt;/a&gt;&lt;/u&gt; about trying to win over Congress.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A Candidate for the ‘Middle’: &lt;/strong&gt;You might not have heard of Representative Tim Ryan, but the Democratic congressman from Ohio—who’s also an avid hot-yoga practitioner—is seriously considering running for president. Elaine Godfrey spent some time talking to the potential candidate &lt;u&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/ohio-democrat-tim-ryan-might-run-president-2020/584782/?utm_source=msn"&gt;about what he thinks he can bring to the national conversation.&lt;/a&gt;&lt;/u&gt; “Should he run, Ryan would likely position himself as the candidate best able to attract ... ‘middle’ voters. In his working-class district in northeast Ohio, roughly 45,000 people filled in the bubble for both Trump and Ryan in 2016.”&lt;/p&gt;&lt;p&gt;&lt;strong&gt;More on Manafort: &lt;/strong&gt;Trump’s former campaign chairman Paul Manafort has been sentenced to more than seven years in prison for crimes uncovered during the course of Special Counsel Robert Mueller’s probe. But all of Manafort’s convictions have been for financial crimes—and &lt;u&gt;&lt;a href="https://www.theatlantic.com/politics/archive/2019/03/mueller-might-not-be-done-manafort-over-kilimnik-ties/584995/?utm_source=msn"&gt;Mueller might still have more dirt on him,&lt;/a&gt;&lt;/u&gt; reports Natasha Bertrand: “Prosecutors might have more ammunition to go after the 69-year-old on matters that go directly to the question of a conspiracy with Russia.”&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Who Will Pay?: &lt;/strong&gt;After eight years of civil war, Syrian President Bashar al-Assad is still firmly in power. But much of the nation is destroyed, and no country is particularly keen to help rebuild it, writes Krishnadev Calamur. Russia, an Assad ally, can’t afford to help, &lt;u&gt;&lt;a href="https://www.theatlantic.com/international/archive/2019/03/where-will-money-rebuild-syria-come/584935/?utm_source=msn"&gt;while many Assad adversaries can afford to, but won’t.&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Trump Towers, Never Built: &lt;/strong&gt;The Trump Castle. The World’s Tallest Building. The World’s Tallest Building, Take Two. The World’s Tallest Building, Take Three. &lt;u&gt;&lt;a href="https://www.theatlantic.com/magazine/archive/2019/04/trump-tower-real-estate-projects/583243/?utm_source=msn"&gt;These are all the Donald Trump construction projects that were never realized.&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p align="right"&gt;&lt;cite&gt;—&lt;a href="https://www.theatlantic.com/author/olivia-paschal/?utm_source=msn"&gt;Olivia Paschal&lt;/a&gt; and &lt;a href="https://www.theatlantic.com/author/madeleine-carlisle/?utm_source=msn"&gt;Madeleine Carlisle&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;Snapshot&lt;/h3&gt;&lt;figure&gt;&lt;img alt="" height="448" src="https://cdn.theatlantic.com/assets/media/img/posts/2019/03/AP_19074649656187/270f4cad0.jpg" width="672"&gt;&lt;/figure&gt;&lt;p&gt;&lt;small&gt;Young demonstrators join the International Youth Climate Strike event at the Capitol in Washington, D.C. Students around the world took to the streets to urge action on climate change. (J. Scott Applewhite / AP)&lt;/small&gt;&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;Ideas From &lt;em&gt;The Atlantic&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/new-zealand-shooters-manifesto-will-continue-spread/585085/?utm_source=msn"&gt;A Repulsively Casual Terrorist Manifesto&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(Graeme Wood)&lt;/em&gt;&lt;br&gt;
“What we should learn as this particular manifesto is forgotten is that even if specific texts prove unmemorable, the potency of ideas is enduring and chronically underestimated. Is there any doubt that the ideology that inspired the Christchurch terrorist is a global pestilence, and that any response that fails to apprehend it &lt;em&gt;as an ideology&lt;/em&gt; is inadequate?”&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/new-zealand-shooters-manifesto-will-continue-spread/585085/?utm_source=msn"&gt;→ Read on&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/gavin-newsoms-death-penalty-moratorium-may-stick/584977/?utm_source=msn"&gt;Will the U.S. End the Death Penalty?&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(Carol S. Steiker and Jordan M. Steiker)&lt;/em&gt;&lt;br&gt;
“As the footprint of the American death penalty continues to shrink … it becomes less plausible to believe that the death penalty serves any social goals, particularly deterrence. From a constitutional perspective, when the death penalty cannot be tied to any social good, its imposition by definition becomes unnecessary and excessive.”&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/gavin-newsoms-death-penalty-moratorium-may-stick/584977/?utm_source=msn"&gt;→ Read on&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/admissions-scandal-shows-real-goal-elite-colleges/584968/?utm_source=msn"&gt;Elite Colleges Don’t Understand Which Business They’re In&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(John Fabian Witt)&lt;/em&gt;&lt;br&gt;
“The core of a university’s real mission is to produce and disseminate ideas; sorting and ranking applicants is just a means to an end. To fixate on the ‘best people’ is like urging Human Rights Watch to maximize ‘likes’ on social media instead of stopping human-rights abuses, or urging General Motors to value next year’s J.D. Power ratings over its long-term profits.” &lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/admissions-scandal-shows-real-goal-elite-colleges/584968/?utm_source=msn"&gt;→ Read on&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/betos-announcement-shows-triumph-secular-democrats/585001/?utm_source=msn"&gt;Secular Democrats Are the New Normal&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;&lt;em&gt; (Peter Beinart)&lt;/em&gt;&lt;br&gt;
“Today’s white liberals don’t only talk about faith less than their predecessors did. They talk about it in a strikingly different way.”&lt;u&gt;&lt;a href="https://www.theatlantic.com/ideas/archive/2019/03/betos-announcement-shows-triumph-secular-democrats/585001/?utm_source=msn"&gt;→ Read on&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;hr&gt;&lt;h3&gt;What Else We’re Reading&lt;/h3&gt;&lt;p&gt;‣ &lt;strong&gt;&lt;u&gt;&lt;a href="https://www.washingtonpost.com/news/opinions/wp/2019/03/14/feature/the-strongmen-strike-back/?utm_term=.e4fd2390ca2e"&gt;The Strongmen Strike Back&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(Robert Kagan, The Washington Post) &lt;/em&gt;(&#x1f512; Paywall)&lt;em&gt;  &lt;/em&gt;&lt;br&gt;&lt;span&gt;‣&lt;/span&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://southerlymag.org/2019/03/13/kentucky-farmers-gamble-on-the-souths-first-organic-hemp-cooperative/"&gt;Kentucky Farmers Gamble on the South’s First Organic Hemp Cooperative&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(Austyn Gaffney, Southerly)&lt;/em&gt;&lt;br&gt;&lt;span&gt;‣&lt;/span&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://thebaffler.com/latest/unlikely-journeys-bittle"&gt;Unlikely Journeys: Reading the Memoirs of a Crowded Democratic Field&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(Jake Bittle, The Baffler)&lt;/em&gt;&lt;br&gt;&lt;span&gt;‣&lt;/span&gt;&lt;strong&gt;&lt;u&gt;&lt;a href="https://thebulwark.com/the-argument-that-the-president-cannot-be-indicted-is-surprisingly-weak/"&gt;The Argument That the President ‘Cannot Be Indicted’ Is Surprisingly Weak&lt;/a&gt;&lt;/u&gt; &lt;/strong&gt;&lt;em&gt;(Kim Wehle, The Bulwark)&lt;/em&gt;&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;And One More Thing ...&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;In a kinder corner of the internet: Julie Beck interviews &lt;u&gt;&lt;a href="https://www.theatlantic.com/family/archive/2019/03/friendship-files-these-women-met-comments-section-website/584917/?utm_source=msn"&gt;a group of women who met in the comments section of a women’s blog&lt;/a&gt;&lt;/u&gt; a decade ago, and became friends in real life.&lt;/p&gt;&lt;hr&gt;&lt;blockquote&gt;
&lt;p style="text-align: center;"&gt;&lt;em&gt;We’re always looking for ways to improve &lt;/em&gt;The Politics &amp;amp; Policy&lt;em&gt; &lt;/em&gt;Daily&lt;em&gt;. Comments, questions, typos, grievances and groans related to our puns? &lt;a data-saferedirecturl="https://www.google.com/url?q=http://links.e.theatlantic.com/ctt?kn%3D34%26ms%3DMjA3NTYxMDYS1%26r%3DNTA5MjcwNzk5NzM3S0%26b%3D0%26j%3DMTQwMTMzNjYwMAS2%26mt%3D1%26rt%3D0&amp;amp;source=gmail&amp;amp;ust=1545350414331000&amp;amp;usg=AFQjCNEXCG7ymxTAqdjw4aBfbPE75x64mg" href="mailto:politicsdaily@theatlantic.com?subject=Feedback%20re%3A%20The%20Atlantic%20Politics%20%26%20Policy%20Daily" name="m_-7041184949414046158_goo_gl_forms_GxgfnO9jazAoATD62" target="_blank"&gt;Let us know anytime here.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p style="text-align: center;"&gt;&lt;em&gt;Were you forwarded this newsletter? &lt;a href="https://www.theatlantic.com/follow-the-atlantic/?utm_source=msn"&gt;Sign up for our daily politics email here.&lt;/a&gt; We have many other free email newsletters on a variety of other topics. &lt;a href="https://www.theatlantic.com/follow-the-atlantic/?utm_source=msn"&gt;Find the full list here.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content>
    <author>
      <name>Olivia Paschal</name>
      <uri>http://local.theatlantic.com/author/olivia-paschal/?utm_source=msn</uri>
    </author>
    <author>
      <name>Madeleine Carlisle</name>
      <uri>http://local.theatlantic.com/author/madeleine-carlisle/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_19074699129719/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Mark Baker / AP</media:credit>
      <media:description>A bouquet of flowers is placed near Christchurch Hospital, which is under lockdown, honoring the victims of a mass shooting at two mosques in Christchurch, New Zealand.</media:description>
    </media:content>
    <title type="html">&lt;em&gt;The Atlantic &lt;/em&gt;Politics &amp;amp; Policy Daily: A Loss So Fundamentally Cruel</title>
    <link href="https://local.theatlantic.com/politics/archive/2019/03/mass-shootings-new-zealand-politics-daily/585046/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T18:23:40-04:00</published>
    <updated>2019-03-15T18:33:39-04:00</updated>
    <summary type="html">Forty-nine people were killed in mass shootings at two mosques in New Zealand. Plus: President Trump signs his first veto.</summary>
    <id>tag:theatlantic.com,2019:50-585046</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;I have just read the manifesto written by the alleged killer of almost 50 Muslims in Christchurch, New Zealand. I can think of more pleasant ways to spend a Friday morning, such as nursing a throbbing case of pink eye, or seeing how long I can hold my palm on my hot plate without screaming. But the evaluation of nauseating ideological statements is a specialty of mine, and regrettably, today I am once again on duty.&lt;/p&gt;&lt;p&gt;The sole virtue of “The Great Replacement,” a 78-page Microsoft Word document containing poetry and illustrations, is its clarity. It provides a catechism about the intentions of its author, as if to preempt the usual questions that follow atrocities of this kind. (Certain lines are written in an ironic, messing-with-you tone, but they are easy to detect if you spend enough time reading this stuff.) The author is a white Australian and wishes to hasten a civilizational war. His model is Anders Behring Breivik, the Norwegian neckbeard who murdered 77 people, mostly liberal teens at an island retreat, in 2011.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/magazine/archive/2019/04/adam-serwer-madison-grant-white-nationalism/583258/?utm_source=msn"&gt;Read: White nationalism’s deep American roots&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;The civilization that most offends him is Islam, because of its attempt to colonize the West through immigration and philoprogenitiveness. He hates, most of all, those Muslims who are peaceful. “The unarmed invader is far more dangerous to our people than the armed invader,” he says. “We have no real idea on how to deal with them, we are unable to attack them or fend them off in any meaningful way.” He is ideological but, like Breivik, not meaningfully religious, and comes close to denying that he is even Christian.&lt;/p&gt;&lt;p&gt;That’s it. To examine the document more carefully is about as useful as stirring and examining the killer’s scat. Not all manifestos and ideological documents are this mediocre or written in such a repulsively casual tone. (“Q: &lt;em&gt;You are a bigot, racist, xenophobe, islamophobe, nazi, fascist! &lt;/em&gt;A: Compliments will get you nowhere.”) The Islamic State’s statements, for example, were written in a repulsively &lt;em&gt;formal&lt;/em&gt; register, often with original poetry and allusion to rich intellectual traditions. The Unabomber, too, displayed erudition and an almost dainty concern for citation and detail. (In his last book, a prison manifesto, he even cited &lt;a href="https://www.theatlantic.com/magazine/archive/2009/07/re-engineering-the-earth/307552/?utm_source=msn"&gt;me&lt;/a&gt;.) The killer in this case seems to have lacked originality, even cribbing his jokes from fellow sewer-dwellers on the internet. Already the internet is being scrubbed of his manifesto. I predict that within days it will be easy to find again, but that no one will bother reading it, because it is simply stultifying, and not bracing even for the skinheads and tiki-torch marchers who agree with it in principle.&lt;/p&gt;&lt;p&gt;Of course, even a mediocre manifesto will attract interest, both prurient and legitimate. In extremist manifestos, “there is a potency in the combination of words and action,” J. M. Berger &lt;a href="https://www.theatlantic.com/ideas/archive/2019/02/christopher-hasson-was-inspired-breivik-manifesto/583567/?utm_source=msn"&gt;wrote here&lt;/a&gt; just a few weeks ago, that fascinates people, both analysts and believers. Some of these documents contain wicked brilliance that catalyzes violent acts through sheer force of imagination. Berger counts more than 200 deaths at the hands of fans of &lt;em&gt;The Turner Diaries&lt;/em&gt;, a 1978 anti-Semitic and racist thriller. The Islamic State has killed many more, and although it has never published a manifesto, untold numbers of foreign fighters began their journeys by downloading an ISIS-produced document outlining the beliefs that a Muslim must hold, and the actions those beliefs require. These manifestos sometimes matter a great deal.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt;Read: The shooter’s manifesto was designed to troll&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;What we should learn as this particular manifesto is forgotten is that even if specific texts prove unmemorable, the potency of ideas is enduring and chronically underestimated. Is there any doubt that the ideology that inspired the Christchurch terrorist is a global pestilence, and that any response that fails to apprehend it &lt;em&gt;as an ideology&lt;/em&gt; is inadequate? We already see an understandable curiosity about websites the killer might have visited, the fact that he live-streamed his crimes, and his references to memes and public figures.&lt;/p&gt;&lt;p&gt;I am reminded of early phases of analysis of ISIS, when sympathizers flooded Twitter with jihadist memes and jokes, and in some cases even planted obviously fake claims that they had been radicalized by non-jihadist Muslim public figures in the West. The confusion sown in those early days contributed to a failure to realize that at its core, ISIS had a very non-ironic set of beliefs, accompanied by ironic memes and worldly mechanisms for dissemination. When the Christchurch killer departs from his jocular, message-board tones, he refers to historical figures and events, not always the ones that have engendered Pepe-like memes for the internet’s right wing. (He refers three times to the English Nazi-sympathizer Oswald Mosley, a figure known to every fascist but not to every keyboard warrior on 8chan for the laughs.) This fascist core is attended by a bodyguard of casual irony and disdainful, in-joke humor. The tone is just a style, and a phenomenon of our times. But the core is an enduring enemy of civilization. The killer sees it, rightly, as historically continuous with mid-20th-century fascism. The survival of this ideology in any form should unnerve us all.&lt;/p&gt;</content>
    <author>
      <name>Graeme Wood</name>
      <uri>http://local.theatlantic.com/author/graeme-wood/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTX6RDX7/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Edgar Su / Reuters</media:credit>
      <media:description>Armed police officers stand guard in a perimeter outside Al Noor mosque after the attack in Christchurch.</media:description>
    </media:content>
    <title type="html">A Repulsively Casual Terrorist Manifesto</title>
    <link href="https://local.theatlantic.com/ideas/archive/2019/03/new-zealand-shooters-manifesto-will-continue-spread/585085/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T14:20:00-04:00</published>
    <updated>2019-03-15T17:56:37-04:00</updated>
    <summary type="html">The New Zealand shooter’s text is unoriginal, but the ideology is potent.</summary>
    <id>tag:theatlantic.com,2019:50-585085</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;&lt;em&gt;One Day at a Time&lt;/em&gt;, which was &lt;a href="https://www.hollywoodreporter.com/live-feed/one-day-at-a-time-canceled-at-netflix-1194776"&gt;canceled&lt;/a&gt; by Netflix on Thursday after three seasons, was always preparing fans for its own ending. It isn’t that the beloved sitcom wanted to end—far from it. Every year, the cast and creatives clawed their way to a renewal, spearheading impassioned Twitter campaigns to save the consistently on-the-bubble show. But on-screen, &lt;em&gt;One Day at a Time&lt;/em&gt; understood loss as an inevitability, just as it understood that the sun would rise the next day. The hard fight to survive, and to do so vibrantly, was baked into the DNA of the series itself.&lt;/p&gt;&lt;p&gt;A remake of Norman Lear’s classic 1970s sitcom, &lt;em&gt;One Day at a Time &lt;/em&gt;centered on the Alvarez family, a Cuban American household led by a single mom, Penelope (played by Justina Machado). It was Penelope’s live-in mother, Lydia (a splashy, scene-stealing Rita Moreno), who stared down the specter of death when she suffered a stroke at the end of the penultimate episode of Season 2. The gutting &lt;a href="https://www.vanityfair.com/hollywood/2018/01/one-day-at-a-time-season-2-finale-rita-moreno-justina-machado"&gt;season finale&lt;/a&gt; brought her loved ones—Penelope; Penelope’s kids, Elena (Isabella Gómez) and Alex (Marcel Ruiz); and the family friends Leslie (Stephen Tobolowsky) and Schneider (Todd Grinnell)—to her bedside, where they grappled with the awful certainty that one day they would have to say goodbye. “Not yet,” Lydia declared—but eventually.&lt;/p&gt;&lt;p&gt;Following Lydia’s stroke, Season 3 framed itself around the question of what comes after a life-changing event. Lydia resisted adjusting the habits that put her health at risk. Elena, whose father reacted poorly when she came out to him as a lesbian in the first season, struggled with her dad’s attempts to make amends. Schneider, a recovering alcoholic, relapsed and despaired at the thought of starting over in his sobriety. &lt;em&gt;One Day at a Time&lt;/em&gt;’s final season at Netflix wound up being the one that most lived up to its title: Change, the show argued, is possible only in small steps taken daily. While Lydia was in the hospital, Schneider recalled a visit she paid him during one of his previous stints in rehab: “You told me, ‘You eat this, you get some sleep, and tomorrow, you try again.’”&lt;/p&gt;&lt;p&gt;&lt;em&gt;One Day at a Time&lt;/em&gt; was that kind of show: relentlessly hopeful not in spite of how hard life can be, but because of it. In Season 3, Lydia drafted what she called a “bouquet list,” her spin on a bucket list. “It is an arrangement of all of the beautiful things you still want to do before you kick the bucket,” she explained. The heartbeat of &lt;em&gt;One Day at a Time&lt;/em&gt; was its spirited insistence that beauty can thrive alongside pain. The series blended multicam-sitcom laughs with a fearless willingness to tackle heavy social issues. It was entertaining for reasons beyond its cultural relevance, but it &lt;em&gt;was&lt;/em&gt; relevant, and it gave voice to a number of demographics that are still underrepresented on television, including Latinx families, immigrants, single mothers, LGBTQ teens, and veterans dealing with PTSD.&lt;/p&gt;&lt;p&gt;Netflix understood why fans clung to the show, which only made the optics of the cancellation worse. The streaming service took the rare approach of &lt;a href="https://twitter.com/netflix/status/1106246147771764736"&gt;using Twitter to announce&lt;/a&gt; the “very difficult decision” not to renew &lt;em&gt;One Day at a Time&lt;/em&gt; for a fourth season. “We spent several weeks trying to find a way to make another season work,” the thread reads, “but in the end simply not enough people watched to justify another season.” Netflix is notoriously tight-lipped about program ratings, except &lt;a href="https://www.theatlantic.com/entertainment/archive/2019/01/netflixs-hit-bird-box-future-blockbusters/580255/?utm_source=msn"&gt;when they’re staggering&lt;/a&gt;, meaning the statement placed blame on the one factor in the cancellation that no one outside the company could really understand or accept. It was like passing the buck to a ghost.&lt;/p&gt;&lt;p&gt;But the idea that &lt;em&gt;One Day at a Time&lt;/em&gt;’s future was ever outside Netflix’s control was an illusion. The cast, showrunners, and fans were left to push for the show’s renewal on social media because Netflix had failed to give the throwback sitcom the same robust promotion it had given other buzzy original series, such as &lt;em&gt;Stranger Things&lt;/em&gt; and &lt;em&gt;13 Reasons Why&lt;/em&gt;. Hot off an &lt;a href="https://www.indiewire.com/2019/01/roma-oscar-campaign-20-million-netflix-best-picture-1202035282/"&gt;expensive Oscars campaign&lt;/a&gt; for &lt;em&gt;Roma&lt;/em&gt;, the company has been &lt;a href="https://twitter.com/netflix/status/1101225530932682752?lang=en"&gt;touting itself&lt;/a&gt; as a platform for diverse voices, but that commitment feels hollow when one of its most inclusive shows was given so few opportunities to find an audience.&lt;/p&gt;&lt;p&gt;For many, Netflix’s online eulogy for &lt;em&gt;One Day at a Time&lt;/em&gt; was too little, too late. Addressing fans who felt “seen or represented” by the show, the company wrote, “Please don’t take this as an indication your story is not important. The outpouring of love for this show is a firm reminder to us that we must continue finding ways to tell these stories.” The use of “we” and “us” in such a corporate context is patronizing, drawing a line between the people in “these stories” and the people with the power to broadcast them. It grates precisely because Netflix &lt;a href="https://www.nytimes.com/2019/03/14/arts/television/one-day-at-a-time-canceled-netflix.html"&gt;seems to know&lt;/a&gt; exactly what reputational damage it needs to control but refuses to acknowledge playing any role in the problem. And, ultimately, noble mission statements don’t speak as loudly as a &lt;a href="https://www.nytimes.com/2018/12/04/business/media/netflix-friends.html"&gt;$100 million deal&lt;/a&gt; to retain the rights to stream &lt;em&gt;Friends&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;As &lt;em&gt;Vanity Fair&lt;/em&gt;’s Sonia Saraiya &lt;a href="https://twitter.com/soniasaraiya/status/1106252271212523522"&gt;pointed out on Twitter&lt;/a&gt;, Netflix’s early brand as an original-content provider was defined by the revival of the cult favorite &lt;em&gt;Arrested Development&lt;/em&gt;, framing the platform as a space where ratings matter less than the passion of a fan base. The streaming service has since stoked that reputation by reviving broadcast dramas such as &lt;a href="https://tvline.com/2018/06/15/lucifer-netflix-season-4-renewed-returning/"&gt;&lt;em&gt;Lucifer&lt;/em&gt;&lt;/a&gt; (from Fox) and &lt;a href="https://people.com/tv/designated-survivor-netflix-return-after-cancellation/"&gt;&lt;em&gt;Designated Survivor&lt;/em&gt;&lt;/a&gt; (from ABC). &lt;em&gt;One Day at a Time&lt;/em&gt;’s situation stings, in part, because it comes from a company that has identified itself as an ally to fans; the cancellation is a reminder that the entertainment business is fundamentally a business, everywhere.&lt;/p&gt;&lt;p&gt;The co-creators Mike Royce and Gloria Calderón Kellett are currently &lt;a href="https://twitter.com/MikeRoyce/status/1106247358960955392"&gt;exploring potential new homes&lt;/a&gt; for &lt;em&gt;One Day at a Time&lt;/em&gt;, so there’s a chance the characters will live on somewhere else; the show allowed for that kind of hope. But regardless of its fate, the sitcom has already accomplished something special. In a pep talk, Schneider once urged an anxious Penelope, “Don’t quit before the miracle happens.” The team behind &lt;em&gt;One Day at a Time&lt;/em&gt; isn’t quitting, but the miracle has already happened.&lt;/p&gt;</content>
    <author>
      <name>Kelly Connolly</name>
      <uri>http://local.theatlantic.com/author/kelly-connolly/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/ODAAT_309_Unit_01280R/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Ali Goldstein / Netflix</media:credit>
      <media:description>Todd Grinnell and Justina Machado in &lt;i&gt;One Day at a Time&lt;/i&gt;</media:description>
    </media:content>
    <title type="html">&lt;em&gt;One Day at a Time&lt;/em&gt; Taught Its Fans How to Say Goodbye</title>
    <link href="https://local.theatlantic.com/entertainment/archive/2019/03/netflixs-one-day-at-a-time-taught-fans-about-loss/585061/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T13:51:00-04:00</published>
    <updated>2019-03-15T14:53:31-04:00</updated>
    <summary type="html">The beloved Netflix sitcom understood loss as an inevitability. But the show’s cancellation after three seasons is still difficult for many viewers to accept.</summary>
    <id>tag:theatlantic.com,2019:50-585061</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;By the time the news of mass shootings at two mosques in Christchurch, New Zealand, spread around the world, the effort to remove materials left behind by a suspect in the terror attack online was already well under way.&lt;/p&gt;&lt;p&gt;Social-media sites including &lt;a href="https://twitter.com/RMac18/status/1106415649947947008"&gt;Facebook&lt;/a&gt;, &lt;a href="https://twitter.com/RMac18/status/1106405162833174528"&gt;Twitter&lt;/a&gt;, and &lt;a href="https://twitter.com/YouTube/status/1106431532976074753"&gt;YouTube&lt;/a&gt; said they were removing footage of the attack, which was broadcast live to Facebook, from their platforms. Accounts associated with the suspected perpetrators were suspended, and copies of a 74-page manifesto posted by one of the suspects were taken down. New Zealand police &lt;a href="https://twitter.com/nzpolice/status/1106402006183219203"&gt;urged&lt;/a&gt; the public not to share the content.&lt;/p&gt;&lt;p&gt;But these materials were still readily available in one corner of the internet: the British press. The &lt;em&gt;Daily Mail&lt;/em&gt; and the&lt;em&gt; Daily Mirror&lt;/em&gt;, which are among the most popular newspapers in the United Kingdom, published edited versions of the video to their websites. &lt;em&gt;The Sun&lt;/em&gt;, the U.K.’s most widely read newspaper, ran a GIF from the video on its homepage. The&lt;em&gt; Mail &lt;/em&gt;even hosted the suspect’s full manifesto, which was &lt;a href="https://www.buzzfeed.com/markdistefano/the-daily-mail-let-readers-download-the-new-zealand-mosque"&gt;available for download&lt;/a&gt; directly from its website.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt;Read: The shooter’s manifesto was designed to troll&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Only after backlash did the newspapers remove the content from their websites. Lloyd Embley, the group editor in chief of the &lt;em&gt;Mirror&lt;/em&gt;, confirmed in a &lt;a href="https://twitter.com/Mirror_Editor/status/1106534340333314048"&gt;statement&lt;/a&gt; that the video was uploaded in violation of the newspaper’s policies. A spokesperson for the &lt;em&gt;Mail &lt;/em&gt;&lt;a href="https://twitter.com/MarkDiStef/status/1106580013409857536"&gt;said&lt;/a&gt; that publishing the manifesto to its website was done “in error.”&lt;/p&gt;&lt;p&gt;Such atrocities invariably raise questions about how news organizations should cover acts of violence. When, for example, is it appropriate to label an event &lt;a href="https://www.theatlantic.com/international/archive/2018/10/pipe-bomb-mailings-what-is-terrorism/574066/?utm_source=msn"&gt;an act of terrorism&lt;/a&gt; or someone &lt;a href="https://www.theatlantic.com/politics/archive/2018/04/the-difference-between-killer-and-terrorist/558998/?utm_source=msn"&gt;a terrorist&lt;/a&gt;? How should journalists &lt;a href="https://www.theatlantic.com/politics/archive/2017/05/terrorism-is-aimed-at-the-people-watching/527724/?utm_source=msn"&gt;frame their stories&lt;/a&gt;? When should the media publish the &lt;a href="https://www.theatlantic.com/national/archive/2014/05/mass-murder-should-not-be-a-ticket-to-fame/371599/?utm_source=msn"&gt;names of the perpetrators&lt;/a&gt; involved in attacks, if at all? The attacks in Christchurch have raised another such question: Should media outlets share details of an attack, including related images and propaganda, with their audience? And what are the implications for the public discourse if they do?&lt;/p&gt;&lt;p&gt;We asked Al Tompkins, a senior faculty member at the Poynter Institute, the nonprofit journalism school in St. Petersburg, Florida, about what news organizations should do in such cases. “My suggestion is not to have an outright prohibition against using graphic images, but I would raise my bar pretty high to say this: Is there any reason why the public needs to see these images in order to understand what occurred?” he said.&lt;/p&gt;&lt;p&gt;Tompkins suggested that in the case of an incident such as a police shooting in which the facts are in dispute, the release of graphic video might be justified. But in a case such as the attacks in Christchurch, he said, “the video [is] not illuminating beyond the description of what occurred.”&lt;/p&gt;&lt;p&gt;Tompkins said the same rules should govern a shooter’s manifesto. It is usually acceptable to provide a generic summary of the manifesto, he said, but citing the example of the Unabomber’s manifesto—published by American media in 1995, following an appeal from federal law-enforcement agencies that wanted to avoid more casualties—he added: “Rarely, under the most extreme circumstances, would such a thing be re-publishable.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/ideas/archive/2019/02/christopher-hasson-was-inspired-breivik-manifesto/583567/?utm_source=msn"&gt;J. M. Berger: The dangerous spread of extremist manifestos&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Publishing terrorists’ manifestos “tend[s] to do two things,” he said. “First, it gives more power to the shooter; second, it does nothing to illuminate anything that we don’t already know.”&lt;/p&gt;&lt;p&gt;In the long term, exposure to such events inures the public to its impact. Indeed, in the United States, which has seen hundreds of mass shootings over the past few decades, gun sales &lt;a href="https://www.bloomberg.com/graphics/2018-february-gun-sales/"&gt;typically rise&lt;/a&gt; in the immediate aftermath, perhaps in fear that lawmakers might enact gun-control legislation. In fact, social scientists have long postulated that the media’s coverage of mass shootings might contribute to more mass shootings. A &lt;a href="http://ftp.iza.org/dp11900.pdf"&gt;recent discussion paper&lt;/a&gt; by the economists Michael Jetter, a senior lecturer at the University of Western Australia, and Jay K. Walker, an assistant professor at Old Dominion University, in Virginia, found a link between media coverage of mass shootings and subsequent mass shootings over the next 10 to 14 days.&lt;/p&gt;&lt;p&gt;Yet these latest shootings also illustrate a difficulty in policing such coverage. Though the attacks occurred in Christchurch, the offending stories were published by British outlets, and were free to read the world over. The New Zealand police might have called for caution when circulating the details, but their jurisdiction does not extend across the internet.&lt;/p&gt;</content>
    <author>
      <name>Yasmeen Serhan</name>
      <uri>http://local.theatlantic.com/author/yasmen-serhan/?utm_source=msn</uri>
    </author>
    <author>
      <name>Krishnadev Calamur</name>
      <uri>http://local.theatlantic.com/author/krishnadev-calamur/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/_Kai_Schwoerer_Getty/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Kai Schwoerer / Getty</media:credit>
      <media:description>A survivor of the shooting at Al Noor mosque in Christchurch, New Zealand, waits for his wife to pick him up.</media:description>
    </media:content>
    <title type="html">The Media Still Haven’t Figured Out How to Cover Acts of Violence</title>
    <link href="https://local.theatlantic.com/international/archive/2019/03/british-media-christchurch-mosque-new-zealand/585076/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T13:21:00-04:00</published>
    <updated>2019-03-15T15:38:50-04:00</updated>
    <summary type="html">After mass shootings at two New Zealand mosques, British news organizations received backlash for publishing the shooter’s manifesto and video of the attacks.</summary>
    <id>tag:theatlantic.com,2019:50-585076</id>
  </entry>
  <entry>
    <content type="html">&lt;p&gt;Forty-nine people are dead and 20 more injured after terrorist attacks on two New Zealand mosques Friday. One of the alleged shooters is a white man who appears to have announced the attack on the anonymous-troll message board 8chan. There, he posted images of the weapons days before the attack, and an announcement an hour before. On 8chan and Twitter, he also posted links to a 74-page manifesto, titled “The Great Replacement,” blaming immigration for the displacement of whites in Oceania and elsewhere. The manifesto cites “white genocide” as a motive for the attack, and calls for “a future for white children” as its goal.&lt;/p&gt;&lt;p&gt;The person who wrote the manifesto, &lt;a href="https://www.wsj.com/articles/new-zealand-shooting-suspect-is-28-year-old-australian-11552660359"&gt;identified by authorities&lt;/a&gt; as a 28-year-old Australian named Brenton Tarrant, also live-streamed one of the attacks on Facebook; Tarrant appears to have posted a link to the stream on 8chan before carrying out the attack.&lt;/p&gt;&lt;p&gt;It’s terrifying stuff, especially since 8chan is one of a handful of sites where disaffected internet misfits create memes and other messages to provoke dismay and sow chaos among the “normies” outside their ranks, whom they often see as suckers at best, oppressors at worst. “It’s time to stop shitposting,” the alleged shooter’s 8chan post reads, “and time to make a real-life effort post.” Many of the &lt;a href="https://twitter.com/21sst/status/1106429257700556801?s=12"&gt;responses&lt;/a&gt;, anonymous by 8chan’s nature, celebrate the attack, with some posting congratulatory Nazi memes. A few seem to decry it, even if just for logistical quibbles. Still others lament that the whole affair might destroy the site, a concern that betrays its users’ priorities.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/technology/archive/2019/02/reason-conspiracy-videos-work-so-well-youtube/583282/?utm_source=msn"&gt;Read: Why conspiracy videos go viral on YouTube&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;Social-media companies &lt;a href="https://www.wsj.com/articles/live-video-of-new-zealand-mosque-shooting-dodges-social-media-safeguards-11552657931"&gt;scrambled&lt;/a&gt; to take action as the news—and the video—of the attack spread. Facebook finally managed to pull down Tarrant’s profiles and the video, but only &lt;a href="https://www.cnn.com/2019/03/15/tech/new-zealand-shooting-video-facebook-youtube/index.html"&gt;after&lt;/a&gt; New Zealand police brought the live-stream to the company’s attention. Twitter also suspended Tarrant’s account, where he had posted links to the manifesto from several file-sharing sites.&lt;/p&gt;&lt;p&gt;The chaotic aftermath mostly took place while many North Americans slept unaware, waking up to the news and its associated confusion. By morning on the East Coast, news outlets had already &lt;a href="https://www.cnn.com/2019/03/15/tech/new-zealand-shooting-video-facebook-youtube/index.html"&gt;weighed in&lt;/a&gt; on whether technology companies might be partly to blame for catastrophes such as the New Zealand massacre because they have failed to catch offensive content before it spreads. But the internet was designed to resist the efforts of any central authority to control its content—even when a few large, wealthy companies control the channels by which most users access information.&lt;/p&gt;&lt;hr class="c-section-divider"&gt;&lt;p&gt;“Tech companies basically don’t see this as a priority,” the counter-extremism policy adviser Lucinda Creighton &lt;a href="https://m.cnn.com/en/article/h_5914c4f0f00a0c186703bc792e97143b"&gt;told&lt;/a&gt; CNN. “They say this is terrible, but what they’re not doing is preventing this from reappearing.” Others affirmed the importance of quelling the spread of the manifesto, video, and related materials, for fear of producing copycats, or of at least furthering radicalization among those who would be receptive to the message. “Do not share the video or you are part of this,” said a retired FBI agent who now works as an analyst for CNN.&lt;/p&gt;&lt;p&gt;That might be impossible. When I started catching up on the shooting this morning, I stumbled upon the video of the massacre searching for news. I didn’t intend to watch it, but it autoplayed in my Twitter search results, and I couldn’t look away until it was too late. I wish I’d never seen it, but I didn’t even get a chance to ponder that choice before Twitter forced it upon me. The internet is a Pandora’s box that never had a lid.&lt;/p&gt;&lt;p&gt;The circulation of ideas might have motivated the shooter as much as, or even more than, ethnic violence. As Charlie Warzel wrote at &lt;em&gt;The New York Times&lt;/em&gt;, the New Zealand massacre seems to have been &lt;a href="https://www.nytimes.com/2019/03/15/opinion/new-zealand-shooting.html"&gt;made to go viral&lt;/a&gt;. Tarrant teased his intentions and preparations on 8chan. When the time came to carry out the act, he provided a trove of resources for his anonymous brethren, scattered to the winds of mirror sites and repositories. Once the live-stream started, one 8chan user posted “capped for posterity” on Tarrant’s thread, meaning that he had downloaded the stream’s video for archival and, presumably, future upload to other services, such as Reddit or 4chan, where other like-minded trolls or radicals would ensure the images spread even further. As Warzel put it, “Platforms like Facebook, Twitter, and YouTube … were no match for the speed of their users.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn"&gt;Read: The shooter’s manifesto was designed to troll&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.theatlantic.com/technology/archive/2018/04/3-questions-mark-zuckerberg-hasnt-answered/557720/?utm_source=msn"&gt;Defending himself&lt;/a&gt; and Facebook before Congress last year against myriad failures, including allowing Russian operatives to disrupt American elections and permitting illegal housing ads that discriminate by race, Mark Zuckerberg repeatedly invoked artificial intelligence as a solution for the problems his and other global internet companies have created. There’s just too much content for human moderators to process, even when pressed hard to do so under &lt;a href="https://www.theverge.com/2019/2/25/18229714/cognizant-facebook-content-moderator-interviews-trauma-working-conditions-arizona"&gt;poor working conditions&lt;/a&gt;. The answer, Zuckerberg has argued, is to train AI to do the work for them.&lt;/p&gt;&lt;p&gt;But that technique has &lt;a href="https://www.propublica.org/article/facebook-advertising-discrimination-housing-race-sex-national-origin"&gt;proved insufficient&lt;/a&gt;. For one part, that’s because AI is an aspirational solution for a future that has not arrived. It gives Zuckerberg and others rhetorical cover more than technological outcomes. But for another, detecting and scrubbing undesirable content automatically is extremely difficult. False positives enrage earnest users or &lt;a href="https://www.theatlantic.com/technology/archive/2019/02/reason-conspiracy-videos-work-so-well-youtube/583282/?utm_source=msn"&gt;foment conspiracy theories&lt;/a&gt; among paranoid ones, thanks to the black-box nature of computer systems. Worse, given a pool of billions of users, the clever ones will always find ways to trick any computer system, for example, by slightly modifying images or videos in order to make them appear different to the computer but identical to human eyes. 8chan, as it happens, is largely populated by computer-savvy people who have self-organized to perpetrate exactly those kinds of tricks.&lt;/p&gt;&lt;p&gt;The primary sources are only part of the problem, too. Long after the deed, &lt;a href="https://www.washingtonpost.com/opinions/youtube-has-bolstered-conspiracy-theories-about-my-daughters-murder-it-must-stop/2019/03/06/01242e26-3ebc-11e9-922c-64d6b7840b82_story.html?utm_term=.c74ec78396d0"&gt;YouTube has bolstered conspiracy theories&lt;/a&gt; about murders, successfully replacing truth with lies among broad populations of users who might not even know they are being deceived. Even stock-photo providers are &lt;a href="https://pictures.reuters.com/archive/NEWZEALAND-SHOOTOUT--RC1EA5A5A190.html"&gt;licensing stills&lt;/a&gt; from the New Zealand shooter’s video; a Reuters image that shows the perpetrator wielding his rifle as he enters the mosque is simply credited, “Social media.”&lt;/p&gt;&lt;hr class="c-section-divider"&gt;&lt;p&gt;The video is just the tip of the iceberg. Many smaller and less obviously inflamed messages have no hope of being found, isolated, and removed by technology services. The shooter praised Donald Trump as a “symbol of renewed white identity” and incited the conservative commentator Candace Owens, who &lt;a href="https://twitter.com/RealCandaceO/status/1106391443457888257"&gt;took the bait&lt;/a&gt; on Twitter in a post that got retweeted thousands of times by the morning after the attack. The shooter’s forum posts and video are &lt;a href="https://www.nytimes.com/2019/03/15/world/asia/new-zealand-gunman-christchurch.html"&gt;littered with memes and inside references&lt;/a&gt; that bear special meaning within certain communities on 8chan, 4chan, Reddit, and other corners of the internet, offering tempting receptors for consumption and further spread.&lt;/p&gt;&lt;p data-id="injected-recirculation-link"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/magazine/archive/2019/04/adam-serwer-madison-grant-white-nationalism/583258/?utm_source=msn"&gt;Read: White nationalism’s deep American roots&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Perhaps worst of all, the forum posts, the manifesto, and even the shooting itself might not have been carried out with the purpose that a literal read of their contents suggests. On first blush, it seems impossible to deny that this terrorist act was motivated by white-supremacist hatred, an animosity that authorities like the FBI expert and the Facebook officials would want to snuff out before it spreads. But 8chan is notorious for an ironic, above-it-all approach to all of its perversities, a squalor amplified by the anonymity intrinsic to the service. Here, where users post “for the lulz,” or just to get a rise out of those who aren’t in the know, the ideology embraces chaos before it does zealotry. But the internet separates images from context and action from intention, and then it spreads those messages quickly among billions of people scattered all around the globe. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;That structure makes it impossible to even know what individuals like Tarrant “really mean” by their words and actions. As it spreads, social-media content neuters earnest purpose entirely, putting it on the same level as anarchic randomness. What a message means collapses into how it gets used and interpreted. For 8chan trolls, &lt;a href="https://twitter.com/YourAnonCentral/status/1106437850289995776"&gt;any ideology might be as good as any other&lt;/a&gt;, so long as it produces chaos. No one can find safe harbor from this upheaval. Even here, I am forced to tiptoe around the question of what truly motivated Tarrant and his apparent accomplices. In the process, I risk playing into the hands of conspiracy theorists and trollish contrapuntists on Twitter, YouTube, Facebook, Reddit, and all the rest, underplaying white-supremacist violence by casting it as an epiphenomenon of disgruntled internet culture. There is no winning at this game. &lt;em&gt;The Atlantic&lt;/em&gt; originally illustrated this story with the stock-image still from the live-stream video, only to change it after internet users found it offensive. Did we do the right thing, or simply perpetuate the disquiet 8chan hoped for? The answer is unknowable.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;It’s easy to say that technology companies can do better. They can, and should. But ultimately, that’s not the problem. The problem is the media ecosystem they have created. The only surprise is that anyone would still be surprised that social media produce this tragic abyss, for this is what social media are supposed to do, what they were designed to do: spread the images and messages that accelerate interest, without check, and absent concern for their consequences. It’s worth remembering that “viral” spread once referred to contagious disease, not to images and ideas. As long as technology platforms drive the spread of global information, they can’t help but carry it like a plague.&lt;/p&gt;</content>
    <author>
      <name>Ian Bogost</name>
      <uri>http://local.theatlantic.com/author/ian-bogost/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/AP_19074081873864/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Associated Press</media:credit>
    </media:content>
    <title type="html">Social Media Are a Mass Shooter’s Best Friend</title>
    <link href="https://local.theatlantic.com/technology/archive/2019/03/how-terrorism-new-zealand-spread-social-media/585040/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T12:33:39-04:00</published>
    <updated>2019-03-15T15:53:29-04:00</updated>
    <summary type="html">A terrorist attack in New Zealand cast new blame on how technology platforms police content. But global internet services were designed to work this way, and there might be no escape from their grip.</summary>
    <id>tag:theatlantic.com,2019:50-585040</id>
  </entry>
  <entry>
    <content type="html">&lt;p dir="ltr"&gt;In the hours after the horrific mass shootings at two mosques in Christchurch, New Zealand, people desperately searched the internet for any sign of a motive or meaning behind the attack. Early Friday, a number of unverified social-media posts surfaced, along with a bizarre manifesto posted to &lt;a href="https://splinternews.com/meet-the-man-keeping-8chan-the-worlds-most-vile-websit-1793856249"&gt;8chan&lt;/a&gt;, rich with irony and references to memes.&lt;/p&gt;&lt;p dir="ltr"&gt;Together, the posts suggest that every aspect of the shootings was designed to gain maximum attention online, in part by baiting the media. The shooter live-streamed the attack itself on Facebook, and the video was quickly shared across YouTube, Twitter, and Instagram. Before committing the act, he shouted, “Remember, lads, subscribe to PewDiePie,” a reference to Felix Kjellberg, who runs YouTube’s most subscribed-to channel. The phrase itself is a meme started by PewDiePie’s fans, and its goal is to be reprinted.&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/politics/archive/2018/03/youtube-extremism-and-the-long-tail/555350/?utm_source=msn"&gt;Read: YouTube extremism and the long tail&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Kjellberg, who has previously found himself &lt;a href="https://www.theverge.com/2018/12/10/18134748/pewdiepie-er-pewnews-youtube-hateful-content-anti-semitic"&gt;embroiled in controversy over alleged anti-Semitism&lt;/a&gt;, disavowed the shooting on Twitter Friday morning. “Just heard news of the devastating reports from New Zealand Christchurch. I feel absolutely sickened having my name uttered by this person. My heart and thoughts go out to the victims, families and everyone affected by this tragedy,” &lt;a href="https://twitter.com/pewdiepie/status/1106419935390171136?s=19"&gt;he wrote&lt;/a&gt;. By forcing Kjellberg to acknowledge the attack, the shooter succeeded in further spreading the word about the crime to Kjellberg’s tens of millions of followers.&lt;/p&gt;&lt;blockquote class="twitter-tweet" data-lang="en"&gt;
&lt;p dir="ltr" lang="en"&gt;"Subscribe to PewDiePie" is a meme that encompasses a misled belief that it's a fight for the disenfranchised; those constantly being pushed down. It's David vs Goliath. It's used on boards like 8chan as a rallying cry. It doesn't belong to PDP anymore — but we need to examine it&lt;/p&gt;
— julia &#x1f914; alexander (@loudmouthjulia) &lt;a href="https://twitter.com/loudmouthjulia/status/1106543818625699840?ref_src=twsrc%5Etfw"&gt;March 15, 2019&lt;/a&gt;&lt;/blockquote&gt;&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&lt;p dir="ltr"&gt;Significant portions of the manifesto appear to be an elaborate troll, written to prey on the mainstream media’s worst tendencies. As the journalist Robert Evans &lt;a href="https://www.bellingcat.com/news/rest-of-world/2019/03/15/shitposting-inspirational-terrorism-and-the-christchurch-mosque-massacre/"&gt;noted&lt;/a&gt;, “This manifesto is a trap … laid for journalists searching for the meaning behind this horrific crime. There is truth in there, and valuable clues to the shooter’s radicalization, but it is buried beneath a great deal of, for lack of a better word, ‘shitposting.’”&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;em&gt;&lt;a href="https://knowyourmeme.com/memes/shitposting"&gt;Shitposting&lt;/a&gt;&lt;/em&gt; is a slang term used to describe the act of posting trollish and usually ironic content designed to derail a conversation or elicit a strong reaction from people who aren’t in on the joke. Certain aspects of the shooter’s manifesto fall into this category. He includes &lt;a href="https://knowyourmeme.com/memes/navy-seal-copypasta"&gt;Navy Seal Copypasta&lt;/a&gt;, a meme that originated on 4chan. He claims that Spyro: Year of the Dragon, a video game, taught him ethno-nationalism and that &lt;a href="https://www.thedailybeast.com/how-fortnite-became-the-biggest-game-on-the-internet"&gt;Fortnite&lt;/a&gt; taught him to “floss on the corpses,” referring to a viral dance move from the game. These absurd references are meant to troll readers.&lt;/p&gt;&lt;blockquote class="twitter-tweet" data-conversation="none" data-lang="en"&gt;
&lt;p dir="ltr" lang="en"&gt;One more thought: the shooter makes repeated references to the “remove Kebab” meme, which is based on a propaganda video produced by Serb nationalist forces during the Bosnian War &amp;amp; Bosnian Genocide in 90s. Meshes w/ Obilić references &amp;amp; clear Breivik influence.&lt;/p&gt;
— Jasmin Mujanović (@JasminMuj) &lt;a href="https://twitter.com/JasminMuj/status/1106396245449424896?ref_src=twsrc%5Etfw"&gt;March 15, 2019&lt;/a&gt;&lt;/blockquote&gt;&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&lt;p dir="ltr"&gt;The shooter also credits the far-right personality Candace Owens with helping to “push me further and further into the belief of violence over meekness.” Though the shooter could be a genuine fan of Owens, who has been &lt;a href="https://www.mediamatters.org/people/candace-owens"&gt;known to espouse right-leaning views on immigration and gun control&lt;/a&gt;, this reference might be meant to incite Owens’s critics to blame her.&lt;/p&gt;&lt;p dir="ltr"&gt;That doesn’t mean the racism expressed throughout the 74-page manifesto isn’t genuine. But the complexities of the crime are still unfolding, and as the &lt;em&gt;New York Times&lt;/em&gt; journalist Kevin Roose &lt;a href="https://twitter.com/kevinroose/status/1106407789067419648"&gt;cautioned&lt;/a&gt;, “The NZ shooter’s apparent manifesto is thick with irony and meta-text and very easy to misinterpret.” Unfortunately, when journalists report on these horrific acts, the shooter’s hateful messages are sometimes amplified in the process. But the origins of that hate and the shooter’s public postings do need to be examined, even when taking them at face value is difficult.&lt;/p&gt;&lt;p dir="ltr"&gt;Mass killers have long exploited the media environments they operate within. The Zodiac killer gained notoriety by &lt;a href="https://en.wikisource.org/wiki/Zodiac_Killer_letters"&gt;persuading newspapers to publish his cryptic messages&lt;/a&gt;. In 2015, a shooter in Virginia &lt;a href="https://www.theverge.com/2015/8/27/9217305/virginia-shooting-mass-murder-contagion-social-media"&gt;killed people during a live television broadcast&lt;/a&gt;.&lt;/p&gt;&lt;p dir="ltr"&gt;As the internet and social media have democratized access to information, much of it spreads without necessary context. As the &lt;em&gt;Verge&lt;/em&gt; writer Elizabeth Lopatto &lt;a href="https://www.theverge.com/2015/8/27/9217305/virginia-shooting-mass-murder-contagion-social-media"&gt;noted in 2015&lt;/a&gt;, “Our interactions with these killers were mediated by huge media gatekeepers—their manifestos were left at their homes, or sent to newspapers and TV stations. If the manifestos appeared at all, they were quoted from, rather than released in full. This is no longer the case.”&lt;/p&gt;&lt;p data-id="injected-recirculation-link" dir="ltr"&gt;&lt;i&gt;[&lt;a href="https://www.theatlantic.com/ideas/archive/2019/02/christopher-hasson-was-inspired-breivik-manifesto/583567/?utm_source=msn"&gt;Read: The dangerous spread of extremist manifestos&lt;/a&gt;]&lt;/i&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;While this system of gatekeeping itself was undoubtedly problematic, since many of the gatekeepers upheld norms and power structures built on privilege, technology has upended our media environment so quickly that many people are ill-equipped to handle the new information environment. We’ve seen the consequences of this play out in the rise of fake news, thriving misinformation campaigns, and bizarre viral hoaxes &lt;a href="https://www.theatlantic.com/technology/archive/2019/02/momo-challenge-hoax/583825/?utm_source=msn"&gt;warped by trolls to capitalize on people’s worst fears&lt;/a&gt;.&lt;/p&gt;&lt;p dir="ltr"&gt;Before people can even begin to grasp the nuances of today’s internet, they can be &lt;a href="https://www.theatlantic.com/politics/archive/2018/03/youtube-extremism-and-the-long-tail/555350/?utm_source=msn"&gt;radicalized by it&lt;/a&gt;. Platforms such as YouTube and Facebook can send users barreling into fringe communities where extremist views are normalized and advanced. Because these communities have so successfully adopted irony as a cloaking device for promoting extremism, &lt;a href="https://twitter.com/oneunderscore__/status/1106525108850565121"&gt;outsiders are left confused as to what is a real threat and what’s just trolling&lt;/a&gt;. The darker corners of the internet are so fragmented that even when they spawn a mass shooting, as in New Zealand, the shooter’s words can be nearly impossible to parse, even for those who are &lt;a href="https://www.dailydot.com/unclick/what-does-it-mean-to-be-extremely-online/"&gt;Extremely Online&lt;/a&gt;.&lt;/p&gt;</content>
    <author>
      <name>Taylor Lorenz</name>
      <uri>http://local.theatlantic.com/author/taylor-lorenz/?utm_source=msn</uri>
    </author>
    <media:content url="https://cdn.theatlantic.com/assets/media/img/mt/2019/03/RTX6RAK9/lead_960.jpg" medium="image">
      <mi:hasSyndicationRights>1</mi:hasSyndicationRights>
      <media:credit>Reuters</media:credit>
      <media:description>New Zealand police push back members of the public after the shooting at the Masjid Al Noor mosque in Christchurch.</media:description>
    </media:content>
    <title type="html">The Shooter’s Manifesto Was Designed to Troll</title>
    <link href="https://local.theatlantic.com/technology/archive/2019/03/the-shooters-manifesto-was-designed-to-troll/585058/?utm_source=msn" rel="alternate" />
    <published>2019-03-15T12:21:27-04:00</published>
    <updated>2019-03-15T15:52:55-04:00</updated>
    <summary type="html">The violent rhetoric was written for an audience.</summary>
    <id>tag:theatlantic.com,2019:50-585058</id>
  </entry>
</feed>

xml 空容器

magento2-layout-empty-container
<container name="some.container" htmlTag="div" htmlClass="container">
    <!-- Force container to render -->
    <block class="Magento\Framework\View\Element\Text">
        <arguments>
            <argument name="text" xsi:type="string"><![CDATA[&nbsp;]]></argument>
        </arguments>
    </block>
</container>

xml 的WebRTC-结构

webrtc-struct
http://www.artvc-mcu.top:9000/webrtc.xhtml

xml 事件监听和回叫方法

安德鲁德APP中的事件处理

MainActivity.java
// Declaring a button, treating it as an object and finding the button that should be listened to by ID
Button button = findViewById(R.id.button);

// Event handling method (click)
        button.setOnClickListener(
          // Adding the listener
                new Button.OnClickListener(){
                  // Event executed method
                    public void onClick(View v) {
                      // Declaring a textView, treating it as an object and finding the textView that should change value when event is executed
                        TextView textView = findViewById(R.id.textView);
                        // Changing the value of the textView
                        textView.setText("Clicked");
                    }
                }
        );
strings.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <string name="button">Click</string>
    <string name="textView">Text</string>
</resources>

xml 事件监听和回叫方法

安德鲁德APP中的事件处理

MainActivity.java
// Declaring a button, treating it as an object and finding the button that should be listened to by ID
Button button = (Button)findViewById(R.id.button);

// Event handling method (click)
        button.setOnClickListener(
          // Adding the listener
                new Button.OnClickListener(){
                  // Event executed method
                    public void onClick(View v) {
                      // Declaring a textView, treating it as an object and finding the textView that should change value when event is executed
                        TextView textView = (TextView)findViewById(R.id.textView);
                        // Changing the value of the textView
                        textView.setText("Clicked");
                    }
                }
        );
strings.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <string name="button">Click</string>
    <string name="textView">Text</string>
</resources>