Skip to content

Instantly share code, notes, and snippets.

@sunnyuxuan
Last active March 14, 2016 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sunnyuxuan/4485a768738421cc78cb to your computer and use it in GitHub Desktop.
Save sunnyuxuan/4485a768738421cc78cb to your computer and use it in GitHub Desktop.
week8 problems
Location IndiaICATOR SUBJECT MEASURE FREQUENCY Year number
Australia MEATCONSUMP BEEF KG_CAP A 1983 29.5792547
Australia MEATCONSUMP BEEF KG_CAP A 1984 31.10452816
Australia MEATCONSUMP BEEF KG_CAP A 1985 28.69243026
Australia MEATCONSUMP BEEF KG_CAP A 1986 29.30333555
Australia MEATCONSUMP BEEF KG_CAP A 1987 28.19191012
Australia MEATCONSUMP BEEF KG_CAP A 1988 28.92143335
Australia MEATCONSUMP BEEF KG_CAP A 1989 30.2827978
Australia MEATCONSUMP BEEF KG_CAP A 1990 28.22040625
Australia MEATCONSUMP BEEF KG_CAP A 1991 27.64857294
Australia MEATCONSUMP BEEF KG_CAP A 1992 26.13495446
Australia MEATCONSUMP BEEF KG_CAP A 1993 26.12543833
Australia MEATCONSUMP BEEF KG_CAP A 1994 25.41980582
Australia MEATCONSUMP BEEF KG_CAP A 1995 25.23908892
Australia MEATCONSUMP BEEF KG_CAP A 1996 27.16688576
Australia MEATCONSUMP BEEF KG_CAP A 1997 28.67101813
Australia MEATCONSUMP BEEF KG_CAP A 1998 26.34760248
Australia MEATCONSUMP BEEF KG_CAP A 1999 27.65539293
Australia MEATCONSUMP BEEF KG_CAP A 2000 26.03719681
Australia MEATCONSUMP BEEF KG_CAP A 2001 24.12926302
Australia MEATCONSUMP BEEF KG_CAP A 2002 24.75323581
Australia MEATCONSUMP BEEF KG_CAP A 2003 25.39981983
Australia MEATCONSUMP BEEF KG_CAP A 2004 28.11118088
Australia MEATCONSUMP BEEF KG_CAP A 2005 26.59985189
Australia MEATCONSUMP BEEF KG_CAP A 2006 26.43393794
Australia MEATCONSUMP BEEF KG_CAP A 2007 23.63085634
Australia MEATCONSUMP BEEF KG_CAP A 2008 22.8210603
Australia MEATCONSUMP BEEF KG_CAP A 2009 22.98484914
Australia MEATCONSUMP BEEF KG_CAP A 2010 24.83542383
Australia MEATCONSUMP BEEF KG_CAP A 2011 22.87011828
Australia MEATCONSUMP BEEF KG_CAP A 2012 22.05318916
Australia MEATCONSUMP BEEF KG_CAP A 2013 23.54956433
Australia MEATCONSUMP BEEF KG_CAP A 2014 21.57367368
Canada MEATCONSUMP BEEF KG_CAP A 1983 28.71203134
Canada MEATCONSUMP BEEF KG_CAP A 1984 27.48418763
Canada MEATCONSUMP BEEF KG_CAP A 1985 27.74866663
Canada MEATCONSUMP BEEF KG_CAP A 1986 27.80195008
Canada MEATCONSUMP BEEF KG_CAP A 1987 26.31755957
Canada MEATCONSUMP BEEF KG_CAP A 1988 26.2112816
Canada MEATCONSUMP BEEF KG_CAP A 1989 25.70613006
Canada MEATCONSUMP BEEF KG_CAP A 1990 24.89627696
Canada MEATCONSUMP BEEF KG_CAP A 1991 24.35076683
Canada MEATCONSUMP BEEF KG_CAP A 1992 23.72533742
Canada MEATCONSUMP BEEF KG_CAP A 1993 22.70287424
Canada MEATCONSUMP BEEF KG_CAP A 1994 23.12146704
Canada MEATCONSUMP BEEF KG_CAP A 1995 23.20485898
Canada MEATCONSUMP BEEF KG_CAP A 1996 22.94810232
Canada MEATCONSUMP BEEF KG_CAP A 1997 23.01036124
Canada MEATCONSUMP BEEF KG_CAP A 1998 23.28722338
Canada MEATCONSUMP BEEF KG_CAP A 1999 23.71133505
Canada MEATCONSUMP BEEF KG_CAP A 2000 23.32746151
Canada MEATCONSUMP BEEF KG_CAP A 2001 22.42220136
Canada MEATCONSUMP BEEF KG_CAP A 2002 22.33936435
Canada MEATCONSUMP BEEF KG_CAP A 2003 23.57785833
Canada MEATCONSUMP BEEF KG_CAP A 2004 22.40305846
Canada MEATCONSUMP BEEF KG_CAP A 2005 21.94170165
Canada MEATCONSUMP BEEF KG_CAP A 2006 21.60816989
Canada MEATCONSUMP BEEF KG_CAP A 2007 22.13657628
Canada MEATCONSUMP BEEF KG_CAP A 2008 21.51639788
Canada MEATCONSUMP BEEF KG_CAP A 2009 20.42203067
Canada MEATCONSUMP BEEF KG_CAP A 2010 20.23023925
Canada MEATCONSUMP BEEF KG_CAP A 2011 19.69706978
Canada MEATCONSUMP BEEF KG_CAP A 2012 19.85752445
Canada MEATCONSUMP BEEF KG_CAP A 2013 19.56642009
Canada MEATCONSUMP BEEF KG_CAP A 2014 18.02488251
Japan MEATCONSUMP BEEF KG_CAP A 1983 4.05307044
Japan MEATCONSUMP BEEF KG_CAP A 1984 4.283478226
Japan MEATCONSUMP BEEF KG_CAP A 1985 4.540428957
Japan MEATCONSUMP BEEF KG_CAP A 1986 4.809564513
Japan MEATCONSUMP BEEF KG_CAP A 1987 5.091403757
Japan MEATCONSUMP BEEF KG_CAP A 1988 5.364466917
Japan MEATCONSUMP BEEF KG_CAP A 1989 5.62023784
Japan MEATCONSUMP BEEF KG_CAP A 1990 6.111035332
Japan MEATCONSUMP BEEF KG_CAP A 1991 6.517054861
Japan MEATCONSUMP BEEF KG_CAP A 1992 6.766243582
Japan MEATCONSUMP BEEF KG_CAP A 1993 7.406406985
Japan MEATCONSUMP BEEF KG_CAP A 1994 8.129089705
Japan MEATCONSUMP BEEF KG_CAP A 1995 8.535522093
Japan MEATCONSUMP BEEF KG_CAP A 1996 8.084054328
Japan MEATCONSUMP BEEF KG_CAP A 1997 8.191614161
Japan MEATCONSUMP BEEF KG_CAP A 1998 8.307385062
Japan MEATCONSUMP BEEF KG_CAP A 1999 8.293790167
Japan MEATCONSUMP BEEF KG_CAP A 2000 8.608473184
Japan MEATCONSUMP BEEF KG_CAP A 2001 7.671785742
Japan MEATCONSUMP BEEF KG_CAP A 2002 7.22118424
Japan MEATCONSUMP BEEF KG_CAP A 2003 7.405606719
Japan MEATCONSUMP BEEF KG_CAP A 2004 6.362566498
Japan MEATCONSUMP BEEF KG_CAP A 2005 6.224757931
Japan MEATCONSUMP BEEF KG_CAP A 2006 6.183262824
Japan MEATCONSUMP BEEF KG_CAP A 2007 6.453203842
Japan MEATCONSUMP BEEF KG_CAP A 2008 6.42496023
Japan MEATCONSUMP BEEF KG_CAP A 2009 6.600733747
Japan MEATCONSUMP BEEF KG_CAP A 2010 6.699772435
Japan MEATCONSUMP BEEF KG_CAP A 2011 6.77261418
Japan MEATCONSUMP BEEF KG_CAP A 2012 6.894166055
Japan MEATCONSUMP BEEF KG_CAP A 2013 6.79959712
Japan MEATCONSUMP BEEF KG_CAP A 2014 6.956114627
Korea MEATCONSUMP BEEF KG_CAP A 1983 3.042888572
Korea MEATCONSUMP BEEF KG_CAP A 1984 2.659027165
Korea MEATCONSUMP BEEF KG_CAP A 1985 2.928312532
Korea MEATCONSUMP BEEF KG_CAP A 1986 3.552584975
Korea MEATCONSUMP BEEF KG_CAP A 1987 3.506645214
Korea MEATCONSUMP BEEF KG_CAP A 1988 3.406580243
Korea MEATCONSUMP BEEF KG_CAP A 1989 3.412678357
Korea MEATCONSUMP BEEF KG_CAP A 1990 3.95980814
Korea MEATCONSUMP BEEF KG_CAP A 1991 5.086045145
Korea MEATCONSUMP BEEF KG_CAP A 1992 5.684065655
Korea MEATCONSUMP BEEF KG_CAP A 1993 5.327513162
Korea MEATCONSUMP BEEF KG_CAP A 1994 5.708013996
Korea MEATCONSUMP BEEF KG_CAP A 1995 6.57720734
Korea MEATCONSUMP BEEF KG_CAP A 1996 6.837327309
Korea MEATCONSUMP BEEF KG_CAP A 1997 7.751639386
Korea MEATCONSUMP BEEF KG_CAP A 1998 6.977815067
Korea MEATCONSUMP BEEF KG_CAP A 1999 8.309405337
Korea MEATCONSUMP BEEF KG_CAP A 2000 8.662962813
Korea MEATCONSUMP BEEF KG_CAP A 2001 7.502624505
Korea MEATCONSUMP BEEF KG_CAP A 2002 8.527571833
Korea MEATCONSUMP BEEF KG_CAP A 2003 8.251074103
Korea MEATCONSUMP BEEF KG_CAP A 2004 6.710593732
Korea MEATCONSUMP BEEF KG_CAP A 2005 6.190938011
Korea MEATCONSUMP BEEF KG_CAP A 2006 6.86129029
Korea MEATCONSUMP BEEF KG_CAP A 2007 7.670134165
Korea MEATCONSUMP BEEF KG_CAP A 2008 7.891396177
Korea MEATCONSUMP BEEF KG_CAP A 2009 7.372620048
Korea MEATCONSUMP BEEF KG_CAP A 2010 8.509573642
Korea MEATCONSUMP BEEF KG_CAP A 2011 8.887834905
Korea MEATCONSUMP BEEF KG_CAP A 2012 9.012861699
Korea MEATCONSUMP BEEF KG_CAP A 2013 9.428322114
Korea MEATCONSUMP BEEF KG_CAP A 2014 11.59496792
Mexico MEATCONSUMP BEEF KG_CAP A 1983 8.630831189
Mexico MEATCONSUMP BEEF KG_CAP A 1984 8.13032193
Mexico MEATCONSUMP BEEF KG_CAP A 1985 7.93931586
Mexico MEATCONSUMP BEEF KG_CAP A 1986 9.267071833
Mexico MEATCONSUMP BEEF KG_CAP A 1987 9.085048235
Mexico MEATCONSUMP BEEF KG_CAP A 1988 8.922102881
Mexico MEATCONSUMP BEEF KG_CAP A 1989 8.551188893
Mexico MEATCONSUMP BEEF KG_CAP A 1990 7.198527888
Mexico MEATCONSUMP BEEF KG_CAP A 1991 8.731795527
Mexico MEATCONSUMP BEEF KG_CAP A 1992 9.084191001
Mexico MEATCONSUMP BEEF KG_CAP A 1993 8.218342262
Mexico MEATCONSUMP BEEF KG_CAP A 1994 9.614254562
Mexico MEATCONSUMP BEEF KG_CAP A 1995 8.220946833
Mexico MEATCONSUMP BEEF KG_CAP A 1996 9.514727115
Mexico MEATCONSUMP BEEF KG_CAP A 1997 9.742785593
Mexico MEATCONSUMP BEEF KG_CAP A 1998 10.47773953
Mexico MEATCONSUMP BEEF KG_CAP A 1999 10.37094398
Mexico MEATCONSUMP BEEF KG_CAP A 2000 10.27795206
Mexico MEATCONSUMP BEEF KG_CAP A 2001 10.5224608
Mexico MEATCONSUMP BEEF KG_CAP A 2002 11.26353281
Mexico MEATCONSUMP BEEF KG_CAP A 2003 10.44916387
Mexico MEATCONSUMP BEEF KG_CAP A 2004 9.945903441
Mexico MEATCONSUMP BEEF KG_CAP A 2005 10.21428583
Mexico MEATCONSUMP BEEF KG_CAP A 2006 10.28010382
Mexico MEATCONSUMP BEEF KG_CAP A 2007 10.99441846
Mexico MEATCONSUMP BEEF KG_CAP A 2008 11.53063058
Mexico MEATCONSUMP BEEF KG_CAP A 2009 10.77175328
Mexico MEATCONSUMP BEEF KG_CAP A 2010 10.18597697
Mexico MEATCONSUMP BEEF KG_CAP A 2011 9.294653152
Mexico MEATCONSUMP BEEF KG_CAP A 2012 9.227550366
Mexico MEATCONSUMP BEEF KG_CAP A 2013 10.26906786
Mexico MEATCONSUMP BEEF KG_CAP A 2014 9.934644463
New Zealand MEATCONSUMP BEEF KG_CAP A 1983 28.53318548
New Zealand MEATCONSUMP BEEF KG_CAP A 1984 28.02832614
New Zealand MEATCONSUMP BEEF KG_CAP A 1985 30.37456266
New Zealand MEATCONSUMP BEEF KG_CAP A 1986 21.42449807
New Zealand MEATCONSUMP BEEF KG_CAP A 1987 31.9765468
New Zealand MEATCONSUMP BEEF KG_CAP A 1988 28.61829788
New Zealand MEATCONSUMP BEEF KG_CAP A 1989 34.32228119
New Zealand MEATCONSUMP BEEF KG_CAP A 1990 26.07290305
New Zealand MEATCONSUMP BEEF KG_CAP A 1991 24.03099746
New Zealand MEATCONSUMP BEEF KG_CAP A 1992 24.80093551
New Zealand MEATCONSUMP BEEF KG_CAP A 1993 24.15015847
New Zealand MEATCONSUMP BEEF KG_CAP A 1994 21.02207533
New Zealand MEATCONSUMP BEEF KG_CAP A 1995 28.21711015
New Zealand MEATCONSUMP BEEF KG_CAP A 1996 29.0570351
New Zealand MEATCONSUMP BEEF KG_CAP A 1997 25.2593817
New Zealand MEATCONSUMP BEEF KG_CAP A 1998 21.9217216
New Zealand MEATCONSUMP BEEF KG_CAP A 1999 23.15052473
New Zealand MEATCONSUMP BEEF KG_CAP A 2000 23.27291861
New Zealand MEATCONSUMP BEEF KG_CAP A 2001 21.66949155
New Zealand MEATCONSUMP BEEF KG_CAP A 2002 16.95776027
New Zealand MEATCONSUMP BEEF KG_CAP A 2003 23.1580094
New Zealand MEATCONSUMP BEEF KG_CAP A 2004 20.18904195
New Zealand MEATCONSUMP BEEF KG_CAP A 2005 15.75333162
New Zealand MEATCONSUMP BEEF KG_CAP A 2006 17.19075461
New Zealand MEATCONSUMP BEEF KG_CAP A 2007 20.09570383
New Zealand MEATCONSUMP BEEF KG_CAP A 2008 20.14276494
New Zealand MEATCONSUMP BEEF KG_CAP A 2009 17.66136275
New Zealand MEATCONSUMP BEEF KG_CAP A 2010 19.4069205
New Zealand MEATCONSUMP BEEF KG_CAP A 2011 19.65904364
New Zealand MEATCONSUMP BEEF KG_CAP A 2012 18.33280718
New Zealand MEATCONSUMP BEEF KG_CAP A 2013 15.4937719
New Zealand MEATCONSUMP BEEF KG_CAP A 2014 14.53990667
Turkeykey MEATCONSUMP BEEF KG_CAP A 1983 2.362897442
Turkeykey MEATCONSUMP BEEF KG_CAP A 1984 5.66146694
Turkeykey MEATCONSUMP BEEF KG_CAP A 1985 5.253143106
Turkeykey MEATCONSUMP BEEF KG_CAP A 1986 6.848239331
Turkeykey MEATCONSUMP BEEF KG_CAP A 1987 4.998705401
Turkeykey MEATCONSUMP BEEF KG_CAP A 1988 4.620480527
Turkeykey MEATCONSUMP BEEF KG_CAP A 1989 5.127213179
Turkeykey MEATCONSUMP BEEF KG_CAP A 1990 4.948150298
Turkeykey MEATCONSUMP BEEF KG_CAP A 1991 4.754526352
Turkeykey MEATCONSUMP BEEF KG_CAP A 1992 4.236120716
Turkeykey MEATCONSUMP BEEF KG_CAP A 1993 4.125912205
Turkeykey MEATCONSUMP BEEF KG_CAP A 1994 3.779770098
Turkeykey MEATCONSUMP BEEF KG_CAP A 1995 3.700552961
Turkeykey MEATCONSUMP BEEF KG_CAP A 1996 3.807016558
Turkeykey MEATCONSUMP BEEF KG_CAP A 1997 4.463796376
Turkeykey MEATCONSUMP BEEF KG_CAP A 1998 4.151090795
Turkeykey MEATCONSUMP BEEF KG_CAP A 1999 3.989009197
Turkeykey MEATCONSUMP BEEF KG_CAP A 2000 3.97185516
Turkeykey MEATCONSUMP BEEF KG_CAP A 2001 3.618639775
Turkeykey MEATCONSUMP BEEF KG_CAP A 2002 3.540422703
Turkeykey MEATCONSUMP BEEF KG_CAP A 2003 3.195754842
Turkeykey MEATCONSUMP BEEF KG_CAP A 2004 3.936518355
Turkeykey MEATCONSUMP BEEF KG_CAP A 2005 3.381096283
Turkeykey MEATCONSUMP BEEF KG_CAP A 2006 3.530264197
Turkeykey MEATCONSUMP BEEF KG_CAP A 2007 4.350602088
Turkeykey MEATCONSUMP BEEF KG_CAP A 2008 3.730173107
Turkeykey MEATCONSUMP BEEF KG_CAP A 2009 3.164714446
Turkeykey MEATCONSUMP BEEF KG_CAP A 2010 6.077825914
Turkeykey MEATCONSUMP BEEF KG_CAP A 2011 6.015339503
Turkeykey MEATCONSUMP BEEF KG_CAP A 2012 7.422287251
Turkeykey MEATCONSUMP BEEF KG_CAP A 2013 7.838322303
Turkeykey MEATCONSUMP BEEF KG_CAP A 2014 8.303801097
USA MEATCONSUMP BEEF KG_CAP A 1983 33.97725832
USA MEATCONSUMP BEEF KG_CAP A 1984 33.88838998
USA MEATCONSUMP BEEF KG_CAP A 1985 34.20631435
USA MEATCONSUMP BEEF KG_CAP A 1986 34.48716356
USA MEATCONSUMP BEEF KG_CAP A 1987 33.06948975
USA MEATCONSUMP BEEF KG_CAP A 1988 32.67614467
USA MEATCONSUMP BEEF KG_CAP A 1989 31.11289024
USA MEATCONSUMP BEEF KG_CAP A 1990 30.3850504
USA MEATCONSUMP BEEF KG_CAP A 1991 30.15918867
USA MEATCONSUMP BEEF KG_CAP A 1992 30.04823205
USA MEATCONSUMP BEEF KG_CAP A 1993 29.40650392
USA MEATCONSUMP BEEF KG_CAP A 1994 30.4422424
USA MEATCONSUMP BEEF KG_CAP A 1995 30.62382226
USA MEATCONSUMP BEEF KG_CAP A 1996 30.71881645
USA MEATCONSUMP BEEF KG_CAP A 1997 29.99671656
USA MEATCONSUMP BEEF KG_CAP A 1998 30.34082029
USA MEATCONSUMP BEEF KG_CAP A 1999 30.6560576
USA MEATCONSUMP BEEF KG_CAP A 2000 30.75136793
USA MEATCONSUMP BEEF KG_CAP A 2001 30.06940187
USA MEATCONSUMP BEEF KG_CAP A 2002 30.71778521
USA MEATCONSUMP BEEF KG_CAP A 2003 29.49082483
USA MEATCONSUMP BEEF KG_CAP A 2004 30.00888166
USA MEATCONSUMP BEEF KG_CAP A 2005 29.7297171
USA MEATCONSUMP BEEF KG_CAP A 2006 29.85312978
USA MEATCONSUMP BEEF KG_CAP A 2007 29.5809824
USA MEATCONSUMP BEEF KG_CAP A 2008 28.40329142
USA MEATCONSUMP BEEF KG_CAP A 2009 27.73976953
USA MEATCONSUMP BEEF KG_CAP A 2010 27.09733015
USA MEATCONSUMP BEEF KG_CAP A 2011 25.98760071
USA MEATCONSUMP BEEF KG_CAP A 2012 25.80931032
USA MEATCONSUMP BEEF KG_CAP A 2013 25.31041418
USA MEATCONSUMP BEEF KG_CAP A 2014 24.45331014
Algeria MEATCONSUMP BEEF KG_CAP A 1983 2.979651659
Algeria MEATCONSUMP BEEF KG_CAP A 1984 2.19001429
Algeria MEATCONSUMP BEEF KG_CAP A 1985 3.510745453
Algeria MEATCONSUMP BEEF KG_CAP A 1986 2.541952491
Algeria MEATCONSUMP BEEF KG_CAP A 1987 1.887576011
Algeria MEATCONSUMP BEEF KG_CAP A 1988 3.170442426
Algeria MEATCONSUMP BEEF KG_CAP A 1989 2.206862548
Algeria MEATCONSUMP BEEF KG_CAP A 1990 2.746409207
Algeria MEATCONSUMP BEEF KG_CAP A 1991 2.921254855
Algeria MEATCONSUMP BEEF KG_CAP A 1992 2.975197261
Algeria MEATCONSUMP BEEF KG_CAP A 1993 3.088825539
Algeria MEATCONSUMP BEEF KG_CAP A 1994 3.36991378
Algeria MEATCONSUMP BEEF KG_CAP A 1995 3.204347889
Algeria MEATCONSUMP BEEF KG_CAP A 1996 2.991682153
Algeria MEATCONSUMP BEEF KG_CAP A 1997 2.618849247
Algeria MEATCONSUMP BEEF KG_CAP A 1998 2.868285182
Algeria MEATCONSUMP BEEF KG_CAP A 1999 3.130378484
Algeria MEATCONSUMP BEEF KG_CAP A 2000 3.198096763
Algeria MEATCONSUMP BEEF KG_CAP A 2001 2.400242475
Algeria MEATCONSUMP BEEF KG_CAP A 2002 3.165455724
Algeria MEATCONSUMP BEEF KG_CAP A 2003 3.617058983
Algeria MEATCONSUMP BEEF KG_CAP A 2004 4.605050781
Algeria MEATCONSUMP BEEF KG_CAP A 2005 4.61089599
Algeria MEATCONSUMP BEEF KG_CAP A 2006 4.01590713
Algeria MEATCONSUMP BEEF KG_CAP A 2007 3.935593029
Algeria MEATCONSUMP BEEF KG_CAP A 2008 3.779861141
Algeria MEATCONSUMP BEEF KG_CAP A 2009 4.068667674
Algeria MEATCONSUMP BEEF KG_CAP A 2010 3.778181484
Algeria MEATCONSUMP BEEF KG_CAP A 2011 3.484538778
Algeria MEATCONSUMP BEEF KG_CAP A 2012 4.095658472
Algeria MEATCONSUMP BEEF KG_CAP A 2013 3.885615959
Algeria MEATCONSUMP BEEF KG_CAP A 2014 3.967062479
Argentina MEATCONSUMP BEEF KG_CAP A 1983 47.04461156
Argentina MEATCONSUMP BEEF KG_CAP A 1984 54.21294587
Argentina MEATCONSUMP BEEF KG_CAP A 1985 57.66367817
Argentina MEATCONSUMP BEEF KG_CAP A 1986 59.80369779
Argentina MEATCONSUMP BEEF KG_CAP A 1987 54.28222515
Argentina MEATCONSUMP BEEF KG_CAP A 1988 51.0783848
Argentina MEATCONSUMP BEEF KG_CAP A 1989 49.16190655
Argentina MEATCONSUMP BEEF KG_CAP A 1990 55.54796625
Argentina MEATCONSUMP BEEF KG_CAP A 1991 51.82333624
Argentina MEATCONSUMP BEEF KG_CAP A 1992 50.99273427
Argentina MEATCONSUMP BEEF KG_CAP A 1993 51.69040809
Argentina MEATCONSUMP BEEF KG_CAP A 1994 48.59850957
Argentina MEATCONSUMP BEEF KG_CAP A 1995 43.6869997
Argentina MEATCONSUMP BEEF KG_CAP A 1996 44.19652354
Argentina MEATCONSUMP BEEF KG_CAP A 1997 44.81840099
Argentina MEATCONSUMP BEEF KG_CAP A 1998 41.47349732
Argentina MEATCONSUMP BEEF KG_CAP A 1999 45.70055031
Argentina MEATCONSUMP BEEF KG_CAP A 2000 45.24217701
Argentina MEATCONSUMP BEEF KG_CAP A 2001 43.99078369
Argentina MEATCONSUMP BEEF KG_CAP A 2002 40.56291611
Argentina MEATCONSUMP BEEF KG_CAP A 2003 41.99321421
Argentina MEATCONSUMP BEEF KG_CAP A 2004 43.97849978
Argentina MEATCONSUMP BEEF KG_CAP A 2005 43.1933569
Argentina MEATCONSUMP BEEF KG_CAP A 2006 44.42959066
Argentina MEATCONSUMP BEEF KG_CAP A 2007 47.84036652
Argentina MEATCONSUMP BEEF KG_CAP A 2008 47.74799935
Argentina MEATCONSUMP BEEF KG_CAP A 2009 47.55161855
Argentina MEATCONSUMP BEEF KG_CAP A 2010 40.30048974
Argentina MEATCONSUMP BEEF KG_CAP A 2011 38.72577392
Argentina MEATCONSUMP BEEF KG_CAP A 2012 41.18994894
Argentina MEATCONSUMP BEEF KG_CAP A 2013 44.34617352
Argentina MEATCONSUMP BEEF KG_CAP A 2014 41.55392421
Bangladesh MEATCONSUMP BEEF KG_CAP A 1983 0.998204703
Bangladesh MEATCONSUMP BEEF KG_CAP A 1984 0.952433563
Bangladesh MEATCONSUMP BEEF KG_CAP A 1985 1.005396203
Bangladesh MEATCONSUMP BEEF KG_CAP A 1986 0.989570739
Bangladesh MEATCONSUMP BEEF KG_CAP A 1987 0.973175738
Bangladesh MEATCONSUMP BEEF KG_CAP A 1988 0.958100714
Bangladesh MEATCONSUMP BEEF KG_CAP A 1989 0.947559777
Bangladesh MEATCONSUMP BEEF KG_CAP A 1990 0.937854431
Bangladesh MEATCONSUMP BEEF KG_CAP A 1991 0.910907443
Bangladesh MEATCONSUMP BEEF KG_CAP A 1992 0.899779377
Bangladesh MEATCONSUMP BEEF KG_CAP A 1993 0.897039146
Bangladesh MEATCONSUMP BEEF KG_CAP A 1994 0.89425659
Bangladesh MEATCONSUMP BEEF KG_CAP A 1995 0.883074584
Bangladesh MEATCONSUMP BEEF KG_CAP A 1996 0.892261184
Bangladesh MEATCONSUMP BEEF KG_CAP A 1997 0.946853615
Bangladesh MEATCONSUMP BEEF KG_CAP A 1998 0.903291561
Bangladesh MEATCONSUMP BEEF KG_CAP A 1999 0.937166396
Bangladesh MEATCONSUMP BEEF KG_CAP A 2000 0.930638412
Bangladesh MEATCONSUMP BEEF KG_CAP A 2001 0.924817821
Bangladesh MEATCONSUMP BEEF KG_CAP A 2002 0.930347111
Bangladesh MEATCONSUMP BEEF KG_CAP A 2003 0.923499525
Bangladesh MEATCONSUMP BEEF KG_CAP A 2004 0.9205395
Bangladesh MEATCONSUMP BEEF KG_CAP A 2005 0.919577556
Bangladesh MEATCONSUMP BEEF KG_CAP A 2006 0.914393244
Bangladesh MEATCONSUMP BEEF KG_CAP A 2007 0.915161004
Bangladesh MEATCONSUMP BEEF KG_CAP A 2008 0.911461413
Bangladesh MEATCONSUMP BEEF KG_CAP A 2009 0.908450286
Bangladesh MEATCONSUMP BEEF KG_CAP A 2010 0.905647928
Bangladesh MEATCONSUMP BEEF KG_CAP A 2011 0.919430173
Bangladesh MEATCONSUMP BEEF KG_CAP A 2012 0.912350345
Bangladesh MEATCONSUMP BEEF KG_CAP A 2013 0.910989785
Bangladesh MEATCONSUMP BEEF KG_CAP A 2014 0.907275394
Brazil MEATCONSUMP BEEF KG_CAP A 1983 14.29785396
Brazil MEATCONSUMP BEEF KG_CAP A 1984 14.36740455
Brazil MEATCONSUMP BEEF KG_CAP A 1985 14.90791158
Brazil MEATCONSUMP BEEF KG_CAP A 1986 18.69165243
Brazil MEATCONSUMP BEEF KG_CAP A 1987 17.3147497
Brazil MEATCONSUMP BEEF KG_CAP A 1988 18.67700525
Brazil MEATCONSUMP BEEF KG_CAP A 1989 20.78546446
Brazil MEATCONSUMP BEEF KG_CAP A 1990 19.37202364
Brazil MEATCONSUMP BEEF KG_CAP A 1991 19.45777706
Brazil MEATCONSUMP BEEF KG_CAP A 1992 18.92913507
Brazil MEATCONSUMP BEEF KG_CAP A 1993 19.06745427
Brazil MEATCONSUMP BEEF KG_CAP A 1994 21.23783027
Brazil MEATCONSUMP BEEF KG_CAP A 1995 23.22494205
Brazil MEATCONSUMP BEEF KG_CAP A 1996 25.5584164
Brazil MEATCONSUMP BEEF KG_CAP A 1997 23.94440052
Brazil MEATCONSUMP BEEF KG_CAP A 1998 23.8941087
Brazil MEATCONSUMP BEEF KG_CAP A 1999 23.46780192
Brazil MEATCONSUMP BEEF KG_CAP A 2000 24.69874284
Brazil MEATCONSUMP BEEF KG_CAP A 2001 24.05419136
Brazil MEATCONSUMP BEEF KG_CAP A 2002 24.88163587
Brazil MEATCONSUMP BEEF KG_CAP A 2003 24.84965225
Brazil MEATCONSUMP BEEF KG_CAP A 2004 24.88331655
Brazil MEATCONSUMP BEEF KG_CAP A 2005 24.07920379
Brazil MEATCONSUMP BEEF KG_CAP A 2006 23.75378933
Brazil MEATCONSUMP BEEF KG_CAP A 2007 25.46080219
Brazil MEATCONSUMP BEEF KG_CAP A 2008 25.63822255
Brazil MEATCONSUMP BEEF KG_CAP A 2009 26.93723245
Brazil MEATCONSUMP BEEF KG_CAP A 2010 25.48719091
Brazil MEATCONSUMP BEEF KG_CAP A 2011 24.97100041
Brazil MEATCONSUMP BEEF KG_CAP A 2012 25.17953667
Brazil MEATCONSUMP BEEF KG_CAP A 2013 26.75009181
Brazil MEATCONSUMP BEEF KG_CAP A 2014 26.99416155
Chile MEATCONSUMP BEEF KG_CAP A 1983 12.5697252
Chile MEATCONSUMP BEEF KG_CAP A 1984 11.90516565
Chile MEATCONSUMP BEEF KG_CAP A 1985 10.55411471
Chile MEATCONSUMP BEEF KG_CAP A 1986 10.268595
Chile MEATCONSUMP BEEF KG_CAP A 1987 9.838692103
Chile MEATCONSUMP BEEF KG_CAP A 1988 10.98882596
Chile MEATCONSUMP BEEF KG_CAP A 1989 12.18092733
Chile MEATCONSUMP BEEF KG_CAP A 1990 12.99609852
Chile MEATCONSUMP BEEF KG_CAP A 1991 12.56933337
Chile MEATCONSUMP BEEF KG_CAP A 1992 12.07204864
Chile MEATCONSUMP BEEF KG_CAP A 1993 13.52604261
Chile MEATCONSUMP BEEF KG_CAP A 1994 14.44043072
Chile MEATCONSUMP BEEF KG_CAP A 1995 15.67532632
Chile MEATCONSUMP BEEF KG_CAP A 1996 16.26051077
Chile MEATCONSUMP BEEF KG_CAP A 1997 17.27103695
Chile MEATCONSUMP BEEF KG_CAP A 1998 16.22069899
Chile MEATCONSUMP BEEF KG_CAP A 1999 15.2106746
Chile MEATCONSUMP BEEF KG_CAP A 2000 15.40601614
Chile MEATCONSUMP BEEF KG_CAP A 2001 13.94462925
Chile MEATCONSUMP BEEF KG_CAP A 2002 14.73626331
Chile MEATCONSUMP BEEF KG_CAP A 2003 15.30083754
Chile MEATCONSUMP BEEF KG_CAP A 2004 15.61197472
Chile MEATCONSUMP BEEF KG_CAP A 2005 16.0550978
Chile MEATCONSUMP BEEF KG_CAP A 2006 14.2737225
Chile MEATCONSUMP BEEF KG_CAP A 2007 15.37161165
Chile MEATCONSUMP BEEF KG_CAP A 2008 14.4994533
Chile MEATCONSUMP BEEF KG_CAP A 2009 14.55700887
Chile MEATCONSUMP BEEF KG_CAP A 2010 15.27066122
Chile MEATCONSUMP BEEF KG_CAP A 2011 14.03381104
Chile MEATCONSUMP BEEF KG_CAP A 2012 14.44657259
Chile MEATCONSUMP BEEF KG_CAP A 2013 16.88279185
Chile MEATCONSUMP BEEF KG_CAP A 2014 18.51559639
China MEATCONSUMP BEEF KG_CAP A 1984 0.26186243
China MEATCONSUMP BEEF KG_CAP A 1985 0.281824341
China MEATCONSUMP BEEF KG_CAP A 1986 0.359986077
China MEATCONSUMP BEEF KG_CAP A 1987 0.478174091
China MEATCONSUMP BEEF KG_CAP A 1988 0.539211354
China MEATCONSUMP BEEF KG_CAP A 1989 0.593300415
China MEATCONSUMP BEEF KG_CAP A 1990 0.645647458
China MEATCONSUMP BEEF KG_CAP A 1991 0.75664052
China MEATCONSUMP BEEF KG_CAP A 1992 1.007411436
China MEATCONSUMP BEEF KG_CAP A 1993 1.261624063
China MEATCONSUMP BEEF KG_CAP A 1994 1.52822167
China MEATCONSUMP BEEF KG_CAP A 1995 1.959030226
China MEATCONSUMP BEEF KG_CAP A 1996 1.950203046
China MEATCONSUMP BEEF KG_CAP A 1997 2.411150809
China MEATCONSUMP BEEF KG_CAP A 1998 2.615155529
China MEATCONSUMP BEEF KG_CAP A 1999 2.756993853
China MEATCONSUMP BEEF KG_CAP A 2000 2.896723646
China MEATCONSUMP BEEF KG_CAP A 2001 2.964186445
China MEATCONSUMP BEEF KG_CAP A 2002 3.154082669
China MEATCONSUMP BEEF KG_CAP A 2003 2.891907261
China MEATCONSUMP BEEF KG_CAP A 2004 2.956387399
China MEATCONSUMP BEEF KG_CAP A 2005 2.962504262
China MEATCONSUMP BEEF KG_CAP A 2006 2.980489396
China MEATCONSUMP BEEF KG_CAP A 2007 3.154624397
China MEATCONSUMP BEEF KG_CAP A 2008 3.151166445
China MEATCONSUMP BEEF KG_CAP A 2009 3.264358936
China MEATCONSUMP BEEF KG_CAP A 2010 3.334909839
China MEATCONSUMP BEEF KG_CAP A 2011 3.278476571
China MEATCONSUMP BEEF KG_CAP A 2012 3.34354573
China MEATCONSUMP BEEF KG_CAP A 2013 3.527041238
China MEATCONSUMP BEEF KG_CAP A 2014 3.637202174
Colombia MEATCONSUMP BEEF KG_CAP A 1983 13.11732135
Colombia MEATCONSUMP BEEF KG_CAP A 1984 13.87471167
Colombia MEATCONSUMP BEEF KG_CAP A 1985 13.55790767
Colombia MEATCONSUMP BEEF KG_CAP A 1986 12.97927957
Colombia MEATCONSUMP BEEF KG_CAP A 1987 12.43270466
Colombia MEATCONSUMP BEEF KG_CAP A 1988 13.52465402
Colombia MEATCONSUMP BEEF KG_CAP A 1989 14.63071325
Colombia MEATCONSUMP BEEF KG_CAP A 1990 15.44574737
Colombia MEATCONSUMP BEEF KG_CAP A 1991 13.942166
Colombia MEATCONSUMP BEEF KG_CAP A 1992 11.8734477
Colombia MEATCONSUMP BEEF KG_CAP A 1993 11.9356964
Colombia MEATCONSUMP BEEF KG_CAP A 1994 12.63073521
Colombia MEATCONSUMP BEEF KG_CAP A 1995 13.44075161
Colombia MEATCONSUMP BEEF KG_CAP A 1996 13.75536102
Colombia MEATCONSUMP BEEF KG_CAP A 1997 14.12673467
Colombia MEATCONSUMP BEEF KG_CAP A 1998 13.89183783
Colombia MEATCONSUMP BEEF KG_CAP A 1999 12.78963915
Colombia MEATCONSUMP BEEF KG_CAP A 2000 13.08438217
Colombia MEATCONSUMP BEEF KG_CAP A 2001 12.0512114
Colombia MEATCONSUMP BEEF KG_CAP A 2002 11.45642633
Colombia MEATCONSUMP BEEF KG_CAP A 2003 10.67155584
Colombia MEATCONSUMP BEEF KG_CAP A 2004 11.60221086
Colombia MEATCONSUMP BEEF KG_CAP A 2005 12.6895424
Colombia MEATCONSUMP BEEF KG_CAP A 2006 12.85055113
Colombia MEATCONSUMP BEEF KG_CAP A 2007 12.20640976
Colombia MEATCONSUMP BEEF KG_CAP A 2008 11.84349203
Colombia MEATCONSUMP BEEF KG_CAP A 2009 10.79899365
Colombia MEATCONSUMP BEEF KG_CAP A 2010 11.54822964
Colombia MEATCONSUMP BEEF KG_CAP A 2011 12.14427623
Colombia MEATCONSUMP BEEF KG_CAP A 2012 12.41499283
Colombia MEATCONSUMP BEEF KG_CAP A 2013 11.61949868
Colombia MEATCONSUMP BEEF KG_CAP A 2014 11.71309006
Egypt MEATCONSUMP BEEF KG_CAP A 1983 5.809237283
Egypt MEATCONSUMP BEEF KG_CAP A 1984 7.057693336
Egypt MEATCONSUMP BEEF KG_CAP A 1985 4.680353794
Egypt MEATCONSUMP BEEF KG_CAP A 1986 6.562979507
Egypt MEATCONSUMP BEEF KG_CAP A 1987 5.182181748
Egypt MEATCONSUMP BEEF KG_CAP A 1988 6.008561213
Egypt MEATCONSUMP BEEF KG_CAP A 1989 4.973344739
Egypt MEATCONSUMP BEEF KG_CAP A 1990 5.000383641
Egypt MEATCONSUMP BEEF KG_CAP A 1991 5.694415866
Egypt MEATCONSUMP BEEF KG_CAP A 1992 5.595892878
Egypt MEATCONSUMP BEEF KG_CAP A 1993 6.254028291
Egypt MEATCONSUMP BEEF KG_CAP A 1994 6.462657542
Egypt MEATCONSUMP BEEF KG_CAP A 1995 6.231716195
Egypt MEATCONSUMP BEEF KG_CAP A 1996 6.459362749
Egypt MEATCONSUMP BEEF KG_CAP A 1997 7.071360973
Egypt MEATCONSUMP BEEF KG_CAP A 1998 7.146428285
Egypt MEATCONSUMP BEEF KG_CAP A 1999 7.420721484
Egypt MEATCONSUMP BEEF KG_CAP A 2000 7.858831975
Egypt MEATCONSUMP BEEF KG_CAP A 2001 5.54795811
Egypt MEATCONSUMP BEEF KG_CAP A 2002 6.124336278
Egypt MEATCONSUMP BEEF KG_CAP A 2003 6.429846955
Egypt MEATCONSUMP BEEF KG_CAP A 2004 7.214747319
Egypt MEATCONSUMP BEEF KG_CAP A 2005 7.910162202
Egypt MEATCONSUMP BEEF KG_CAP A 2006 9.364076454
Egypt MEATCONSUMP BEEF KG_CAP A 2007 10.06160234
Egypt MEATCONSUMP BEEF KG_CAP A 2008 9.220366528
Egypt MEATCONSUMP BEEF KG_CAP A 2009 9.392026086
Egypt MEATCONSUMP BEEF KG_CAP A 2010 9.695380318
Egypt MEATCONSUMP BEEF KG_CAP A 2011 9.311369896
Egypt MEATCONSUMP BEEF KG_CAP A 2012 10.72599408
Egypt MEATCONSUMP BEEF KG_CAP A 2013 10.72570661
Egypt MEATCONSUMP BEEF KG_CAP A 2014 10.77807035
Ethiopia MEATCONSUMP BEEF KG_CAP A 1993 3.017354474
Ethiopia MEATCONSUMP BEEF KG_CAP A 1994 2.916493098
Ethiopia MEATCONSUMP BEEF KG_CAP A 1995 2.883855315
Ethiopia MEATCONSUMP BEEF KG_CAP A 1996 3.176893062
Ethiopia MEATCONSUMP BEEF KG_CAP A 1997 3.119463475
Ethiopia MEATCONSUMP BEEF KG_CAP A 1998 3.075481542
Ethiopia MEATCONSUMP BEEF KG_CAP A 1999 3.1641639
Ethiopia MEATCONSUMP BEEF KG_CAP A 2000 3.117391636
Ethiopia MEATCONSUMP BEEF KG_CAP A 2001 3.126280888
Ethiopia MEATCONSUMP BEEF KG_CAP A 2002 3.527585397
Ethiopia MEATCONSUMP BEEF KG_CAP A 2003 3.289435273
Ethiopia MEATCONSUMP BEEF KG_CAP A 2004 3.175773123
Ethiopia MEATCONSUMP BEEF KG_CAP A 2005 3.219024207
Ethiopia MEATCONSUMP BEEF KG_CAP A 2006 3.343738077
Ethiopia MEATCONSUMP BEEF KG_CAP A 2007 3.15901962
Ethiopia MEATCONSUMP BEEF KG_CAP A 2008 3.219935705
Ethiopia MEATCONSUMP BEEF KG_CAP A 2009 2.927041142
Ethiopia MEATCONSUMP BEEF KG_CAP A 2010 3.368495129
Ethiopia MEATCONSUMP BEEF KG_CAP A 2011 3.208788168
Ethiopia MEATCONSUMP BEEF KG_CAP A 2012 2.576559341
Ethiopia MEATCONSUMP BEEF KG_CAP A 2013 2.453808741
Ethiopia MEATCONSUMP BEEF KG_CAP A 2014 2.24686771
Ghana MEATCONSUMP BEEF KG_CAP A 1983 1.301667461
Ghana MEATCONSUMP BEEF KG_CAP A 1984 1.125725854
Ghana MEATCONSUMP BEEF KG_CAP A 1985 1.183450283
Ghana MEATCONSUMP BEEF KG_CAP A 1986 1.113051262
Ghana MEATCONSUMP BEEF KG_CAP A 1987 1.087963333
Ghana MEATCONSUMP BEEF KG_CAP A 1988 1.033340577
Ghana MEATCONSUMP BEEF KG_CAP A 1989 1.058194757
Ghana MEATCONSUMP BEEF KG_CAP A 1990 1.276186696
Ghana MEATCONSUMP BEEF KG_CAP A 1991 2.120536957
Ghana MEATCONSUMP BEEF KG_CAP A 1992 2.068936517
Ghana MEATCONSUMP BEEF KG_CAP A 1993 1.743505239
Ghana MEATCONSUMP BEEF KG_CAP A 1994 1.579119697
Ghana MEATCONSUMP BEEF KG_CAP A 1995 1.43035835
Ghana MEATCONSUMP BEEF KG_CAP A 1996 1.042224918
Ghana MEATCONSUMP BEEF KG_CAP A 1997 0.954455626
Ghana MEATCONSUMP BEEF KG_CAP A 1998 0.880845326
Ghana MEATCONSUMP BEEF KG_CAP A 1999 1.083317386
Ghana MEATCONSUMP BEEF KG_CAP A 2000 0.991794997
Ghana MEATCONSUMP BEEF KG_CAP A 2001 0.912126148
Ghana MEATCONSUMP BEEF KG_CAP A 2002 0.940602433
Ghana MEATCONSUMP BEEF KG_CAP A 2003 0.957905611
Ghana MEATCONSUMP BEEF KG_CAP A 2004 0.775052783
Ghana MEATCONSUMP BEEF KG_CAP A 2005 0.897423337
Ghana MEATCONSUMP BEEF KG_CAP A 2006 1.101189188
Ghana MEATCONSUMP BEEF KG_CAP A 2007 1.492604148
Ghana MEATCONSUMP BEEF KG_CAP A 2008 1.360135675
Ghana MEATCONSUMP BEEF KG_CAP A 2009 0.931462069
Ghana MEATCONSUMP BEEF KG_CAP A 2010 0.924567797
Ghana MEATCONSUMP BEEF KG_CAP A 2011 0.915942164
Ghana MEATCONSUMP BEEF KG_CAP A 2012 0.912489106
Ghana MEATCONSUMP BEEF KG_CAP A 2013 0.943682696
Ghana MEATCONSUMP BEEF KG_CAP A 2014 0.952923438
Haiti MEATCONSUMP BEEF KG_CAP A 1983 3.494148555
Haiti MEATCONSUMP BEEF KG_CAP A 1984 3.530040035
Haiti MEATCONSUMP BEEF KG_CAP A 1985 3.465477643
Haiti MEATCONSUMP BEEF KG_CAP A 1986 3.269881577
Haiti MEATCONSUMP BEEF KG_CAP A 1987 3.045656325
Haiti MEATCONSUMP BEEF KG_CAP A 1988 2.875563204
Haiti MEATCONSUMP BEEF KG_CAP A 1989 2.723337681
Haiti MEATCONSUMP BEEF KG_CAP A 1990 2.36700514
Haiti MEATCONSUMP BEEF KG_CAP A 1991 2.415015354
Haiti MEATCONSUMP BEEF KG_CAP A 1992 2.555937509
Haiti MEATCONSUMP BEEF KG_CAP A 1993 2.673815379
Haiti MEATCONSUMP BEEF KG_CAP A 1994 2.507749272
Haiti MEATCONSUMP BEEF KG_CAP A 1995 2.214834647
Haiti MEATCONSUMP BEEF KG_CAP A 1996 2.533743154
Haiti MEATCONSUMP BEEF KG_CAP A 1997 2.487934749
Haiti MEATCONSUMP BEEF KG_CAP A 1998 2.65838716
Haiti MEATCONSUMP BEEF KG_CAP A 1999 2.602824602
Haiti MEATCONSUMP BEEF KG_CAP A 2000 3.293011221
Haiti MEATCONSUMP BEEF KG_CAP A 2001 3.256638334
Haiti MEATCONSUMP BEEF KG_CAP A 2002 3.330736828
Haiti MEATCONSUMP BEEF KG_CAP A 2003 3.31728945
Haiti MEATCONSUMP BEEF KG_CAP A 2004 3.263848379
Haiti MEATCONSUMP BEEF KG_CAP A 2005 3.367491338
Haiti MEATCONSUMP BEEF KG_CAP A 2006 3.384656273
Haiti MEATCONSUMP BEEF KG_CAP A 2007 3.246819113
Haiti MEATCONSUMP BEEF KG_CAP A 2008 3.202431784
Haiti MEATCONSUMP BEEF KG_CAP A 2009 3.336696009
Haiti MEATCONSUMP BEEF KG_CAP A 2010 3.341192031
Haiti MEATCONSUMP BEEF KG_CAP A 2011 3.443270881
Haiti MEATCONSUMP BEEF KG_CAP A 2012 3.536046454
Haiti MEATCONSUMP BEEF KG_CAP A 2013 3.552169815
Haiti MEATCONSUMP BEEF KG_CAP A 2014 3.566574711
India MEATCONSUMP BEEF KG_CAP A 1983 1.737739946
India MEATCONSUMP BEEF KG_CAP A 1984 1.717646406
India MEATCONSUMP BEEF KG_CAP A 1985 1.71337392
India MEATCONSUMP BEEF KG_CAP A 1986 1.701692963
India MEATCONSUMP BEEF KG_CAP A 1987 1.708760371
India MEATCONSUMP BEEF KG_CAP A 1988 1.68900567
India MEATCONSUMP BEEF KG_CAP A 1989 1.668405744
India MEATCONSUMP BEEF KG_CAP A 1990 1.652306833
India MEATCONSUMP BEEF KG_CAP A 1991 1.626327744
India MEATCONSUMP BEEF KG_CAP A 1992 1.6201881
India MEATCONSUMP BEEF KG_CAP A 1993 1.5812896
India MEATCONSUMP BEEF KG_CAP A 1994 1.548032415
India MEATCONSUMP BEEF KG_CAP A 1995 1.494914952
India MEATCONSUMP BEEF KG_CAP A 1996 1.477006853
India MEATCONSUMP BEEF KG_CAP A 1997 1.444741168
India MEATCONSUMP BEEF KG_CAP A 1998 1.439073717
India MEATCONSUMP BEEF KG_CAP A 1999 1.408917917
India MEATCONSUMP BEEF KG_CAP A 2000 1.308982322
India MEATCONSUMP BEEF KG_CAP A 2001 1.321278002
India MEATCONSUMP BEEF KG_CAP A 2002 1.268960063
India MEATCONSUMP BEEF KG_CAP A 2003 1.192005625
India MEATCONSUMP BEEF KG_CAP A 2004 1.168706237
India MEATCONSUMP BEEF KG_CAP A 2005 1.102382332
India MEATCONSUMP BEEF KG_CAP A 2006 1.078112873
India MEATCONSUMP BEEF KG_CAP A 2007 1.087235704
India MEATCONSUMP BEEF KG_CAP A 2008 1.099098851
India MEATCONSUMP BEEF KG_CAP A 2009 1.144932872
India MEATCONSUMP BEEF KG_CAP A 2010 0.968782635
India MEATCONSUMP BEEF KG_CAP A 2011 0.791210462
India MEATCONSUMP BEEF KG_CAP A 2012 0.724913725
India MEATCONSUMP BEEF KG_CAP A 2013 0.617371186
India MEATCONSUMP BEEF KG_CAP A 2014 0.596464066
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1983 1.1242001
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1984 1.174590542
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1985 1.196380845
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1986 1.177180488
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1987 1.157782977
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1988 1.14224596
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1989 1.186825954
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1990 1.198538387
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1991 1.206932611
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1992 1.311528736
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1993 1.497187393
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1994 1.434537351
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1995 1.332861863
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1996 1.481307043
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1997 1.512402798
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1998 1.381790914
Indiaonesia MEATCONSUMP BEEF KG_CAP A 1999 1.306078283
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2000 1.459247777
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2001 1.348792053
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2002 1.319369726
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2003 1.352922722
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2004 1.595707997
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2005 1.325400818
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2006 1.456492459
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2007 1.314408208
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2008 1.465450837
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2009 1.569580286
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2010 1.714949907
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2011 1.684379197
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2012 1.660305312
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2013 1.659979471
Indiaonesia MEATCONSUMP BEEF KG_CAP A 2014 1.648460436
Iran MEATCONSUMP BEEF KG_CAP A 1983 4.692108709
Iran MEATCONSUMP BEEF KG_CAP A 1984 4.067007316
Iran MEATCONSUMP BEEF KG_CAP A 1985 3.464276889
Iran MEATCONSUMP BEEF KG_CAP A 1986 3.927485274
Iran MEATCONSUMP BEEF KG_CAP A 1987 3.11081608
Iran MEATCONSUMP BEEF KG_CAP A 1988 3.764286009
Iran MEATCONSUMP BEEF KG_CAP A 1989 3.552146328
Iran MEATCONSUMP BEEF KG_CAP A 1990 4.29175569
Iran MEATCONSUMP BEEF KG_CAP A 1991 3.554077616
Iran MEATCONSUMP BEEF KG_CAP A 1992 3.433068584
Iran MEATCONSUMP BEEF KG_CAP A 1993 3.858531967
Iran MEATCONSUMP BEEF KG_CAP A 1994 3.711702498
Iran MEATCONSUMP BEEF KG_CAP A 1995 3.576171263
Iran MEATCONSUMP BEEF KG_CAP A 1996 4.397713838
Iran MEATCONSUMP BEEF KG_CAP A 1997 4.328963128
Iran MEATCONSUMP BEEF KG_CAP A 1998 4.27781283
Iran MEATCONSUMP BEEF KG_CAP A 1999 3.533589807
Iran MEATCONSUMP BEEF KG_CAP A 2000 3.173558328
Iran MEATCONSUMP BEEF KG_CAP A 2001 3.43552624
Iran MEATCONSUMP BEEF KG_CAP A 2002 3.195167675
Iran MEATCONSUMP BEEF KG_CAP A 2003 3.712186556
Iran MEATCONSUMP BEEF KG_CAP A 2004 4.132475334
Iran MEATCONSUMP BEEF KG_CAP A 2005 3.849601071
Iran MEATCONSUMP BEEF KG_CAP A 2006 4.488049652
Iran MEATCONSUMP BEEF KG_CAP A 2007 4.688826413
Iran MEATCONSUMP BEEF KG_CAP A 2008 3.823174576
Iran MEATCONSUMP BEEF KG_CAP A 2009 3.596505483
Iran MEATCONSUMP BEEF KG_CAP A 2010 4.37214672
Iran MEATCONSUMP BEEF KG_CAP A 2011 4.136258968
Iran MEATCONSUMP BEEF KG_CAP A 2012 3.448047716
Iran MEATCONSUMP BEEF KG_CAP A 2013 3.195142593
Iran MEATCONSUMP BEEF KG_CAP A 2014 3.461346996
Israel MEATCONSUMP BEEF KG_CAP A 1983 8.989472788
Israel MEATCONSUMP BEEF KG_CAP A 1984 12.49247338
Israel MEATCONSUMP BEEF KG_CAP A 1985 11.93231606
Israel MEATCONSUMP BEEF KG_CAP A 1986 10.14721637
Israel MEATCONSUMP BEEF KG_CAP A 1987 12.21762319
Israel MEATCONSUMP BEEF KG_CAP A 1988 14.04055522
Israel MEATCONSUMP BEEF KG_CAP A 1989 11.81244795
Israel MEATCONSUMP BEEF KG_CAP A 1990 9.969281673
Israel MEATCONSUMP BEEF KG_CAP A 1991 12.32333235
Israel MEATCONSUMP BEEF KG_CAP A 1992 10.09791076
Israel MEATCONSUMP BEEF KG_CAP A 1993 10.65577979
Israel MEATCONSUMP BEEF KG_CAP A 1994 13.89929729
Israel MEATCONSUMP BEEF KG_CAP A 1995 12.34743815
Israel MEATCONSUMP BEEF KG_CAP A 1996 13.6213683
Israel MEATCONSUMP BEEF KG_CAP A 1997 14.43540665
Israel MEATCONSUMP BEEF KG_CAP A 1998 13.66154964
Israel MEATCONSUMP BEEF KG_CAP A 1999 13.4695396
Israel MEATCONSUMP BEEF KG_CAP A 2000 16.54840488
Israel MEATCONSUMP BEEF KG_CAP A 2001 15.17687899
Israel MEATCONSUMP BEEF KG_CAP A 2002 17.78866058
Israel MEATCONSUMP BEEF KG_CAP A 2003 18.3436603
Israel MEATCONSUMP BEEF KG_CAP A 2004 18.37705637
Israel MEATCONSUMP BEEF KG_CAP A 2005 16.86720221
Israel MEATCONSUMP BEEF KG_CAP A 2006 21.95456423
Israel MEATCONSUMP BEEF KG_CAP A 2007 19.91717098
Israel MEATCONSUMP BEEF KG_CAP A 2008 23.41350825
Israel MEATCONSUMP BEEF KG_CAP A 2009 17.83950969
Israel MEATCONSUMP BEEF KG_CAP A 2010 18.90820773
Israel MEATCONSUMP BEEF KG_CAP A 2011 19.63786791
Israel MEATCONSUMP BEEF KG_CAP A 2012 19.41236279
Israel MEATCONSUMP BEEF KG_CAP A 2013 19.50857847
Israel MEATCONSUMP BEEF KG_CAP A 2014 19.19684238
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1992 25.83971348
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1993 28.61985067
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1994 27.31804091
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1995 23.2148987
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1996 20.07729362
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1997 16.89895373
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1998 16.20853725
Kazakhstan MEATCONSUMP BEEF KG_CAP A 1999 16.24555541
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2000 14.89820993
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2001 13.95906954
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2002 14.34948356
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2003 15.06350429
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2004 16.25336803
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2005 17.33225003
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2006 18.64187334
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2007 19.83165171
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2008 20.08035097
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2009 19.18886522
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2010 19.04135422
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2011 17.66067166
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2012 17.64412144
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2013 17.69934314
Kazakhstan MEATCONSUMP BEEF KG_CAP A 2014 17.57241547
Malaysia MEATCONSUMP BEEF KG_CAP A 1983 1.50320815
Malaysia MEATCONSUMP BEEF KG_CAP A 1984 1.824077745
Malaysia MEATCONSUMP BEEF KG_CAP A 1985 2.009466317
Malaysia MEATCONSUMP BEEF KG_CAP A 1986 1.860692689
Malaysia MEATCONSUMP BEEF KG_CAP A 1987 1.935878773
Malaysia MEATCONSUMP BEEF KG_CAP A 1988 2.100804212
Malaysia MEATCONSUMP BEEF KG_CAP A 1989 2.463924899
Malaysia MEATCONSUMP BEEF KG_CAP A 1990 2.559140112
Malaysia MEATCONSUMP BEEF KG_CAP A 1991 2.883524077
Malaysia MEATCONSUMP BEEF KG_CAP A 1992 2.919306041
Malaysia MEATCONSUMP BEEF KG_CAP A 1993 2.969143215
Malaysia MEATCONSUMP BEEF KG_CAP A 1994 3.199918525
Malaysia MEATCONSUMP BEEF KG_CAP A 1995 3.491283974
Malaysia MEATCONSUMP BEEF KG_CAP A 1996 3.783577662
Malaysia MEATCONSUMP BEEF KG_CAP A 1997 3.702101803
Malaysia MEATCONSUMP BEEF KG_CAP A 1998 3.240430367
Malaysia MEATCONSUMP BEEF KG_CAP A 1999 3.511457523
Malaysia MEATCONSUMP BEEF KG_CAP A 2000 4.083937983
Malaysia MEATCONSUMP BEEF KG_CAP A 2001 4.099250914
Malaysia MEATCONSUMP BEEF KG_CAP A 2002 4.198001747
Malaysia MEATCONSUMP BEEF KG_CAP A 2003 4.323120779
Malaysia MEATCONSUMP BEEF KG_CAP A 2004 5.149836436
Malaysia MEATCONSUMP BEEF KG_CAP A 2005 4.988979733
Malaysia MEATCONSUMP BEEF KG_CAP A 2006 4.686971764
Malaysia MEATCONSUMP BEEF KG_CAP A 2007 4.50564618
Malaysia MEATCONSUMP BEEF KG_CAP A 2008 3.979605977
Malaysia MEATCONSUMP BEEF KG_CAP A 2009 4.191385264
Malaysia MEATCONSUMP BEEF KG_CAP A 2010 4.128603841
Malaysia MEATCONSUMP BEEF KG_CAP A 2011 4.361107928
Malaysia MEATCONSUMP BEEF KG_CAP A 2012 4.401357679
Malaysia MEATCONSUMP BEEF KG_CAP A 2013 4.817343479
Malaysia MEATCONSUMP BEEF KG_CAP A 2014 4.914863539
Mozambique MEATCONSUMP BEEF KG_CAP A 1983 1.987988685
Mozambique MEATCONSUMP BEEF KG_CAP A 1984 1.989541416
Mozambique MEATCONSUMP BEEF KG_CAP A 1985 1.956887563
Mozambique MEATCONSUMP BEEF KG_CAP A 1986 1.672781442
Mozambique MEATCONSUMP BEEF KG_CAP A 1987 1.564792312
Mozambique MEATCONSUMP BEEF KG_CAP A 1988 1.532769266
Mozambique MEATCONSUMP BEEF KG_CAP A 1989 1.455389039
Mozambique MEATCONSUMP BEEF KG_CAP A 1990 0.787031004
Mozambique MEATCONSUMP BEEF KG_CAP A 1991 0.782218027
Mozambique MEATCONSUMP BEEF KG_CAP A 1992 0.716580972
Mozambique MEATCONSUMP BEEF KG_CAP A 1993 0.717480482
Mozambique MEATCONSUMP BEEF KG_CAP A 1994 0.712000056
Mozambique MEATCONSUMP BEEF KG_CAP A 1995 0.645509773
Mozambique MEATCONSUMP BEEF KG_CAP A 1996 0.666703363
Mozambique MEATCONSUMP BEEF KG_CAP A 1997 0.594634164
Mozambique MEATCONSUMP BEEF KG_CAP A 1998 0.585541883
Mozambique MEATCONSUMP BEEF KG_CAP A 1999 0.516914092
Mozambique MEATCONSUMP BEEF KG_CAP A 2000 0.510633459
Mozambique MEATCONSUMP BEEF KG_CAP A 2001 0.47255066
Mozambique MEATCONSUMP BEEF KG_CAP A 2002 0.478927882
Mozambique MEATCONSUMP BEEF KG_CAP A 2003 0.538816482
Mozambique MEATCONSUMP BEEF KG_CAP A 2004 0.592460485
Mozambique MEATCONSUMP BEEF KG_CAP A 2005 0.657053806
Mozambique MEATCONSUMP BEEF KG_CAP A 2006 0.555956651
Mozambique MEATCONSUMP BEEF KG_CAP A 2007 0.731033187
Mozambique MEATCONSUMP BEEF KG_CAP A 2008 0.605374416
Mozambique MEATCONSUMP BEEF KG_CAP A 2009 0.61804447
Mozambique MEATCONSUMP BEEF KG_CAP A 2010 0.625841236
Mozambique MEATCONSUMP BEEF KG_CAP A 2011 0.642900508
Mozambique MEATCONSUMP BEEF KG_CAP A 2012 0.825065937
Mozambique MEATCONSUMP BEEF KG_CAP A 2013 0.871434366
Mozambique MEATCONSUMP BEEF KG_CAP A 2014 0.885805761
Nigeria MEATCONSUMP BEEF KG_CAP A 1983 3.694504881
Nigeria MEATCONSUMP BEEF KG_CAP A 1984 3.732555104
Nigeria MEATCONSUMP BEEF KG_CAP A 1985 3.680576762
Nigeria MEATCONSUMP BEEF KG_CAP A 1986 2.323576923
Nigeria MEATCONSUMP BEEF KG_CAP A 1987 2.119190979
Nigeria MEATCONSUMP BEEF KG_CAP A 1988 1.826325024
Nigeria MEATCONSUMP BEEF KG_CAP A 1989 1.637141417
Nigeria MEATCONSUMP BEEF KG_CAP A 1990 1.495888812
Nigeria MEATCONSUMP BEEF KG_CAP A 1991 1.46809104
Nigeria MEATCONSUMP BEEF KG_CAP A 1992 1.46401751
Nigeria MEATCONSUMP BEEF KG_CAP A 1993 1.659066854
Nigeria MEATCONSUMP BEEF KG_CAP A 1994 1.75443096
Nigeria MEATCONSUMP BEEF KG_CAP A 1995 1.72384785
Nigeria MEATCONSUMP BEEF KG_CAP A 1996 1.769368638
Nigeria MEATCONSUMP BEEF KG_CAP A 1997 1.812559663
Nigeria MEATCONSUMP BEEF KG_CAP A 1998 1.787138747
Nigeria MEATCONSUMP BEEF KG_CAP A 1999 1.745913466
Nigeria MEATCONSUMP BEEF KG_CAP A 2000 1.590449201
Nigeria MEATCONSUMP BEEF KG_CAP A 2001 1.767573766
Nigeria MEATCONSUMP BEEF KG_CAP A 2002 1.949476068
Nigeria MEATCONSUMP BEEF KG_CAP A 2003 1.632929735
Nigeria MEATCONSUMP BEEF KG_CAP A 2004 1.672389064
Nigeria MEATCONSUMP BEEF KG_CAP A 2005 1.537982635
Nigeria MEATCONSUMP BEEF KG_CAP A 2006 1.268928053
Nigeria MEATCONSUMP BEEF KG_CAP A 2007 1.559848531
Nigeria MEATCONSUMP BEEF KG_CAP A 2008 1.519433479
Nigeria MEATCONSUMP BEEF KG_CAP A 2009 1.490456884
Nigeria MEATCONSUMP BEEF KG_CAP A 2010 1.426823466
Nigeria MEATCONSUMP BEEF KG_CAP A 2011 1.63992004
Nigeria MEATCONSUMP BEEF KG_CAP A 2012 1.624626591
Nigeria MEATCONSUMP BEEF KG_CAP A 2013 1.617336071
Nigeria MEATCONSUMP BEEF KG_CAP A 2014 1.656728538
Pakistan MEATCONSUMP BEEF KG_CAP A 1983 3.326986078
Pakistan MEATCONSUMP BEEF KG_CAP A 1984 3.383782722
Pakistan MEATCONSUMP BEEF KG_CAP A 1985 3.44166961
Pakistan MEATCONSUMP BEEF KG_CAP A 1986 3.900086133
Pakistan MEATCONSUMP BEEF KG_CAP A 1987 3.96731101
Pakistan MEATCONSUMP BEEF KG_CAP A 1988 4.029289389
Pakistan MEATCONSUMP BEEF KG_CAP A 1989 4.101566065
Pakistan MEATCONSUMP BEEF KG_CAP A 1990 4.20125005
Pakistan MEATCONSUMP BEEF KG_CAP A 1991 4.263602507
Pakistan MEATCONSUMP BEEF KG_CAP A 1992 4.361907928
Pakistan MEATCONSUMP BEEF KG_CAP A 1993 4.465361642
Pakistan MEATCONSUMP BEEF KG_CAP A 1994 4.575406593
Pakistan MEATCONSUMP BEEF KG_CAP A 1995 4.678655997
Pakistan MEATCONSUMP BEEF KG_CAP A 1996 3.857172965
Pakistan MEATCONSUMP BEEF KG_CAP A 1997 4.332214372
Pakistan MEATCONSUMP BEEF KG_CAP A 1998 4.317750475
Pakistan MEATCONSUMP BEEF KG_CAP A 1999 4.315917682
Pakistan MEATCONSUMP BEEF KG_CAP A 2000 4.308548962
Pakistan MEATCONSUMP BEEF KG_CAP A 2001 4.29851167
Pakistan MEATCONSUMP BEEF KG_CAP A 2002 4.344111295
Pakistan MEATCONSUMP BEEF KG_CAP A 2003 4.370232795
Pakistan MEATCONSUMP BEEF KG_CAP A 2004 4.409669248
Pakistan MEATCONSUMP BEEF KG_CAP A 2005 4.450105423
Pakistan MEATCONSUMP BEEF KG_CAP A 2006 5.679067788
Pakistan MEATCONSUMP BEEF KG_CAP A 2007 5.734036755
Pakistan MEATCONSUMP BEEF KG_CAP A 2008 5.768369217
Pakistan MEATCONSUMP BEEF KG_CAP A 2009 5.838889286
Pakistan MEATCONSUMP BEEF KG_CAP A 2010 5.918116786
Pakistan MEATCONSUMP BEEF KG_CAP A 2011 6.023307504
Pakistan MEATCONSUMP BEEF KG_CAP A 2012 6.110840593
Pakistan MEATCONSUMP BEEF KG_CAP A 2013 6.173860517
Pakistan MEATCONSUMP BEEF KG_CAP A 2014 6.240648615
Paraguay MEATCONSUMP BEEF KG_CAP A 1983 19.90962821
Paraguay MEATCONSUMP BEEF KG_CAP A 1984 20.84264153
Paraguay MEATCONSUMP BEEF KG_CAP A 1985 21.13289637
Paraguay MEATCONSUMP BEEF KG_CAP A 1986 14.06412077
Paraguay MEATCONSUMP BEEF KG_CAP A 1987 15.4175881
Paraguay MEATCONSUMP BEEF KG_CAP A 1988 20.08494464
Paraguay MEATCONSUMP BEEF KG_CAP A 1989 16.14062375
Paraguay MEATCONSUMP BEEF KG_CAP A 1990 14.1386489
Paraguay MEATCONSUMP BEEF KG_CAP A 1991 28.19535877
Paraguay MEATCONSUMP BEEF KG_CAP A 1992 31.49682141
Paraguay MEATCONSUMP BEEF KG_CAP A 1993 29.47689107
Paraguay MEATCONSUMP BEEF KG_CAP A 1994 28.87071998
Paraguay MEATCONSUMP BEEF KG_CAP A 1995 29.71367127
Paraguay MEATCONSUMP BEEF KG_CAP A 1996 28.30713253
Paraguay MEATCONSUMP BEEF KG_CAP A 1997 27.56420379
Paraguay MEATCONSUMP BEEF KG_CAP A 1998 26.26596115
Paraguay MEATCONSUMP BEEF KG_CAP A 1999 29.99552137
Paraguay MEATCONSUMP BEEF KG_CAP A 2000 24.7307648
Paraguay MEATCONSUMP BEEF KG_CAP A 2001 22.25112873
Paraguay MEATCONSUMP BEEF KG_CAP A 2002 27.10893529
Paraguay MEATCONSUMP BEEF KG_CAP A 2003 22.40591267
Paraguay MEATCONSUMP BEEF KG_CAP A 2004 13.09892881
Paraguay MEATCONSUMP BEEF KG_CAP A 2005 8.453471745
Paraguay MEATCONSUMP BEEF KG_CAP A 2006 9.143755398
Paraguay MEATCONSUMP BEEF KG_CAP A 2007 9.876801409
Paraguay MEATCONSUMP BEEF KG_CAP A 2008 9.594578893
Paraguay MEATCONSUMP BEEF KG_CAP A 2009 10.06656705
Paraguay MEATCONSUMP BEEF KG_CAP A 2010 9.317477554
Paraguay MEATCONSUMP BEEF KG_CAP A 2011 18.25165022
Paraguay MEATCONSUMP BEEF KG_CAP A 2012 13.10435233
Paraguay MEATCONSUMP BEEF KG_CAP A 2013 9.000484329
Paraguay MEATCONSUMP BEEF KG_CAP A 2014 5.366060092
Peru MEATCONSUMP BEEF KG_CAP A 1983 4.588306698
Peru MEATCONSUMP BEEF KG_CAP A 1984 4.144839612
Peru MEATCONSUMP BEEF KG_CAP A 1985 3.813650603
Peru MEATCONSUMP BEEF KG_CAP A 1986 4.624150165
Peru MEATCONSUMP BEEF KG_CAP A 1987 4.740519137
Peru MEATCONSUMP BEEF KG_CAP A 1988 4.102072101
Peru MEATCONSUMP BEEF KG_CAP A 1989 3.803078735
Peru MEATCONSUMP BEEF KG_CAP A 1990 3.970204489
Peru MEATCONSUMP BEEF KG_CAP A 1991 3.767237335
Peru MEATCONSUMP BEEF KG_CAP A 1992 3.546750201
Peru MEATCONSUMP BEEF KG_CAP A 1993 3.427983545
Peru MEATCONSUMP BEEF KG_CAP A 1994 3.199331318
Peru MEATCONSUMP BEEF KG_CAP A 1995 3.401943898
Peru MEATCONSUMP BEEF KG_CAP A 1996 3.429121362
Peru MEATCONSUMP BEEF KG_CAP A 1997 3.630063517
Peru MEATCONSUMP BEEF KG_CAP A 1998 3.636628765
Peru MEATCONSUMP BEEF KG_CAP A 1999 3.808947471
Peru MEATCONSUMP BEEF KG_CAP A 2000 3.935478387
Peru MEATCONSUMP BEEF KG_CAP A 2001 3.861331752
Peru MEATCONSUMP BEEF KG_CAP A 2002 3.743585657
Peru MEATCONSUMP BEEF KG_CAP A 2003 3.837343545
Peru MEATCONSUMP BEEF KG_CAP A 2004 3.990975701
Peru MEATCONSUMP BEEF KG_CAP A 2005 4.101399526
Peru MEATCONSUMP BEEF KG_CAP A 2006 4.265776977
Peru MEATCONSUMP BEEF KG_CAP A 2007 4.25520323
Peru MEATCONSUMP BEEF KG_CAP A 2008 4.099154334
Peru MEATCONSUMP BEEF KG_CAP A 2009 4.086414194
Peru MEATCONSUMP BEEF KG_CAP A 2010 4.235188048
Peru MEATCONSUMP BEEF KG_CAP A 2011 4.302961461
Peru MEATCONSUMP BEEF KG_CAP A 2012 4.407493029
Peru MEATCONSUMP BEEF KG_CAP A 2013 4.409543696
Peru MEATCONSUMP BEEF KG_CAP A 2014 4.386710631
Philippines MEATCONSUMP BEEF KG_CAP A 1983 1.247227923
Philippines MEATCONSUMP BEEF KG_CAP A 1984 1.136810015
Philippines MEATCONSUMP BEEF KG_CAP A 1985 1.149250015
Philippines MEATCONSUMP BEEF KG_CAP A 1986 1.247962094
Philippines MEATCONSUMP BEEF KG_CAP A 1987 1.387744745
Philippines MEATCONSUMP BEEF KG_CAP A 1988 1.426741089
Philippines MEATCONSUMP BEEF KG_CAP A 1989 1.671511052
Philippines MEATCONSUMP BEEF KG_CAP A 1990 1.567132589
Philippines MEATCONSUMP BEEF KG_CAP A 1991 1.539155298
Philippines MEATCONSUMP BEEF KG_CAP A 1992 1.601907618
Philippines MEATCONSUMP BEEF KG_CAP A 1993 1.689722909
Philippines MEATCONSUMP BEEF KG_CAP A 1994 1.860254737
Philippines MEATCONSUMP BEEF KG_CAP A 1995 2.124451386
Philippines MEATCONSUMP BEEF KG_CAP A 1996 2.353186827
Philippines MEATCONSUMP BEEF KG_CAP A 1997 2.703704752
Philippines MEATCONSUMP BEEF KG_CAP A 1998 2.645295858
Philippines MEATCONSUMP BEEF KG_CAP A 1999 3.183667392
Philippines MEATCONSUMP BEEF KG_CAP A 2000 3.379914841
Philippines MEATCONSUMP BEEF KG_CAP A 2001 3.162956743
Philippines MEATCONSUMP BEEF KG_CAP A 2002 3.203110999
Philippines MEATCONSUMP BEEF KG_CAP A 2003 3.196086284
Philippines MEATCONSUMP BEEF KG_CAP A 2004 3.405833999
Philippines MEATCONSUMP BEEF KG_CAP A 2005 3.077614847
Philippines MEATCONSUMP BEEF KG_CAP A 2006 3.025839266
Philippines MEATCONSUMP BEEF KG_CAP A 2007 3.378297924
Philippines MEATCONSUMP BEEF KG_CAP A 2008 3.334269722
Philippines MEATCONSUMP BEEF KG_CAP A 2009 3.065804348
Philippines MEATCONSUMP BEEF KG_CAP A 2010 3.194969004
Philippines MEATCONSUMP BEEF KG_CAP A 2011 3.498718635
Philippines MEATCONSUMP BEEF KG_CAP A 2012 2.950043997
Philippines MEATCONSUMP BEEF KG_CAP A 2013 2.856366191
Philippines MEATCONSUMP BEEF KG_CAP A 2014 2.906221014
Russia MEATCONSUMP BEEF KG_CAP A 1992 20.12921367
Russia MEATCONSUMP BEEF KG_CAP A 1993 18.84147032
Russia MEATCONSUMP BEEF KG_CAP A 1994 17.90427821
Russia MEATCONSUMP BEEF KG_CAP A 1995 15.5660463
Russia MEATCONSUMP BEEF KG_CAP A 1996 15.10593485
Russia MEATCONSUMP BEEF KG_CAP A 1997 15.21887245
Russia MEATCONSUMP BEEF KG_CAP A 1998 13.96895587
Russia MEATCONSUMP BEEF KG_CAP A 1999 11.92109434
Russia MEATCONSUMP BEEF KG_CAP A 2000 10.36176075
Russia MEATCONSUMP BEEF KG_CAP A 2001 11.27411381
Russia MEATCONSUMP BEEF KG_CAP A 2002 12.01278335
Russia MEATCONSUMP BEEF KG_CAP A 2003 12.30462714
Russia MEATCONSUMP BEEF KG_CAP A 2004 12.17289228
Russia MEATCONSUMP BEEF KG_CAP A 2005 12.7133488
Russia MEATCONSUMP BEEF KG_CAP A 2006 12.04293026
Russia MEATCONSUMP BEEF KG_CAP A 2007 12.48981073
Russia MEATCONSUMP BEEF KG_CAP A 2008 14.30644799
Russia MEATCONSUMP BEEF KG_CAP A 2009 12.97767542
Russia MEATCONSUMP BEEF KG_CAP A 2010 13.27458017
Russia MEATCONSUMP BEEF KG_CAP A 2011 13.5102131
Russia MEATCONSUMP BEEF KG_CAP A 2012 14.10808756
Russia MEATCONSUMP BEEF KG_CAP A 2013 12.78868924
Russia MEATCONSUMP BEEF KG_CAP A 2014 12.88244207
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1983 5.187344549
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1984 5.195747872
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1985 4.392660916
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1986 3.991005897
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1987 3.328261922
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1988 2.942779956
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1989 2.265640658
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1990 3.039583359
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1991 3.477858813
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1992 3.55557706
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1993 1.998421619
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1994 2.109717474
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1995 3.644199837
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1996 2.493708769
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1997 2.372486172
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1998 2.976573993
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 1999 2.134744873
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2000 2.885737188
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2001 1.804020915
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2002 2.67069649
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2003 2.47585344
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2004 3.073727966
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2005 2.916893571
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2006 3.658253001
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2007 3.960931586
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2008 3.822253567
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2009 4.130159177
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2010 4.40222099
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2011 4.414448086
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2012 4.627403846
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2013 4.380496964
Saudi Arabia MEATCONSUMP BEEF KG_CAP A 2014 4.350381815
South Africa MEATCONSUMP BEEF KG_CAP A 1983 15.42183882
South Africa MEATCONSUMP BEEF KG_CAP A 1984 14.56295606
South Africa MEATCONSUMP BEEF KG_CAP A 1985 13.37052421
South Africa MEATCONSUMP BEEF KG_CAP A 1986 13.50902677
South Africa MEATCONSUMP BEEF KG_CAP A 1987 12.39009953
South Africa MEATCONSUMP BEEF KG_CAP A 1988 12.11251598
South Africa MEATCONSUMP BEEF KG_CAP A 1989 13.00152926
South Africa MEATCONSUMP BEEF KG_CAP A 1990 13.67923246
South Africa MEATCONSUMP BEEF KG_CAP A 1991 13.76081074
South Africa MEATCONSUMP BEEF KG_CAP A 1992 13.00388098
South Africa MEATCONSUMP BEEF KG_CAP A 1993 11.71289403
South Africa MEATCONSUMP BEEF KG_CAP A 1994 10.1301711
South Africa MEATCONSUMP BEEF KG_CAP A 1995 9.986240857
South Africa MEATCONSUMP BEEF KG_CAP A 1996 9.503838499
South Africa MEATCONSUMP BEEF KG_CAP A 1997 9.136038409
South Africa MEATCONSUMP BEEF KG_CAP A 1998 8.999494926
South Africa MEATCONSUMP BEEF KG_CAP A 1999 10.62765861
South Africa MEATCONSUMP BEEF KG_CAP A 2000 8.662979976
South Africa MEATCONSUMP BEEF KG_CAP A 2001 9.43255138
South Africa MEATCONSUMP BEEF KG_CAP A 2002 9.328196205
South Africa MEATCONSUMP BEEF KG_CAP A 2003 9.170703538
South Africa MEATCONSUMP BEEF KG_CAP A 2004 9.762816276
South Africa MEATCONSUMP BEEF KG_CAP A 2005 10.509912
South Africa MEATCONSUMP BEEF KG_CAP A 2006 11.75262832
South Africa MEATCONSUMP BEEF KG_CAP A 2007 11.61979142
South Africa MEATCONSUMP BEEF KG_CAP A 2008 10.93078962
South Africa MEATCONSUMP BEEF KG_CAP A 2009 10.68730455
South Africa MEATCONSUMP BEEF KG_CAP A 2010 11.52806899
South Africa MEATCONSUMP BEEF KG_CAP A 2011 11.19923213
South Africa MEATCONSUMP BEEF KG_CAP A 2012 11.26452685
South Africa MEATCONSUMP BEEF KG_CAP A 2013 11.06440608
South Africa MEATCONSUMP BEEF KG_CAP A 2014 11.14167121
Sudan MEATCONSUMP BEEF KG_CAP A 1983 7.630466155
Sudan MEATCONSUMP BEEF KG_CAP A 1984 8.320020914
Sudan MEATCONSUMP BEEF KG_CAP A 1985 8.265148079
Sudan MEATCONSUMP BEEF KG_CAP A 1986 7.476033599
Sudan MEATCONSUMP BEEF KG_CAP A 1987 6.168969695
Sudan MEATCONSUMP BEEF KG_CAP A 1988 5.88331351
Sudan MEATCONSUMP BEEF KG_CAP A 1989 5.8906078
Sudan MEATCONSUMP BEEF KG_CAP A 1990 5.925919732
Sudan MEATCONSUMP BEEF KG_CAP A 1991 6.104314586
Sudan MEATCONSUMP BEEF KG_CAP A 1992 5.781952414
Sudan MEATCONSUMP BEEF KG_CAP A 1993 5.311519047
Sudan MEATCONSUMP BEEF KG_CAP A 1994 5.091877945
Sudan MEATCONSUMP BEEF KG_CAP A 1995 5.220541179
Sudan MEATCONSUMP BEEF KG_CAP A 1996 5.109291314
Sudan MEATCONSUMP BEEF KG_CAP A 1997 5.43820001
Sudan MEATCONSUMP BEEF KG_CAP A 1998 5.574919709
Sudan MEATCONSUMP BEEF KG_CAP A 1999 5.711807131
Sudan MEATCONSUMP BEEF KG_CAP A 2000 5.983798192
Sudan MEATCONSUMP BEEF KG_CAP A 2001 6.306849659
Sudan MEATCONSUMP BEEF KG_CAP A 2002 6.247195249
Sudan MEATCONSUMP BEEF KG_CAP A 2003 6.358171131
Sudan MEATCONSUMP BEEF KG_CAP A 2004 6.168522053
Sudan MEATCONSUMP BEEF KG_CAP A 2005 6.171570633
Sudan MEATCONSUMP BEEF KG_CAP A 2006 6.008891224
Sudan MEATCONSUMP BEEF KG_CAP A 2007 5.673343393
Sudan MEATCONSUMP BEEF KG_CAP A 2008 5.5161779
Sudan MEATCONSUMP BEEF KG_CAP A 2009 5.387367293
Sudan MEATCONSUMP BEEF KG_CAP A 2010 5.285595401
Sudan MEATCONSUMP BEEF KG_CAP A 2011 5.178072611
Sudan MEATCONSUMP BEEF KG_CAP A 2012 5.229647225
Sudan MEATCONSUMP BEEF KG_CAP A 2013 5.135733527
Sudan MEATCONSUMP BEEF KG_CAP A 2014 5.146425507
Tanzania MEATCONSUMP BEEF KG_CAP A 1983 4.964160357
Tanzania MEATCONSUMP BEEF KG_CAP A 1984 5.101663036
Tanzania MEATCONSUMP BEEF KG_CAP A 1985 5.21011164
Tanzania MEATCONSUMP BEEF KG_CAP A 1986 5.293700099
Tanzania MEATCONSUMP BEEF KG_CAP A 1987 5.16949924
Tanzania MEATCONSUMP BEEF KG_CAP A 1988 5.44182241
Tanzania MEATCONSUMP BEEF KG_CAP A 1989 5.493434859
Tanzania MEATCONSUMP BEEF KG_CAP A 1990 5.246333496
Tanzania MEATCONSUMP BEEF KG_CAP A 1991 5.316404169
Tanzania MEATCONSUMP BEEF KG_CAP A 1992 5.269427838
Tanzania MEATCONSUMP BEEF KG_CAP A 1993 5.221370764
Tanzania MEATCONSUMP BEEF KG_CAP A 1994 5.130152289
Tanzania MEATCONSUMP BEEF KG_CAP A 1995 5.751808385
Tanzania MEATCONSUMP BEEF KG_CAP A 1996 4.413000334
Tanzania MEATCONSUMP BEEF KG_CAP A 1997 4.276862779
Tanzania MEATCONSUMP BEEF KG_CAP A 1998 4.281697505
Tanzania MEATCONSUMP BEEF KG_CAP A 1999 4.532756207
Tanzania MEATCONSUMP BEEF KG_CAP A 2000 4.632055442
Tanzania MEATCONSUMP BEEF KG_CAP A 2001 4.620696195
Tanzania MEATCONSUMP BEEF KG_CAP A 2002 4.817783194
Tanzania MEATCONSUMP BEEF KG_CAP A 2003 5.15042429
Tanzania MEATCONSUMP BEEF KG_CAP A 2004 4.935164147
Tanzania MEATCONSUMP BEEF KG_CAP A 2005 4.876867137
Tanzania MEATCONSUMP BEEF KG_CAP A 2006 4.934086952
Tanzania MEATCONSUMP BEEF KG_CAP A 2007 4.793944823
Tanzania MEATCONSUMP BEEF KG_CAP A 2008 4.726710268
Tanzania MEATCONSUMP BEEF KG_CAP A 2009 4.67052722
Tanzania MEATCONSUMP BEEF KG_CAP A 2010 3.836232777
Tanzania MEATCONSUMP BEEF KG_CAP A 2011 3.979557495
Tanzania MEATCONSUMP BEEF KG_CAP A 2012 4.263256678
Tanzania MEATCONSUMP BEEF KG_CAP A 2013 4.210843225
Tanzania MEATCONSUMP BEEF KG_CAP A 2014 3.949524271
Thailand MEATCONSUMP BEEF KG_CAP A 1983 4.542576453
Thailand MEATCONSUMP BEEF KG_CAP A 1984 4.418764919
Thailand MEATCONSUMP BEEF KG_CAP A 1985 4.32649691
Thailand MEATCONSUMP BEEF KG_CAP A 1986 4.268506314
Thailand MEATCONSUMP BEEF KG_CAP A 1987 4.127182785
Thailand MEATCONSUMP BEEF KG_CAP A 1988 3.997953165
Thailand MEATCONSUMP BEEF KG_CAP A 1989 3.979591557
Thailand MEATCONSUMP BEEF KG_CAP A 1990 3.914867064
Thailand MEATCONSUMP BEEF KG_CAP A 1991 3.903892818
Thailand MEATCONSUMP BEEF KG_CAP A 1992 3.838452454
Thailand MEATCONSUMP BEEF KG_CAP A 1993 4.065078465
Thailand MEATCONSUMP BEEF KG_CAP A 1994 3.2803338
Thailand MEATCONSUMP BEEF KG_CAP A 1995 4.260765706
Thailand MEATCONSUMP BEEF KG_CAP A 1996 3.797223362
Thailand MEATCONSUMP BEEF KG_CAP A 1997 3.306962967
Thailand MEATCONSUMP BEEF KG_CAP A 1998 2.896105637
Thailand MEATCONSUMP BEEF KG_CAP A 1999 2.592805662
Thailand MEATCONSUMP BEEF KG_CAP A 2000 2.48010402
Thailand MEATCONSUMP BEEF KG_CAP A 2001 2.565300364
Thailand MEATCONSUMP BEEF KG_CAP A 2002 2.624608153
Thailand MEATCONSUMP BEEF KG_CAP A 2003 2.680445847
Thailand MEATCONSUMP BEEF KG_CAP A 2004 2.835394246
Thailand MEATCONSUMP BEEF KG_CAP A 2005 3.300845098
Thailand MEATCONSUMP BEEF KG_CAP A 2006 3.068964967
Thailand MEATCONSUMP BEEF KG_CAP A 2007 1.950840696
Thailand MEATCONSUMP BEEF KG_CAP A 2008 2.15731358
Thailand MEATCONSUMP BEEF KG_CAP A 2009 2.163623998
Thailand MEATCONSUMP BEEF KG_CAP A 2010 2.229211603
Thailand MEATCONSUMP BEEF KG_CAP A 2011 1.992627882
Thailand MEATCONSUMP BEEF KG_CAP A 2012 1.945252552
Thailand MEATCONSUMP BEEF KG_CAP A 2013 1.927452203
Thailand MEATCONSUMP BEEF KG_CAP A 2014 1.920259326
Ukraine MEATCONSUMP BEEF KG_CAP A 1992 20.62328674
Ukraine MEATCONSUMP BEEF KG_CAP A 1993 17.4628651
Ukraine MEATCONSUMP BEEF KG_CAP A 1994 15.78297951
Ukraine MEATCONSUMP BEEF KG_CAP A 1995 13.43482012
Ukraine MEATCONSUMP BEEF KG_CAP A 1996 10.97149154
Ukraine MEATCONSUMP BEEF KG_CAP A 1997 10.86845445
Ukraine MEATCONSUMP BEEF KG_CAP A 1998 9.54260229
Ukraine MEATCONSUMP BEEF KG_CAP A 1999 9.1692676
Ukraine MEATCONSUMP BEEF KG_CAP A 2000 8.981694067
Ukraine MEATCONSUMP BEEF KG_CAP A 2001 7.657202365
Ukraine MEATCONSUMP BEEF KG_CAP A 2002 8.473413708
Ukraine MEATCONSUMP BEEF KG_CAP A 2003 8.455010465
Ukraine MEATCONSUMP BEEF KG_CAP A 2004 7.964745991
Ukraine MEATCONSUMP BEEF KG_CAP A 2005 8.206510447
Ukraine MEATCONSUMP BEEF KG_CAP A 2006 8.792750315
Ukraine MEATCONSUMP BEEF KG_CAP A 2007 7.952673235
Ukraine MEATCONSUMP BEEF KG_CAP A 2008 7.540100417
Ukraine MEATCONSUMP BEEF KG_CAP A 2009 6.758168959
Ukraine MEATCONSUMP BEEF KG_CAP A 2010 6.384167202
Ukraine MEATCONSUMP BEEF KG_CAP A 2011 6.081944175
Ukraine MEATCONSUMP BEEF KG_CAP A 2012 5.930505154
Ukraine MEATCONSUMP BEEF KG_CAP A 2013 6.477324757
Ukraine MEATCONSUMP BEEF KG_CAP A 2014 6.973754098
Uruguay MEATCONSUMP BEEF KG_CAP A 1983 45.24109318
Uruguay MEATCONSUMP BEEF KG_CAP A 1984 38.55928471
Uruguay MEATCONSUMP BEEF KG_CAP A 1985 63.18162612
Uruguay MEATCONSUMP BEEF KG_CAP A 1986 22.13941755
Uruguay MEATCONSUMP BEEF KG_CAP A 1987 55.4341966
Uruguay MEATCONSUMP BEEF KG_CAP A 1988 54.5598343
Uruguay MEATCONSUMP BEEF KG_CAP A 1989 46.5104987
Uruguay MEATCONSUMP BEEF KG_CAP A 1990 32.21998797
Uruguay MEATCONSUMP BEEF KG_CAP A 1991 55.26870883
Uruguay MEATCONSUMP BEEF KG_CAP A 1992 55.77251888
Uruguay MEATCONSUMP BEEF KG_CAP A 1993 44.78262006
Uruguay MEATCONSUMP BEEF KG_CAP A 1994 64.09557644
Uruguay MEATCONSUMP BEEF KG_CAP A 1995 48.17928238
Uruguay MEATCONSUMP BEEF KG_CAP A 1996 50.79997819
Uruguay MEATCONSUMP BEEF KG_CAP A 1997 49.76970284
Uruguay MEATCONSUMP BEEF KG_CAP A 1998 49.27368396
Uruguay MEATCONSUMP BEEF KG_CAP A 1999 50.8470786
Uruguay MEATCONSUMP BEEF KG_CAP A 2000 54.72132847
Uruguay MEATCONSUMP BEEF KG_CAP A 2001 37.05299774
Uruguay MEATCONSUMP BEEF KG_CAP A 2002 44.07798327
Uruguay MEATCONSUMP BEEF KG_CAP A 2003 35.50168007
Uruguay MEATCONSUMP BEEF KG_CAP A 2004 36.70978064
Uruguay MEATCONSUMP BEEF KG_CAP A 2005 45.68210963
Uruguay MEATCONSUMP BEEF KG_CAP A 2006 38.64966957
Uruguay MEATCONSUMP BEEF KG_CAP A 2007 37.25686733
Uruguay MEATCONSUMP BEEF KG_CAP A 2008 41.51486761
Uruguay MEATCONSUMP BEEF KG_CAP A 2009 30.52916527
Uruguay MEATCONSUMP BEEF KG_CAP A 2010 43.67818097
Uruguay MEATCONSUMP BEEF KG_CAP A 2011 39.81412955
Uruguay MEATCONSUMP BEEF KG_CAP A 2012 36.38701449
Uruguay MEATCONSUMP BEEF KG_CAP A 2013 35.72425047
Uruguay MEATCONSUMP BEEF KG_CAP A 2014 37.93369236
Viet Nam MEATCONSUMP BEEF KG_CAP A 1983 1.485293618
Viet Nam MEATCONSUMP BEEF KG_CAP A 1984 1.558834801
Viet Nam MEATCONSUMP BEEF KG_CAP A 1985 1.60752053
Viet Nam MEATCONSUMP BEEF KG_CAP A 1986 1.510438879
Viet Nam MEATCONSUMP BEEF KG_CAP A 1987 1.554663559
Viet Nam MEATCONSUMP BEEF KG_CAP A 1988 1.641375449
Viet Nam MEATCONSUMP BEEF KG_CAP A 1989 1.651347209
Viet Nam MEATCONSUMP BEEF KG_CAP A 1990 1.669151163
Viet Nam MEATCONSUMP BEEF KG_CAP A 1991 1.643976251
Viet Nam MEATCONSUMP BEEF KG_CAP A 1992 1.683495137
Viet Nam MEATCONSUMP BEEF KG_CAP A 1993 1.629700445
Viet Nam MEATCONSUMP BEEF KG_CAP A 1994 1.645385878
Viet Nam MEATCONSUMP BEEF KG_CAP A 1995 1.656952185
Viet Nam MEATCONSUMP BEEF KG_CAP A 1996 1.592904374
Viet Nam MEATCONSUMP BEEF KG_CAP A 1997 1.470606963
Viet Nam MEATCONSUMP BEEF KG_CAP A 1998 1.444241714
Viet Nam MEATCONSUMP BEEF KG_CAP A 1999 1.56413456
Viet Nam MEATCONSUMP BEEF KG_CAP A 2000 1.598943734
Viet Nam MEATCONSUMP BEEF KG_CAP A 2001 1.666529117
Viet Nam MEATCONSUMP BEEF KG_CAP A 2002 1.707541899
Viet Nam MEATCONSUMP BEEF KG_CAP A 2003 1.723631956
Viet Nam MEATCONSUMP BEEF KG_CAP A 2004 1.867351552
Viet Nam MEATCONSUMP BEEF KG_CAP A 2005 2.178456152
Viet Nam MEATCONSUMP BEEF KG_CAP A 2006 2.359026442
Viet Nam MEATCONSUMP BEEF KG_CAP A 2007 3.290986036
Viet Nam MEATCONSUMP BEEF KG_CAP A 2008 4.163152756
Viet Nam MEATCONSUMP BEEF KG_CAP A 2009 4.929746113
Viet Nam MEATCONSUMP BEEF KG_CAP A 2010 4.612899983
Viet Nam MEATCONSUMP BEEF KG_CAP A 2011 6.358949933
Viet Nam MEATCONSUMP BEEF KG_CAP A 2012 6.575240023
Viet Nam MEATCONSUMP BEEF KG_CAP A 2013 8.609816866
Viet Nam MEATCONSUMP BEEF KG_CAP A 2014 9.645950773
Zambia MEATCONSUMP BEEF KG_CAP A 1983 3.254700863
Zambia MEATCONSUMP BEEF KG_CAP A 1984 2.990771741
Zambia MEATCONSUMP BEEF KG_CAP A 1985 3.236502017
Zambia MEATCONSUMP BEEF KG_CAP A 1986 3.209194015
Zambia MEATCONSUMP BEEF KG_CAP A 1987 3.217536794
Zambia MEATCONSUMP BEEF KG_CAP A 1988 3.173870135
Zambia MEATCONSUMP BEEF KG_CAP A 1989 3.134301187
Zambia MEATCONSUMP BEEF KG_CAP A 1990 3.213246323
Zambia MEATCONSUMP BEEF KG_CAP A 1991 3.239619551
Zambia MEATCONSUMP BEEF KG_CAP A 1992 3.238416619
Zambia MEATCONSUMP BEEF KG_CAP A 1993 3.476082309
Zambia MEATCONSUMP BEEF KG_CAP A 1994 3.503173386
Zambia MEATCONSUMP BEEF KG_CAP A 1995 2.968408338
Zambia MEATCONSUMP BEEF KG_CAP A 1996 3.042396101
Zambia MEATCONSUMP BEEF KG_CAP A 1997 3.152043011
Zambia MEATCONSUMP BEEF KG_CAP A 1998 2.973812319
Zambia MEATCONSUMP BEEF KG_CAP A 1999 3.314858285
Zambia MEATCONSUMP BEEF KG_CAP A 2000 2.84101892
Zambia MEATCONSUMP BEEF KG_CAP A 2001 2.757481161
Zambia MEATCONSUMP BEEF KG_CAP A 2002 3.900195887
Zambia MEATCONSUMP BEEF KG_CAP A 2003 3.809811897
Zambia MEATCONSUMP BEEF KG_CAP A 2004 3.510586049
Zambia MEATCONSUMP BEEF KG_CAP A 2005 3.61601566
Zambia MEATCONSUMP BEEF KG_CAP A 2006 3.431734944
Zambia MEATCONSUMP BEEF KG_CAP A 2007 3.38473987
Zambia MEATCONSUMP BEEF KG_CAP A 2008 3.297029801
Zambia MEATCONSUMP BEEF KG_CAP A 2009 3.712319655
Zambia MEATCONSUMP BEEF KG_CAP A 2010 3.952349218
Zambia MEATCONSUMP BEEF KG_CAP A 2011 3.483827369
Zambia MEATCONSUMP BEEF KG_CAP A 2012 3.40669985
Zambia MEATCONSUMP BEEF KG_CAP A 2013 3.297977879
Zambia MEATCONSUMP BEEF KG_CAP A 2014 3.246488292
World MEATCONSUMP BEEF KG_CAP A 1995 6.777311054
World MEATCONSUMP BEEF KG_CAP A 1996 6.724168357
World MEATCONSUMP BEEF KG_CAP A 1997 6.797707348
World MEATCONSUMP BEEF KG_CAP A 1998 6.769994495
World MEATCONSUMP BEEF KG_CAP A 1999 6.768525801
World MEATCONSUMP BEEF KG_CAP A 2000 6.711302289
World MEATCONSUMP BEEF KG_CAP A 2001 6.508850866
World MEATCONSUMP BEEF KG_CAP A 2002 6.69577751
World MEATCONSUMP BEEF KG_CAP A 2003 6.560727987
World MEATCONSUMP BEEF KG_CAP A 2004 6.616286048
World MEATCONSUMP BEEF KG_CAP A 2005 6.583260712
World MEATCONSUMP BEEF KG_CAP A 2006 6.662301888
World MEATCONSUMP BEEF KG_CAP A 2007 6.82654134
World MEATCONSUMP BEEF KG_CAP A 2008 6.779260734
World MEATCONSUMP BEEF KG_CAP A 2009 6.70978533
World MEATCONSUMP BEEF KG_CAP A 2010 6.614108614
World MEATCONSUMP BEEF KG_CAP A 2011 6.477422602
World MEATCONSUMP BEEF KG_CAP A 2012 6.481251724
World MEATCONSUMP BEEF KG_CAP A 2013 6.540803085
World MEATCONSUMP BEEF KG_CAP A 2014 6.536916578
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1983 4.088223768
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1984 4.19163869
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1985 4.132888706
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1986 3.721440084
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1987 3.611902203
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1988 3.570887791
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1989 3.851893169
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1990 3.880996814
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1991 3.891401883
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1992 3.843229263
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1993 3.281127176
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1994 3.161321146
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1995 3.11100572
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1996 3.14332602
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1997 3.150682991
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1998 3.147530925
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 1999 3.207139298
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2000 3.228840512
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2001 3.248410436
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2002 3.425446621
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2003 3.344603731
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2004 3.30295949
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2005 3.413790844
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2006 3.399906946
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2007 3.472105071
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2008 3.477534087
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2009 3.369317648
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2010 3.289361968
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2011 3.3292518
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2012 3.261071145
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2013 3.206219852
Sub-Saharan Africa MEATCONSUMP BEEF KG_CAP A 2014 3.140171928
d3 = function() {
var d3 = {
version: "3.3.11"
};
if (!Date.now) Date.now = function() {
return +new Date();
};
var d3_arraySlice = [].slice, d3_array = function(list) {
return d3_arraySlice.call(list);
};
var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window;
try {
d3_array(d3_documentElement.childNodes)[0].nodeType;
} catch (e) {
d3_array = function(list) {
var i = list.length, array = new Array(i);
while (i--) array[i] = list[i];
return array;
};
}
try {
d3_document.createElement("div").style.setProperty("opacity", 0, "");
} catch (error) {
var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
d3_element_prototype.setAttribute = function(name, value) {
d3_element_setAttribute.call(this, name, value + "");
};
d3_element_prototype.setAttributeNS = function(space, local, value) {
d3_element_setAttributeNS.call(this, space, local, value + "");
};
d3_style_prototype.setProperty = function(name, value, priority) {
d3_style_setProperty.call(this, name, value + "", priority);
};
}
d3.ascending = function(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
};
d3.descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
}
return a;
};
d3.max = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
}
return a;
};
d3.extent = function(array, f) {
var i = -1, n = array.length, a, b, c;
if (arguments.length === 1) {
while (++i < n && !((a = c = array[i]) != null && a <= a)) a = c = undefined;
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
while (++i < n && !((a = c = f.call(array, array[i], i)) != null && a <= a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
}
return [ a, c ];
};
d3.sum = function(array, f) {
var s = 0, n = array.length, a, i = -1;
if (arguments.length === 1) {
while (++i < n) if (!isNaN(a = +array[i])) s += a;
} else {
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
}
return s;
};
function d3_number(x) {
return x != null && !isNaN(x);
}
d3.mean = function(array, f) {
var n = array.length, a, m = 0, i = -1, j = 0;
if (arguments.length === 1) {
while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
} else {
while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
}
return j ? m : undefined;
};
d3.quantile = function(values, p) {
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
return e ? v + e * (values[h] - v) : v;
};
d3.median = function(array, f) {
if (arguments.length > 1) array = array.map(f);
array = array.filter(d3_number);
return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
};
d3.bisector = function(f) {
return {
left: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid;
}
return lo;
},
right: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1;
}
return lo;
}
};
};
var d3_bisector = d3.bisector(function(d) {
return d;
});
d3.bisectLeft = d3_bisector.left;
d3.bisect = d3.bisectRight = d3_bisector.right;
d3.shuffle = function(array) {
var m = array.length, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m], array[m] = array[i], array[i] = t;
}
return array;
};
d3.permute = function(array, indexes) {
var i = indexes.length, permutes = new Array(i);
while (i--) permutes[i] = array[indexes[i]];
return permutes;
};
d3.pairs = function(array) {
var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];
return pairs;
};
d3.zip = function() {
if (!(n = arguments.length)) return [];
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
zip[j] = arguments[j][i];
}
}
return zips;
};
function d3_zipLength(d) {
return d.length;
}
d3.transpose = function(matrix) {
return d3.zip.apply(d3, matrix);
};
d3.keys = function(map) {
var keys = [];
for (var key in map) keys.push(key);
return keys;
};
d3.values = function(map) {
var values = [];
for (var key in map) values.push(map[key]);
return values;
};
d3.entries = function(map) {
var entries = [];
for (var key in map) entries.push({
key: key,
value: map[key]
});
return entries;
};
d3.merge = function(arrays) {
var n = arrays.length, m, i = -1, j = 0, merged, array;
while (++i < n) j += arrays[i].length;
merged = new Array(j);
while (--n >= 0) {
array = arrays[n];
m = array.length;
while (--m >= 0) {
merged[--j] = array[m];
}
}
return merged;
};
var abs = Math.abs;
d3.range = function(start, stop, step) {
if (arguments.length < 3) {
step = 1;
if (arguments.length < 2) {
stop = start;
start = 0;
}
}
if ((stop - start) / step === Infinity) throw new Error("infinite range");
var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;
start *= k, stop *= k, step *= k;
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
return range;
};
function d3_range_integerScale(x) {
var k = 1;
while (x * k % 1) k *= 10;
return k;
}
function d3_class(ctor, properties) {
try {
for (var key in properties) {
Object.defineProperty(ctor.prototype, key, {
value: properties[key],
enumerable: false
});
}
} catch (e) {
ctor.prototype = properties;
}
}
d3.map = function(object) {
var map = new d3_Map();
if (object instanceof d3_Map) object.forEach(function(key, value) {
map.set(key, value);
}); else for (var key in object) map.set(key, object[key]);
return map;
};
function d3_Map() {}
d3_class(d3_Map, {
has: function(key) {
return d3_map_prefix + key in this;
},
get: function(key) {
return this[d3_map_prefix + key];
},
set: function(key, value) {
return this[d3_map_prefix + key] = value;
},
remove: function(key) {
key = d3_map_prefix + key;
return key in this && delete this[key];
},
keys: function() {
var keys = [];
this.forEach(function(key) {
keys.push(key);
});
return keys;
},
values: function() {
var values = [];
this.forEach(function(key, value) {
values.push(value);
});
return values;
},
entries: function() {
var entries = [];
this.forEach(function(key, value) {
entries.push({
key: key,
value: value
});
});
return entries;
},
forEach: function(f) {
for (var key in this) {
if (key.charCodeAt(0) === d3_map_prefixCode) {
f.call(this, key.substring(1), this[key]);
}
}
}
});
var d3_map_prefix = "\x00", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
d3.nest = function() {
var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
function map(mapType, array, depth) {
if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;
while (++i < n) {
if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
values.push(object);
} else {
valuesByKey.set(keyValue, [ object ]);
}
}
if (mapType) {
object = mapType();
setter = function(keyValue, values) {
object.set(keyValue, map(mapType, values, depth));
};
} else {
object = {};
setter = function(keyValue, values) {
object[keyValue] = map(mapType, values, depth);
};
}
valuesByKey.forEach(setter);
return object;
}
function entries(map, depth) {
if (depth >= keys.length) return map;
var array = [], sortKey = sortKeys[depth++];
map.forEach(function(key, keyMap) {
array.push({
key: key,
values: entries(keyMap, depth)
});
});
return sortKey ? array.sort(function(a, b) {
return sortKey(a.key, b.key);
}) : array;
}
nest.map = function(array, mapType) {
return map(mapType, array, 0);
};
nest.entries = function(array) {
return entries(map(d3.map, array, 0), 0);
};
nest.key = function(d) {
keys.push(d);
return nest;
};
nest.sortKeys = function(order) {
sortKeys[keys.length - 1] = order;
return nest;
};
nest.sortValues = function(order) {
sortValues = order;
return nest;
};
nest.rollup = function(f) {
rollup = f;
return nest;
};
return nest;
};
d3.set = function(array) {
var set = new d3_Set();
if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
return set;
};
function d3_Set() {}
d3_class(d3_Set, {
has: function(value) {
return d3_map_prefix + value in this;
},
add: function(value) {
this[d3_map_prefix + value] = true;
return value;
},
remove: function(value) {
value = d3_map_prefix + value;
return value in this && delete this[value];
},
values: function() {
var values = [];
this.forEach(function(value) {
values.push(value);
});
return values;
},
forEach: function(f) {
for (var value in this) {
if (value.charCodeAt(0) === d3_map_prefixCode) {
f.call(this, value.substring(1));
}
}
}
});
d3.behavior = {};
d3.rebind = function(target, source) {
var i = 1, n = arguments.length, method;
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
return target;
};
function d3_rebind(target, source, method) {
return function() {
var value = method.apply(source, arguments);
return value === source ? target : value;
};
}
function d3_vendorSymbol(object, name) {
if (name in object) return name;
name = name.charAt(0).toUpperCase() + name.substring(1);
for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
var prefixName = d3_vendorPrefixes[i] + name;
if (prefixName in object) return prefixName;
}
}
var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ];
function d3_noop() {}
d3.dispatch = function() {
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
return dispatch;
};
function d3_dispatch() {}
d3_dispatch.prototype.on = function(type, listener) {
var i = type.indexOf("."), name = "";
if (i >= 0) {
name = type.substring(i + 1);
type = type.substring(0, i);
}
if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
if (arguments.length === 2) {
if (listener == null) for (type in this) {
if (this.hasOwnProperty(type)) this[type].on(name, null);
}
return this;
}
};
function d3_dispatch_event(dispatch) {
var listeners = [], listenerByName = new d3_Map();
function event() {
var z = listeners, i = -1, n = z.length, l;
while (++i < n) if (l = z[i].on) l.apply(this, arguments);
return dispatch;
}
event.on = function(name, listener) {
var l = listenerByName.get(name), i;
if (arguments.length < 2) return l && l.on;
if (l) {
l.on = null;
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
listenerByName.remove(name);
}
if (listener) listeners.push(listenerByName.set(name, {
on: listener
}));
return dispatch;
};
return event;
}
d3.event = null;
function d3_eventPreventDefault() {
d3.event.preventDefault();
}
function d3_eventSource() {
var e = d3.event, s;
while (s = e.sourceEvent) e = s;
return e;
}
function d3_eventDispatch(target) {
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
dispatch.of = function(thiz, argumentz) {
return function(e1) {
try {
var e0 = e1.sourceEvent = d3.event;
e1.target = target;
d3.event = e1;
dispatch[e1.type].apply(thiz, argumentz);
} finally {
d3.event = e0;
}
};
};
return dispatch;
}
d3.requote = function(s) {
return s.replace(d3_requote_re, "\\$&");
};
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
var d3_subclass = {}.__proto__ ? function(object, prototype) {
object.__proto__ = prototype;
} : function(object, prototype) {
for (var property in prototype) object[property] = prototype[property];
};
function d3_selection(groups) {
d3_subclass(groups, d3_selectionPrototype);
return groups;
}
var d3_select = function(s, n) {
return n.querySelector(s);
}, d3_selectAll = function(s, n) {
return n.querySelectorAll(s);
}, d3_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) {
return d3_selectMatcher.call(n, s);
};
if (typeof Sizzle === "function") {
d3_select = function(s, n) {
return Sizzle(s, n)[0] || null;
};
d3_selectAll = function(s, n) {
return Sizzle.uniqueSort(Sizzle(s, n));
};
d3_selectMatches = Sizzle.matchesSelector;
}
d3.selection = function() {
return d3_selectionRoot;
};
var d3_selectionPrototype = d3.selection.prototype = [];
d3_selectionPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, group, node;
selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(subnode = selector.call(node, node.__data__, i, j));
if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selector(selector) {
return typeof selector === "function" ? selector : function() {
return d3_select(selector, this);
};
}
d3_selectionPrototype.selectAll = function(selector) {
var subgroups = [], subgroup, node;
selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
subgroup.parentNode = node;
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selectorAll(selector) {
return typeof selector === "function" ? selector : function() {
return d3_selectAll(selector, this);
};
}
var d3_nsPrefix = {
svg: "http://www.w3.org/2000/svg",
xhtml: "http://www.w3.org/1999/xhtml",
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
d3.ns = {
prefix: d3_nsPrefix,
qualify: function(name) {
var i = name.indexOf(":"), prefix = name;
if (i >= 0) {
prefix = name.substring(0, i);
name = name.substring(i + 1);
}
return d3_nsPrefix.hasOwnProperty(prefix) ? {
space: d3_nsPrefix[prefix],
local: name
} : name;
}
};
d3_selectionPrototype.attr = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node();
name = d3.ns.qualify(name);
return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
}
for (value in name) this.each(d3_selection_attr(value, name[value]));
return this;
}
return this.each(d3_selection_attr(name, value));
};
function d3_selection_attr(name, value) {
name = d3.ns.qualify(name);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
function attrConstant() {
this.setAttribute(name, value);
}
function attrConstantNS() {
this.setAttributeNS(name.space, name.local, value);
}
function attrFunction() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
}
function attrFunctionNS() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
}
return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
}
function d3_collapse(s) {
return s.trim().replace(/\s+/g, " ");
}
d3_selectionPrototype.classed = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1;
if (value = node.classList) {
while (++i < n) if (!value.contains(name[i])) return false;
} else {
value = node.getAttribute("class");
while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
}
return true;
}
for (value in name) this.each(d3_selection_classed(value, name[value]));
return this;
}
return this.each(d3_selection_classed(name, value));
};
function d3_selection_classedRe(name) {
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
}
function d3_selection_classed(name, value) {
name = name.trim().split(/\s+/).map(d3_selection_classedName);
var n = name.length;
function classedConstant() {
var i = -1;
while (++i < n) name[i](this, value);
}
function classedFunction() {
var i = -1, x = value.apply(this, arguments);
while (++i < n) name[i](this, x);
}
return typeof value === "function" ? classedFunction : classedConstant;
}
function d3_selection_classedName(name) {
var re = d3_selection_classedRe(name);
return function(node, value) {
if (c = node.classList) return value ? c.add(name) : c.remove(name);
var c = node.getAttribute("class") || "";
if (value) {
re.lastIndex = 0;
if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
} else {
node.setAttribute("class", d3_collapse(c.replace(re, " ")));
}
};
}
d3_selectionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
return this;
}
if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
priority = "";
}
return this.each(d3_selection_style(name, value, priority));
};
function d3_selection_style(name, value, priority) {
function styleNull() {
this.style.removeProperty(name);
}
function styleConstant() {
this.style.setProperty(name, value, priority);
}
function styleFunction() {
var x = value.apply(this, arguments);
if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
}
return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
}
d3_selectionPrototype.property = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") return this.node()[name];
for (value in name) this.each(d3_selection_property(value, name[value]));
return this;
}
return this.each(d3_selection_property(name, value));
};
function d3_selection_property(name, value) {
function propertyNull() {
delete this[name];
}
function propertyConstant() {
this[name] = value;
}
function propertyFunction() {
var x = value.apply(this, arguments);
if (x == null) delete this[name]; else this[name] = x;
}
return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
}
d3_selectionPrototype.text = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.textContent = v == null ? "" : v;
} : value == null ? function() {
this.textContent = "";
} : function() {
this.textContent = value;
}) : this.node().textContent;
};
d3_selectionPrototype.html = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.innerHTML = v == null ? "" : v;
} : value == null ? function() {
this.innerHTML = "";
} : function() {
this.innerHTML = value;
}) : this.node().innerHTML;
};
d3_selectionPrototype.append = function(name) {
name = d3_selection_creator(name);
return this.select(function() {
return this.appendChild(name.apply(this, arguments));
});
};
function d3_selection_creator(name) {
return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() {
return this.ownerDocument.createElementNS(name.space, name.local);
} : function() {
return this.ownerDocument.createElementNS(this.namespaceURI, name);
};
}
d3_selectionPrototype.insert = function(name, before) {
name = d3_selection_creator(name);
before = d3_selection_selector(before);
return this.select(function() {
return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
});
};
d3_selectionPrototype.remove = function() {
return this.each(function() {
var parent = this.parentNode;
if (parent) parent.removeChild(this);
});
};
d3_selectionPrototype.data = function(value, key) {
var i = -1, n = this.length, group, node;
if (!arguments.length) {
value = new Array(n = (group = this[0]).length);
while (++i < n) {
if (node = group[i]) {
value[i] = node.__data__;
}
}
return value;
}
function bind(group, groupData) {
var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
if (key) {
var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue;
for (i = -1; ++i < n; ) {
keyValue = key.call(node = group[i], node.__data__, i);
if (nodeByKeyValue.has(keyValue)) {
exitNodes[i] = node;
} else {
nodeByKeyValue.set(keyValue, node);
}
keyValues.push(keyValue);
}
for (i = -1; ++i < m; ) {
keyValue = key.call(groupData, nodeData = groupData[i], i);
if (node = nodeByKeyValue.get(keyValue)) {
updateNodes[i] = node;
node.__data__ = nodeData;
} else if (!dataByKeyValue.has(keyValue)) {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
dataByKeyValue.set(keyValue, nodeData);
nodeByKeyValue.remove(keyValue);
}
for (i = -1; ++i < n; ) {
if (nodeByKeyValue.has(keyValues[i])) {
exitNodes[i] = group[i];
}
}
} else {
for (i = -1; ++i < n0; ) {
node = group[i];
nodeData = groupData[i];
if (node) {
node.__data__ = nodeData;
updateNodes[i] = node;
} else {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
}
for (;i < m; ++i) {
enterNodes[i] = d3_selection_dataNode(groupData[i]);
}
for (;i < n; ++i) {
exitNodes[i] = group[i];
}
}
enterNodes.update = updateNodes;
enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
enter.push(enterNodes);
update.push(updateNodes);
exit.push(exitNodes);
}
var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
if (typeof value === "function") {
while (++i < n) {
bind(group = this[i], value.call(group, group.parentNode.__data__, i));
}
} else {
while (++i < n) {
bind(group = this[i], value);
}
}
update.enter = function() {
return enter;
};
update.exit = function() {
return exit;
};
return update;
};
function d3_selection_dataNode(data) {
return {
__data__: data
};
}
d3_selectionPrototype.datum = function(value) {
return arguments.length ? this.property("__data__", value) : this.property("__data__");
};
d3_selectionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
subgroup.push(node);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_filter(selector) {
return function() {
return d3_selectMatches(this, selector);
};
}
d3_selectionPrototype.order = function() {
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
if (node = group[i]) {
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
next = node;
}
}
}
return this;
};
d3_selectionPrototype.sort = function(comparator) {
comparator = d3_selection_sortComparator.apply(this, arguments);
for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
return this.order();
};
function d3_selection_sortComparator(comparator) {
if (!arguments.length) comparator = d3.ascending;
return function(a, b) {
return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
};
}
d3_selectionPrototype.each = function(callback) {
return d3_selection_each(this, function(node, i, j) {
callback.call(node, node.__data__, i, j);
});
};
function d3_selection_each(groups, callback) {
for (var j = 0, m = groups.length; j < m; j++) {
for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
if (node = group[i]) callback(node, i, j);
}
}
return groups;
}
d3_selectionPrototype.call = function(callback) {
var args = d3_array(arguments);
callback.apply(args[0] = this, args);
return this;
};
d3_selectionPrototype.empty = function() {
return !this.node();
};
d3_selectionPrototype.node = function() {
for (var j = 0, m = this.length; j < m; j++) {
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
var node = group[i];
if (node) return node;
}
}
return null;
};
d3_selectionPrototype.size = function() {
var n = 0;
this.each(function() {
++n;
});
return n;
};
function d3_selection_enter(selection) {
d3_subclass(selection, d3_selection_enterPrototype);
return selection;
}
var d3_selection_enterPrototype = [];
d3.selection.enter = d3_selection_enter;
d3.selection.enter.prototype = d3_selection_enterPrototype;
d3_selection_enterPrototype.append = d3_selectionPrototype.append;
d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
d3_selection_enterPrototype.node = d3_selectionPrototype.node;
d3_selection_enterPrototype.call = d3_selectionPrototype.call;
d3_selection_enterPrototype.size = d3_selectionPrototype.size;
d3_selection_enterPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, upgroup, group, node;
for (var j = -1, m = this.length; ++j < m; ) {
upgroup = (group = this[j]).update;
subgroups.push(subgroup = []);
subgroup.parentNode = group.parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));
subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
d3_selection_enterPrototype.insert = function(name, before) {
if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);
return d3_selectionPrototype.insert.call(this, name, before);
};
function d3_selection_enterInsertBefore(enter) {
var i0, j0;
return function(d, i, j) {
var group = enter[j].update, n = group.length, node;
if (j != j0) j0 = j, i0 = 0;
if (i >= i0) i0 = i + 1;
while (!(node = group[i0]) && ++i0 < n) ;
return node;
};
}
d3_selectionPrototype.transition = function() {
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = d3_transitionInherit || {
time: Date.now(),
ease: d3_ease_cubicInOut,
delay: 0,
duration: 250
};
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) d3_transitionNode(node, i, id, transition);
subgroup.push(node);
}
}
return d3_transition(subgroups, id);
};
d3_selectionPrototype.interrupt = function() {
return this.each(d3_selection_interrupt);
};
function d3_selection_interrupt() {
var lock = this.__transition__;
if (lock) ++lock.active;
}
d3.select = function(node) {
var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ];
group.parentNode = d3_documentElement;
return d3_selection([ group ]);
};
d3.selectAll = function(nodes) {
var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes);
group.parentNode = d3_documentElement;
return d3_selection([ group ]);
};
var d3_selectionRoot = d3.select(d3_documentElement);
d3_selectionPrototype.on = function(type, listener, capture) {
var n = arguments.length;
if (n < 3) {
if (typeof type !== "string") {
if (n < 2) listener = false;
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
return this;
}
if (n < 2) return (n = this.node()["__on" + type]) && n._;
capture = false;
}
return this.each(d3_selection_on(type, listener, capture));
};
function d3_selection_on(type, listener, capture) {
var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener;
if (i > 0) type = type.substring(0, i);
var filter = d3_selection_onFilters.get(type);
if (filter) type = filter, wrap = d3_selection_onFilter;
function onRemove() {
var l = this[name];
if (l) {
this.removeEventListener(type, l, l.$);
delete this[name];
}
}
function onAdd() {
var l = wrap(listener, d3_array(arguments));
onRemove.call(this);
this.addEventListener(type, this[name] = l, l.$ = capture);
l._ = listener;
}
function removeAll() {
var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match;
for (var name in this) {
if (match = name.match(re)) {
var l = this[name];
this.removeEventListener(match[1], l, l.$);
delete this[name];
}
}
}
return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;
}
var d3_selection_onFilters = d3.map({
mouseenter: "mouseover",
mouseleave: "mouseout"
});
d3_selection_onFilters.forEach(function(k) {
if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
});
function d3_selection_onListener(listener, argumentz) {
return function(e) {
var o = d3.event;
d3.event = e;
argumentz[0] = this.__data__;
try {
listener.apply(this, argumentz);
} finally {
d3.event = o;
}
};
}
function d3_selection_onFilter(listener, argumentz) {
var l = d3_selection_onListener(listener, argumentz);
return function(e) {
var target = this, related = e.relatedTarget;
if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {
l.call(target, e);
}
};
}
var d3_event_dragSelect = "onselectstart" in d3_document ? null : d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0;
function d3_event_dragSuppress() {
var name = ".dragsuppress-" + ++d3_event_dragId, click = "click" + name, w = d3.select(d3_window).on("touchmove" + name, d3_eventPreventDefault).on("dragstart" + name, d3_eventPreventDefault).on("selectstart" + name, d3_eventPreventDefault);
if (d3_event_dragSelect) {
var style = d3_documentElement.style, select = style[d3_event_dragSelect];
style[d3_event_dragSelect] = "none";
}
return function(suppressClick) {
w.on(name, null);
if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
if (suppressClick) {
function off() {
w.on(click, null);
}
w.on(click, function() {
d3_eventPreventDefault();
off();
}, true);
setTimeout(off, 0);
}
};
}
d3.mouse = function(container) {
return d3_mousePoint(container, d3_eventSource());
};
var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
function d3_mousePoint(container, e) {
if (e.changedTouches) e = e.changedTouches[0];
var svg = container.ownerSVGElement || container;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
svg = d3.select("body").append("svg").style({
position: "absolute",
top: 0,
left: 0,
margin: 0,
padding: 0,
border: "none"
}, "important");
var ctm = svg[0][0].getScreenCTM();
d3_mouse_bug44083 = !(ctm.f || ctm.e);
svg.remove();
}
if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX,
point.y = e.clientY;
point = point.matrixTransform(container.getScreenCTM().inverse());
return [ point.x, point.y ];
}
var rect = container.getBoundingClientRect();
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
}
d3.touches = function(container, touches) {
if (arguments.length < 2) touches = d3_eventSource().touches;
return touches ? d3_array(touches).map(function(touch) {
var point = d3_mousePoint(container, touch);
point.identifier = touch.identifier;
return point;
}) : [];
};
d3.behavior.drag = function() {
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, "mousemove", "mouseup"), touchstart = dragstart(touchid, touchposition, "touchmove", "touchend");
function drag() {
this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart);
}
function touchid() {
return d3.event.changedTouches[0].identifier;
}
function touchposition(parent, id) {
return d3.touches(parent).filter(function(p) {
return p.identifier === id;
})[0];
}
function dragstart(id, position, move, end) {
return function() {
var target = this, parent = target.parentNode, event_ = event.of(target, arguments), eventTarget = d3.event.target, eventId = id(), drag = eventId == null ? "drag" : "drag-" + eventId, origin_ = position(parent, eventId), dragged = 0, offset, w = d3.select(d3_window).on(move + "." + drag, moved).on(end + "." + drag, ended), dragRestore = d3_event_dragSuppress();
if (origin) {
offset = origin.apply(target, arguments);
offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
} else {
offset = [ 0, 0 ];
}
event_({
type: "dragstart"
});
function moved() {
var p = position(parent, eventId), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
dragged |= dx | dy;
origin_ = p;
event_({
type: "drag",
x: p[0] + offset[0],
y: p[1] + offset[1],
dx: dx,
dy: dy
});
}
function ended() {
w.on(move + "." + drag, null).on(end + "." + drag, null);
dragRestore(dragged && d3.event.target === eventTarget);
event_({
type: "dragend"
});
}
};
}
drag.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return drag;
};
return d3.rebind(drag, event, "on");
};
var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π;
function d3_sgn(x) {
return x > 0 ? 1 : x < 0 ? -1 : 0;
}
function d3_acos(x) {
return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
}
function d3_asin(x) {
return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);
}
function d3_sinh(x) {
return ((x = Math.exp(x)) - 1 / x) / 2;
}
function d3_cosh(x) {
return ((x = Math.exp(x)) + 1 / x) / 2;
}
function d3_tanh(x) {
return ((x = Math.exp(2 * x)) - 1) / (x + 1);
}
function d3_haversin(x) {
return (x = Math.sin(x / 2)) * x;
}
var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;
d3.interpolateZoom = function(p0, p1) {
var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ;
function interpolate(t) {
var s = t * S;
if (dr) {
var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];
}
return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ];
}
interpolate.duration = S * 1e3;
return interpolate;
};
d3.behavior.zoom = function() {
var view = {
x: 0,
y: 0,
k: 1
}, translate0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1;
function zoom(g) {
g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on(mousemove, mousewheelreset).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted);
}
zoom.event = function(g) {
g.each(function() {
var event_ = event.of(this, arguments), view1 = view;
if (d3_transitionInheritId) {
d3.select(this).transition().each("start.zoom", function() {
view = this.__chart__ || {
x: 0,
y: 0,
k: 1
};
zoomstarted(event_);
}).tween("zoom:zoom", function() {
var dx = size[0], dy = size[1], cx = dx / 2, cy = dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);
return function(t) {
var l = i(t), k = dx / l[2];
this.__chart__ = view = {
x: cx - l[0] * k,
y: cy - l[1] * k,
k: k
};
zoomed(event_);
};
}).each("end.zoom", function() {
zoomended(event_);
});
} else {
this.__chart__ = view;
zoomstarted(event_);
zoomed(event_);
zoomended(event_);
}
});
};
zoom.translate = function(_) {
if (!arguments.length) return [ view.x, view.y ];
view = {
x: +_[0],
y: +_[1],
k: view.k
};
rescale();
return zoom;
};
zoom.scale = function(_) {
if (!arguments.length) return view.k;
view = {
x: view.x,
y: view.y,
k: +_
};
rescale();
return zoom;
};
zoom.scaleExtent = function(_) {
if (!arguments.length) return scaleExtent;
scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];
return zoom;
};
zoom.center = function(_) {
if (!arguments.length) return center;
center = _ && [ +_[0], +_[1] ];
return zoom;
};
zoom.size = function(_) {
if (!arguments.length) return size;
size = _ && [ +_[0], +_[1] ];
return zoom;
};
zoom.x = function(z) {
if (!arguments.length) return x1;
x1 = z;
x0 = z.copy();
view = {
x: 0,
y: 0,
k: 1
};
return zoom;
};
zoom.y = function(z) {
if (!arguments.length) return y1;
y1 = z;
y0 = z.copy();
view = {
x: 0,
y: 0,
k: 1
};
return zoom;
};
function location(p) {
return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];
}
function point(l) {
return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];
}
function scaleTo(s) {
view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
}
function translateTo(p, l) {
l = point(l);
view.x += p[0] - l[0];
view.y += p[1] - l[1];
}
function rescale() {
if (x1) x1.domain(x0.range().map(function(x) {
return (x - view.x) / view.k;
}).map(x0.invert));
if (y1) y1.domain(y0.range().map(function(y) {
return (y - view.y) / view.k;
}).map(y0.invert));
}
function zoomstarted(event) {
event({
type: "zoomstart"
});
}
function zoomed(event) {
rescale();
event({
type: "zoom",
scale: view.k,
translate: [ view.x, view.y ]
});
}
function zoomended(event) {
event({
type: "zoomend"
});
}
function mousedowned() {
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, dragged = 0, w = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress();
d3_selection_interrupt.call(target);
zoomstarted(event_);
function moved() {
dragged = 1;
translateTo(d3.mouse(target), l);
zoomed(event_);
}
function ended() {
w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null);
dragRestore(dragged && d3.event.target === eventTarget);
zoomended(event_);
}
}
function touchstarted() {
var target = this, event_ = event.of(target, arguments), locations0 = {}, distance0 = 0, scale0, eventId = d3.event.changedTouches[0].identifier, touchmove = "touchmove.zoom-" + eventId, touchend = "touchend.zoom-" + eventId, w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended), t = d3.select(target).on(mousedown, null).on(touchstart, started), dragRestore = d3_event_dragSuppress();
d3_selection_interrupt.call(target);
started();
zoomstarted(event_);
function relocate() {
var touches = d3.touches(target);
scale0 = view.k;
touches.forEach(function(t) {
if (t.identifier in locations0) locations0[t.identifier] = location(t);
});
return touches;
}
function started() {
var changed = d3.event.changedTouches;
for (var i = 0, n = changed.length; i < n; ++i) {
locations0[changed[i].identifier] = null;
}
var touches = relocate(), now = Date.now();
if (touches.length === 1) {
if (now - touchtime < 500) {
var p = touches[0], l = locations0[p.identifier];
scaleTo(view.k * 2);
translateTo(p, l);
d3_eventPreventDefault();
zoomed(event_);
}
touchtime = now;
} else if (touches.length > 1) {
var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];
distance0 = dx * dx + dy * dy;
}
}
function moved() {
var touches = d3.touches(target), p0, l0, p1, l1;
for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
p1 = touches[i];
if (l1 = locations0[p1.identifier]) {
if (l0) break;
p0 = p1, l0 = l1;
}
}
if (l1) {
var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);
p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
scaleTo(scale1 * scale0);
}
touchtime = null;
translateTo(p0, l0);
zoomed(event_);
}
function ended() {
if (d3.event.touches.length) {
var changed = d3.event.changedTouches;
for (var i = 0, n = changed.length; i < n; ++i) {
delete locations0[changed[i].identifier];
}
for (var identifier in locations0) {
return void relocate();
}
}
w.on(touchmove, null).on(touchend, null);
t.on(mousedown, mousedowned).on(touchstart, touchstarted);
dragRestore();
zoomended(event_);
}
}
function mousewheeled() {
var event_ = event.of(this, arguments);
if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this),
zoomstarted(event_);
mousewheelTimer = setTimeout(function() {
mousewheelTimer = null;
zoomended(event_);
}, 50);
d3_eventPreventDefault();
var point = center || d3.mouse(this);
if (!translate0) translate0 = location(point);
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
translateTo(point, translate0);
zoomed(event_);
}
function mousewheelreset() {
translate0 = null;
}
function dblclicked() {
var event_ = event.of(this, arguments), p = d3.mouse(this), l = location(p), k = Math.log(view.k) / Math.LN2;
zoomstarted(event_);
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
translateTo(p, l);
zoomed(event_);
zoomended(event_);
}
return d3.rebind(zoom, event, "on");
};
var d3_behavior_zoomInfinity = [ 0, Infinity ];
var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() {
return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);
}, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() {
return d3.event.wheelDelta;
}, "mousewheel") : (d3_behavior_zoomDelta = function() {
return -d3.event.detail;
}, "MozMousePixelScroll");
function d3_Color() {}
d3_Color.prototype.toString = function() {
return this.rgb() + "";
};
d3.hsl = function(h, s, l) {
return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
};
function d3_hsl(h, s, l) {
return new d3_Hsl(h, s, l);
}
function d3_Hsl(h, s, l) {
this.h = h;
this.s = s;
this.l = l;
}
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
d3_hslPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, this.l / k);
};
d3_hslPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, k * this.l);
};
d3_hslPrototype.rgb = function() {
return d3_hsl_rgb(this.h, this.s, this.l);
};
function d3_hsl_rgb(h, s, l) {
var m1, m2;
h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
l = l < 0 ? 0 : l > 1 ? 1 : l;
m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
m1 = 2 * l - m2;
function v(h) {
if (h > 360) h -= 360; else if (h < 0) h += 360;
if (h < 60) return m1 + (m2 - m1) * h / 60;
if (h < 180) return m2;
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
return m1;
}
function vv(h) {
return Math.round(v(h) * 255);
}
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
d3.hcl = function(h, c, l) {
return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
};
function d3_hcl(h, c, l) {
return new d3_Hcl(h, c, l);
}
function d3_Hcl(h, c, l) {
this.h = h;
this.c = c;
this.l = l;
}
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
d3_hclPrototype.brighter = function(k) {
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.darker = function(k) {
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.rgb = function() {
return d3_hcl_lab(this.h, this.c, this.l).rgb();
};
function d3_hcl_lab(h, c, l) {
if (isNaN(h)) h = 0;
if (isNaN(c)) c = 0;
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
}
d3.lab = function(l, a, b) {
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
};
function d3_lab(l, a, b) {
return new d3_Lab(l, a, b);
}
function d3_Lab(l, a, b) {
this.l = l;
this.a = a;
this.b = b;
}
var d3_lab_K = 18;
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
var d3_labPrototype = d3_Lab.prototype = new d3_Color();
d3_labPrototype.brighter = function(k) {
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.darker = function(k) {
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.rgb = function() {
return d3_lab_rgb(this.l, this.a, this.b);
};
function d3_lab_rgb(l, a, b) {
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
x = d3_lab_xyz(x) * d3_lab_X;
y = d3_lab_xyz(y) * d3_lab_Y;
z = d3_lab_xyz(z) * d3_lab_Z;
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
}
function d3_lab_hcl(l, a, b) {
return l > 0 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : d3_hcl(NaN, NaN, l);
}
function d3_lab_xyz(x) {
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
}
function d3_xyz_lab(x) {
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
}
function d3_xyz_rgb(r) {
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
}
d3.rgb = function(r, g, b) {
return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
};
function d3_rgbNumber(value) {
return d3_rgb(value >> 16, value >> 8 & 255, value & 255);
}
function d3_rgbString(value) {
return d3_rgbNumber(value) + "";
}
function d3_rgb(r, g, b) {
return new d3_Rgb(r, g, b);
}
function d3_Rgb(r, g, b) {
this.r = r;
this.g = g;
this.b = b;
}
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color();
d3_rgbPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
var r = this.r, g = this.g, b = this.b, i = 30;
if (!r && !g && !b) return d3_rgb(i, i, i);
if (r && r < i) r = i;
if (g && g < i) g = i;
if (b && b < i) b = i;
return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k)));
};
d3_rgbPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b));
};
d3_rgbPrototype.hsl = function() {
return d3_rgb_hsl(this.r, this.g, this.b);
};
d3_rgbPrototype.toString = function() {
return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
};
function d3_rgb_hex(v) {
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
}
function d3_rgb_parse(format, rgb, hsl) {
var r = 0, g = 0, b = 0, m1, m2, name;
m1 = /([a-z]+)\((.*)\)/i.exec(format);
if (m1) {
m2 = m1[2].split(",");
switch (m1[1]) {
case "hsl":
{
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
}
case "rgb":
{
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
}
}
}
if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
if (format != null && format.charAt(0) === "#") {
if (format.length === 4) {
r = format.charAt(1);
r += r;
g = format.charAt(2);
g += g;
b = format.charAt(3);
b += b;
} else if (format.length === 7) {
r = format.substring(1, 3);
g = format.substring(3, 5);
b = format.substring(5, 7);
}
r = parseInt(r, 16);
g = parseInt(g, 16);
b = parseInt(b, 16);
}
return rgb(r, g, b);
}
function d3_rgb_hsl(r, g, b) {
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
if (d) {
s = l < .5 ? d / (max + min) : d / (2 - max - min);
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
h *= 60;
} else {
h = NaN;
s = l > 0 && l < 1 ? 0 : h;
}
return d3_hsl(h, s, l);
}
function d3_rgb_lab(r, g, b) {
r = d3_rgb_xyz(r);
g = d3_rgb_xyz(g);
b = d3_rgb_xyz(b);
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
}
function d3_rgb_xyz(r) {
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
}
function d3_rgb_parseNumber(c) {
var f = parseFloat(c);
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
}
var d3_rgb_names = d3.map({
aliceblue: 15792383,
antiquewhite: 16444375,
aqua: 65535,
aquamarine: 8388564,
azure: 15794175,
beige: 16119260,
bisque: 16770244,
black: 0,
blanchedalmond: 16772045,
blue: 255,
blueviolet: 9055202,
brown: 10824234,
burlywood: 14596231,
cadetblue: 6266528,
chartreuse: 8388352,
chocolate: 13789470,
coral: 16744272,
cornflowerblue: 6591981,
cornsilk: 16775388,
crimson: 14423100,
cyan: 65535,
darkblue: 139,
darkcyan: 35723,
darkgoldenrod: 12092939,
darkgray: 11119017,
darkgreen: 25600,
darkgrey: 11119017,
darkkhaki: 12433259,
darkmagenta: 9109643,
darkolivegreen: 5597999,
darkorange: 16747520,
darkorchid: 10040012,
darkred: 9109504,
darksalmon: 15308410,
darkseagreen: 9419919,
darkslateblue: 4734347,
darkslategray: 3100495,
darkslategrey: 3100495,
darkturquoise: 52945,
darkviolet: 9699539,
deeppink: 16716947,
deepskyblue: 49151,
dimgray: 6908265,
dimgrey: 6908265,
dodgerblue: 2003199,
firebrick: 11674146,
floralwhite: 16775920,
forestgreen: 2263842,
fuchsia: 16711935,
gainsboro: 14474460,
ghostwhite: 16316671,
gold: 16766720,
goldenrod: 14329120,
gray: 8421504,
green: 32768,
greenyellow: 11403055,
grey: 8421504,
honeydew: 15794160,
hotpink: 16738740,
indianred: 13458524,
indigo: 4915330,
ivory: 16777200,
khaki: 15787660,
lavender: 15132410,
lavenderblush: 16773365,
lawngreen: 8190976,
lemonchiffon: 16775885,
lightblue: 11393254,
lightcoral: 15761536,
lightcyan: 14745599,
lightgoldenrodyellow: 16448210,
lightgray: 13882323,
lightgreen: 9498256,
lightgrey: 13882323,
lightpink: 16758465,
lightsalmon: 16752762,
lightseagreen: 2142890,
lightskyblue: 8900346,
lightslategray: 7833753,
lightslategrey: 7833753,
lightsteelblue: 11584734,
lightyellow: 16777184,
lime: 65280,
limegreen: 3329330,
linen: 16445670,
magenta: 16711935,
maroon: 8388608,
mediumaquamarine: 6737322,
mediumblue: 205,
mediumorchid: 12211667,
mediumpurple: 9662683,
mediumseagreen: 3978097,
mediumslateblue: 8087790,
mediumspringgreen: 64154,
mediumturquoise: 4772300,
mediumvioletred: 13047173,
midnightblue: 1644912,
mintcream: 16121850,
mistyrose: 16770273,
moccasin: 16770229,
navajowhite: 16768685,
navy: 128,
oldlace: 16643558,
olive: 8421376,
olivedrab: 7048739,
orange: 16753920,
orangered: 16729344,
orchid: 14315734,
palegoldenrod: 15657130,
palegreen: 10025880,
paleturquoise: 11529966,
palevioletred: 14381203,
papayawhip: 16773077,
peachpuff: 16767673,
peru: 13468991,
pink: 16761035,
plum: 14524637,
powderblue: 11591910,
purple: 8388736,
red: 16711680,
rosybrown: 12357519,
royalblue: 4286945,
saddlebrown: 9127187,
salmon: 16416882,
sandybrown: 16032864,
seagreen: 3050327,
seashell: 16774638,
sienna: 10506797,
silver: 12632256,
skyblue: 8900331,
slateblue: 6970061,
slategray: 7372944,
slategrey: 7372944,
snow: 16775930,
springgreen: 65407,
steelblue: 4620980,
tan: 13808780,
teal: 32896,
thistle: 14204888,
tomato: 16737095,
turquoise: 4251856,
violet: 15631086,
wheat: 16113331,
white: 16777215,
whitesmoke: 16119285,
yellow: 16776960,
yellowgreen: 10145074
});
d3_rgb_names.forEach(function(key, value) {
d3_rgb_names.set(key, d3_rgbNumber(value));
});
function d3_functor(v) {
return typeof v === "function" ? v : function() {
return v;
};
}
d3.functor = d3_functor;
function d3_identity(d) {
return d;
}
d3.xhr = d3_xhrType(d3_identity);
function d3_xhrType(response) {
return function(url, mimeType, callback) {
if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType,
mimeType = null;
return d3_xhr(url, mimeType, response, callback);
};
}
function d3_xhr(url, mimeType, response, callback) {
var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null;
if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest();
"onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
request.readyState > 3 && respond();
};
function respond() {
var status = request.status, result;
if (!status && request.responseText || status >= 200 && status < 300 || status === 304) {
try {
result = response.call(xhr, request);
} catch (e) {
dispatch.error.call(xhr, e);
return;
}
dispatch.load.call(xhr, result);
} else {
dispatch.error.call(xhr, request);
}
}
request.onprogress = function(event) {
var o = d3.event;
d3.event = event;
try {
dispatch.progress.call(xhr, request);
} finally {
d3.event = o;
}
};
xhr.header = function(name, value) {
name = (name + "").toLowerCase();
if (arguments.length < 2) return headers[name];
if (value == null) delete headers[name]; else headers[name] = value + "";
return xhr;
};
xhr.mimeType = function(value) {
if (!arguments.length) return mimeType;
mimeType = value == null ? null : value + "";
return xhr;
};
xhr.responseType = function(value) {
if (!arguments.length) return responseType;
responseType = value;
return xhr;
};
xhr.response = function(value) {
response = value;
return xhr;
};
[ "get", "post" ].forEach(function(method) {
xhr[method] = function() {
return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));
};
});
xhr.send = function(method, data, callback) {
if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
request.open(method, url, true);
if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
if (responseType != null) request.responseType = responseType;
if (callback != null) xhr.on("error", callback).on("load", function(request) {
callback(null, request);
});
dispatch.beforesend.call(xhr, request);
request.send(data == null ? null : data);
return xhr;
};
xhr.abort = function() {
request.abort();
return xhr;
};
d3.rebind(xhr, dispatch, "on");
return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
}
function d3_xhr_fixCallback(callback) {
return callback.length === 1 ? function(error, request) {
callback(error == null ? request : null);
} : callback;
}
d3.dsv = function(delimiter, mimeType) {
var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
function dsv(url, row, callback) {
if (arguments.length < 3) callback = row, row = null;
var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);
xhr.row = function(_) {
return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;
};
return xhr;
}
function response(request) {
return dsv.parse(request.responseText);
}
function typedResponse(f) {
return function(request) {
return dsv.parse(request.responseText, f);
};
}
dsv.parse = function(text, f) {
var o;
return dsv.parseRows(text, function(row, i) {
if (o) return o(row, i - 1);
var a = new Function("d", "return {" + row.map(function(name, i) {
return JSON.stringify(name) + ": d[" + i + "]";
}).join(",") + "}");
o = f ? function(row, i) {
return f(a(row), i);
} : a;
});
};
dsv.parseRows = function(text, f) {
var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;
function token() {
if (I >= N) return EOF;
if (eol) return eol = false, EOL;
var j = I;
if (text.charCodeAt(j) === 34) {
var i = j;
while (i++ < N) {
if (text.charCodeAt(i) === 34) {
if (text.charCodeAt(i + 1) !== 34) break;
++i;
}
}
I = i + 2;
var c = text.charCodeAt(i + 1);
if (c === 13) {
eol = true;
if (text.charCodeAt(i + 2) === 10) ++I;
} else if (c === 10) {
eol = true;
}
return text.substring(j + 1, i).replace(/""/g, '"');
}
while (I < N) {
var c = text.charCodeAt(I++), k = 1;
if (c === 10) eol = true; else if (c === 13) {
eol = true;
if (text.charCodeAt(I) === 10) ++I, ++k;
} else if (c !== delimiterCode) continue;
return text.substring(j, I - k);
}
return text.substring(j);
}
while ((t = token()) !== EOF) {
var a = [];
while (t !== EOL && t !== EOF) {
a.push(t);
t = token();
}
if (f && !(a = f(a, n++))) continue;
rows.push(a);
}
return rows;
};
dsv.format = function(rows) {
if (Array.isArray(rows[0])) return dsv.formatRows(rows);
var fieldSet = new d3_Set(), fields = [];
rows.forEach(function(row) {
for (var field in row) {
if (!fieldSet.has(field)) {
fields.push(fieldSet.add(field));
}
}
});
return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {
return fields.map(function(field) {
return formatValue(row[field]);
}).join(delimiter);
})).join("\n");
};
dsv.formatRows = function(rows) {
return rows.map(formatRow).join("\n");
};
function formatRow(row) {
return row.map(formatValue).join(delimiter);
}
function formatValue(text) {
return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
}
return dsv;
};
d3.csv = d3.dsv(",", "text/csv");
d3.tsv = d3.dsv(" ", "text/tab-separated-values");
var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) {
setTimeout(callback, 17);
};
d3.timer = function(callback, delay, then) {
var n = arguments.length;
if (n < 2) delay = 0;
if (n < 3) then = Date.now();
var time = then + delay, timer = {
c: callback,
t: time,
f: false,
n: null
};
if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;
d3_timer_queueTail = timer;
if (!d3_timer_interval) {
d3_timer_timeout = clearTimeout(d3_timer_timeout);
d3_timer_interval = 1;
d3_timer_frame(d3_timer_step);
}
};
function d3_timer_step() {
var now = d3_timer_mark(), delay = d3_timer_sweep() - now;
if (delay > 24) {
if (isFinite(delay)) {
clearTimeout(d3_timer_timeout);
d3_timer_timeout = setTimeout(d3_timer_step, delay);
}
d3_timer_interval = 0;
} else {
d3_timer_interval = 1;
d3_timer_frame(d3_timer_step);
}
}
d3.timer.flush = function() {
d3_timer_mark();
d3_timer_sweep();
};
function d3_timer_mark() {
var now = Date.now();
d3_timer_active = d3_timer_queueHead;
while (d3_timer_active) {
if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
d3_timer_active = d3_timer_active.n;
}
return now;
}
function d3_timer_sweep() {
var t0, t1 = d3_timer_queueHead, time = Infinity;
while (t1) {
if (t1.f) {
t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
} else {
if (t1.t < time) time = t1.t;
t1 = (t0 = t1).n;
}
}
d3_timer_queueTail = t0;
return time;
}
var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ], d3_format_currencySymbol = "$";
var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
d3.formatPrefix = function(value, precision) {
var i = 0;
if (value) {
if (value < 0) value *= -1;
if (precision) value = d3.round(value, d3_format_precision(value, precision));
i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3));
}
return d3_formatPrefixes[8 + i / 3];
};
function d3_formatPrefix(d, i) {
var k = Math.pow(10, abs(8 - i) * 3);
return {
scale: i > 8 ? function(d) {
return d / k;
} : function(d) {
return d * k;
},
symbol: d
};
}
d3.round = function(x, n) {
return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
};
d3.format = function(specifier) {
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false;
if (precision) precision = +precision.substring(1);
if (zfill || fill === "0" && align === "=") {
zfill = fill = "0";
align = "=";
if (comma) width -= Math.floor((width - 1) / 4);
}
switch (type) {
case "n":
comma = true;
type = "g";
break;
case "%":
scale = 100;
suffix = "%";
type = "f";
break;
case "p":
scale = 100;
suffix = "%";
type = "r";
break;
case "b":
case "o":
case "x":
case "X":
if (symbol === "#") symbol = "0" + type.toLowerCase();
case "c":
case "d":
integer = true;
precision = 0;
break;
case "s":
scale = -1;
type = "r";
break;
}
if (symbol === "#") symbol = ""; else if (symbol === "$") symbol = d3_format_currencySymbol;
if (type == "r" && !precision) type = "g";
if (precision != null) {
if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision));
}
type = d3_format_types.get(type) || d3_format_typeDefault;
var zcomma = zfill && comma;
return function(value) {
if (integer && value % 1) return "";
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
if (scale < 0) {
var prefix = d3.formatPrefix(value, precision);
value = prefix.scale(value);
suffix = prefix.symbol;
} else {
value *= scale;
}
value = type(value, precision);
var i = value.lastIndexOf("."), before = i < 0 ? value : value.substring(0, i), after = i < 0 ? "" : d3_format_decimalPoint + value.substring(i + 1);
if (!zfill && comma) before = d3_format_group(before);
var length = symbol.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
if (zcomma) before = d3_format_group(padding + before);
negative += symbol;
value = before + after;
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix;
};
};
var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i;
var d3_format_types = d3.map({
b: function(x) {
return x.toString(2);
},
c: function(x) {
return String.fromCharCode(x);
},
o: function(x) {
return x.toString(8);
},
x: function(x) {
return x.toString(16);
},
X: function(x) {
return x.toString(16).toUpperCase();
},
g: function(x, p) {
return x.toPrecision(p);
},
e: function(x, p) {
return x.toExponential(p);
},
f: function(x, p) {
return x.toFixed(p);
},
r: function(x, p) {
return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));
}
});
function d3_format_precision(x, p) {
return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
}
function d3_format_typeDefault(x) {
return x + "";
}
var d3_format_group = d3_identity;
if (d3_format_grouping) {
var d3_format_groupingLength = d3_format_grouping.length;
d3_format_group = function(value) {
var i = value.length, t = [], j = 0, g = d3_format_grouping[0];
while (i > 0 && g > 0) {
t.push(value.substring(i -= g, i + g));
g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength];
}
return t.reverse().join(d3_format_thousandsSeparator);
};
}
d3.geo = {};
function d3_adder() {}
d3_adder.prototype = {
s: 0,
t: 0,
add: function(y) {
d3_adderSum(y, this.t, d3_adderTemp);
d3_adderSum(d3_adderTemp.s, this.s, this);
if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;
},
reset: function() {
this.s = this.t = 0;
},
valueOf: function() {
return this.s;
}
};
var d3_adderTemp = new d3_adder();
function d3_adderSum(a, b, o) {
var x = o.s = a + b, bv = x - a, av = x - bv;
o.t = a - av + (b - bv);
}
d3.geo.stream = function(object, listener) {
if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
d3_geo_streamObjectType[object.type](object, listener);
} else {
d3_geo_streamGeometry(object, listener);
}
};
function d3_geo_streamGeometry(geometry, listener) {
if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
d3_geo_streamGeometryType[geometry.type](geometry, listener);
}
}
var d3_geo_streamObjectType = {
Feature: function(feature, listener) {
d3_geo_streamGeometry(feature.geometry, listener);
},
FeatureCollection: function(object, listener) {
var features = object.features, i = -1, n = features.length;
while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
}
};
var d3_geo_streamGeometryType = {
Sphere: function(object, listener) {
listener.sphere();
},
Point: function(object, listener) {
object = object.coordinates;
listener.point(object[0], object[1], object[2]);
},
MultiPoint: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
},
LineString: function(object, listener) {
d3_geo_streamLine(object.coordinates, listener, 0);
},
MultiLineString: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
},
Polygon: function(object, listener) {
d3_geo_streamPolygon(object.coordinates, listener);
},
MultiPolygon: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
},
GeometryCollection: function(object, listener) {
var geometries = object.geometries, i = -1, n = geometries.length;
while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
}
};
function d3_geo_streamLine(coordinates, listener, closed) {
var i = -1, n = coordinates.length - closed, coordinate;
listener.lineStart();
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
listener.lineEnd();
}
function d3_geo_streamPolygon(coordinates, listener) {
var i = -1, n = coordinates.length;
listener.polygonStart();
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
listener.polygonEnd();
}
d3.geo.area = function(object) {
d3_geo_areaSum = 0;
d3.geo.stream(object, d3_geo_area);
return d3_geo_areaSum;
};
var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();
var d3_geo_area = {
sphere: function() {
d3_geo_areaSum += 4 * π;
},
point: d3_noop,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
d3_geo_areaRingSum.reset();
d3_geo_area.lineStart = d3_geo_areaRingStart;
},
polygonEnd: function() {
var area = 2 * d3_geo_areaRingSum;
d3_geo_areaSum += area < 0 ? 4 * π + area : area;
d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
}
};
function d3_geo_areaRingStart() {
var λ00, φ00, λ0, cosφ0, sinφ0;
d3_geo_area.point = function(λ, φ) {
d3_geo_area.point = nextPoint;
λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4),
sinφ0 = Math.sin(φ);
};
function nextPoint(λ, φ) {
λ *= d3_radians;
φ = φ * d3_radians / 2 + π / 4;
var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ);
d3_geo_areaRingSum.add(Math.atan2(v, u));
λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
}
d3_geo_area.lineEnd = function() {
nextPoint(λ00, φ00);
};
}
function d3_geo_cartesian(spherical) {
var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);
return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];
}
function d3_geo_cartesianDot(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
function d3_geo_cartesianCross(a, b) {
return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];
}
function d3_geo_cartesianAdd(a, b) {
a[0] += b[0];
a[1] += b[1];
a[2] += b[2];
}
function d3_geo_cartesianScale(vector, k) {
return [ vector[0] * k, vector[1] * k, vector[2] * k ];
}
function d3_geo_cartesianNormalize(d) {
var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
d[0] /= l;
d[1] /= l;
d[2] /= l;
}
function d3_geo_spherical(cartesian) {
return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];
}
function d3_geo_sphericalEqual(a, b) {
return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
}
d3.geo.bounds = function() {
var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;
var bound = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
bound.point = ringPoint;
bound.lineStart = ringStart;
bound.lineEnd = ringEnd;
dλSum = 0;
d3_geo_area.polygonStart();
},
polygonEnd: function() {
d3_geo_area.polygonEnd();
bound.point = point;
bound.lineStart = lineStart;
bound.lineEnd = lineEnd;
if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;
range[0] = λ0, range[1] = λ1;
}
};
function point(λ, φ) {
ranges.push(range = [ λ0 = λ, λ1 = λ ]);
if (φ < φ0) φ0 = φ;
if (φ > φ1) φ1 = φ;
}
function linePoint(λ, φ) {
var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);
if (p0) {
var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);
d3_geo_cartesianNormalize(inflection);
inflection = d3_geo_spherical(inflection);
var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;
if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
var φi = inflection[1] * d3_degrees;
if (φi > φ1) φ1 = φi;
} else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
var φi = -inflection[1] * d3_degrees;
if (φi < φ0) φ0 = φi;
} else {
if (φ < φ0) φ0 = φ;
if (φ > φ1) φ1 = φ;
}
if (antimeridian) {
if (λ < λ_) {
if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
} else {
if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
}
} else {
if (λ1 >= λ0) {
if (λ < λ0) λ0 = λ;
if (λ > λ1) λ1 = λ;
} else {
if (λ > λ_) {
if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
} else {
if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
}
}
}
} else {
point(λ, φ);
}
p0 = p, λ_ = λ;
}
function lineStart() {
bound.point = linePoint;
}
function lineEnd() {
range[0] = λ0, range[1] = λ1;
bound.point = point;
p0 = null;
}
function ringPoint(λ, φ) {
if (p0) {
var dλ = λ - λ_;
dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;
} else λ__ = λ, φ__ = φ;
d3_geo_area.point(λ, φ);
linePoint(λ, φ);
}
function ringStart() {
d3_geo_area.lineStart();
}
function ringEnd() {
ringPoint(λ__, φ__);
d3_geo_area.lineEnd();
if (abs(dλSum) > ε) λ0 = -(λ1 = 180);
range[0] = λ0, range[1] = λ1;
p0 = null;
}
function angle(λ0, λ1) {
return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;
}
function compareRanges(a, b) {
return a[0] - b[0];
}
function withinRange(x, range) {
return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
}
return function(feature) {
φ1 = λ1 = -(λ0 = φ0 = Infinity);
ranges = [];
d3.geo.stream(feature, bound);
var n = ranges.length;
if (n) {
ranges.sort(compareRanges);
for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {
b = ranges[i];
if (withinRange(b[0], a) || withinRange(b[1], a)) {
if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
} else {
merged.push(a = b);
}
}
var best = -Infinity, dλ;
for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
b = merged[i];
if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
}
}
ranges = range = null;
return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];
};
}();
d3.geo.centroid = function(object) {
d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
d3.geo.stream(object, d3_geo_centroid);
var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;
if (m < ε2) {
x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;
m = x * x + y * y + z * z;
if (m < ε2) return [ NaN, NaN ];
}
return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];
};
var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;
var d3_geo_centroid = {
sphere: d3_noop,
point: d3_geo_centroidPoint,
lineStart: d3_geo_centroidLineStart,
lineEnd: d3_geo_centroidLineEnd,
polygonStart: function() {
d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
},
polygonEnd: function() {
d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
}
};
function d3_geo_centroidPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
}
function d3_geo_centroidPointXYZ(x, y, z) {
++d3_geo_centroidW0;
d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
}
function d3_geo_centroidLineStart() {
var x0, y0, z0;
d3_geo_centroid.point = function(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
x0 = cosφ * Math.cos(λ);
y0 = cosφ * Math.sin(λ);
z0 = Math.sin(φ);
d3_geo_centroid.point = nextPoint;
d3_geo_centroidPointXYZ(x0, y0, z0);
};
function nextPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
d3_geo_centroidW1 += w;
d3_geo_centroidX1 += w * (x0 + (x0 = x));
d3_geo_centroidY1 += w * (y0 + (y0 = y));
d3_geo_centroidZ1 += w * (z0 + (z0 = z));
d3_geo_centroidPointXYZ(x0, y0, z0);
}
}
function d3_geo_centroidLineEnd() {
d3_geo_centroid.point = d3_geo_centroidPoint;
}
function d3_geo_centroidRingStart() {
var λ00, φ00, x0, y0, z0;
d3_geo_centroid.point = function(λ, φ) {
λ00 = λ, φ00 = φ;
d3_geo_centroid.point = nextPoint;
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
x0 = cosφ * Math.cos(λ);
y0 = cosφ * Math.sin(λ);
z0 = Math.sin(φ);
d3_geo_centroidPointXYZ(x0, y0, z0);
};
d3_geo_centroid.lineEnd = function() {
nextPoint(λ00, φ00);
d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
d3_geo_centroid.point = d3_geo_centroidPoint;
};
function nextPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);
d3_geo_centroidX2 += v * cx;
d3_geo_centroidY2 += v * cy;
d3_geo_centroidZ2 += v * cz;
d3_geo_centroidW1 += w;
d3_geo_centroidX1 += w * (x0 + (x0 = x));
d3_geo_centroidY1 += w * (y0 + (y0 = y));
d3_geo_centroidZ1 += w * (z0 + (z0 = z));
d3_geo_centroidPointXYZ(x0, y0, z0);
}
}
function d3_true() {
return true;
}
function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
var subject = [], clip = [];
segments.forEach(function(segment) {
if ((n = segment.length - 1) <= 0) return;
var n, p0 = segment[0], p1 = segment[n];
if (d3_geo_sphericalEqual(p0, p1)) {
listener.lineStart();
for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
listener.lineEnd();
return;
}
var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
a.o = b;
subject.push(a);
clip.push(b);
a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
a.o = b;
subject.push(a);
clip.push(b);
});
clip.sort(compare);
d3_geo_clipPolygonLinkCircular(subject);
d3_geo_clipPolygonLinkCircular(clip);
if (!subject.length) return;
for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
clip[i].e = entry = !entry;
}
var start = subject[0], points, point;
while (1) {
var current = start, isSubject = true;
while (current.v) if ((current = current.n) === start) return;
points = current.z;
listener.lineStart();
do {
current.v = current.o.v = true;
if (current.e) {
if (isSubject) {
for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
} else {
interpolate(current.x, current.n.x, 1, listener);
}
current = current.n;
} else {
if (isSubject) {
points = current.p.z;
for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
} else {
interpolate(current.x, current.p.x, -1, listener);
}
current = current.p;
}
current = current.o;
points = current.z;
isSubject = !isSubject;
} while (!current.v);
listener.lineEnd();
}
}
function d3_geo_clipPolygonLinkCircular(array) {
if (!(n = array.length)) return;
var n, i = 0, a = array[0], b;
while (++i < n) {
a.n = b = array[i];
b.p = a;
a = b;
}
a.n = b = array[0];
b.p = a;
}
function d3_geo_clipPolygonIntersection(point, points, other, entry) {
this.x = point;
this.z = points;
this.o = other;
this.e = entry;
this.v = false;
this.n = this.p = null;
}
function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
return function(rotate, listener) {
var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
var clip = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
clip.point = pointRing;
clip.lineStart = ringStart;
clip.lineEnd = ringEnd;
segments = [];
polygon = [];
listener.polygonStart();
},
polygonEnd: function() {
clip.point = point;
clip.lineStart = lineStart;
clip.lineEnd = lineEnd;
segments = d3.merge(segments);
var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
if (segments.length) {
d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
} else if (clipStartInside) {
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
listener.polygonEnd();
segments = polygon = null;
},
sphere: function() {
listener.polygonStart();
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
listener.polygonEnd();
}
};
function point(λ, φ) {
var point = rotate(λ, φ);
if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
}
function pointLine(λ, φ) {
var point = rotate(λ, φ);
line.point(point[0], point[1]);
}
function lineStart() {
clip.point = pointLine;
line.lineStart();
}
function lineEnd() {
clip.point = point;
line.lineEnd();
}
var segments;
var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygon, ring;
function pointRing(λ, φ) {
ring.push([ λ, φ ]);
var point = rotate(λ, φ);
ringListener.point(point[0], point[1]);
}
function ringStart() {
ringListener.lineStart();
ring = [];
}
function ringEnd() {
pointRing(ring[0][0], ring[0][1]);
ringListener.lineEnd();
var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;
ring.pop();
polygon.push(ring);
ring = null;
if (!n) return;
if (clean & 1) {
segment = ringSegments[0];
var n = segment.length - 1, i = -1, point;
listener.lineStart();
while (++i < n) listener.point((point = segment[i])[0], point[1]);
listener.lineEnd();
return;
}
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
}
return clip;
};
}
function d3_geo_clipSegmentLength1(segment) {
return segment.length > 1;
}
function d3_geo_clipBufferListener() {
var lines = [], line;
return {
lineStart: function() {
lines.push(line = []);
},
point: function(λ, φ) {
line.push([ λ, φ ]);
},
lineEnd: d3_noop,
buffer: function() {
var buffer = lines;
lines = [];
line = null;
return buffer;
},
rejoin: function() {
if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
}
};
}
function d3_geo_clipSort(a, b) {
return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
}
function d3_geo_pointInPolygon(point, polygon) {
var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;
d3_geo_areaRingSum.reset();
for (var i = 0, n = polygon.length; i < n; ++i) {
var ring = polygon[i], m = ring.length;
if (!m) continue;
var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;
while (true) {
if (j === m) j = 0;
point = ring[j];
var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, antimeridian = abs(dλ) > π, k = sinφ0 * sinφ;
d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k * Math.cos(dλ)));
polarAngle += antimeridian ? dλ + (dλ >= 0 ? τ : -τ) : dλ;
if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
d3_geo_cartesianNormalize(arc);
var intersection = d3_geo_cartesianCross(meridianNormal, arc);
d3_geo_cartesianNormalize(intersection);
var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
winding += antimeridian ^ dλ >= 0 ? 1 : -1;
}
}
if (!j++) break;
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
}
}
return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1;
}
var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);
function d3_geo_clipAntimeridianLine(listener) {
var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
return {
lineStart: function() {
listener.lineStart();
clean = 1;
},
point: function(λ1, φ1) {
var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);
if (abs(dλ - π) < ε) {
listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);
listener.point(sλ0, φ0);
listener.lineEnd();
listener.lineStart();
listener.point(sλ1, φ0);
listener.point(λ1, φ0);
clean = 0;
} else if (sλ0 !== sλ1 && dλ >= π) {
if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
listener.point(sλ0, φ0);
listener.lineEnd();
listener.lineStart();
listener.point(sλ1, φ0);
clean = 0;
}
listener.point(λ0 = λ1, φ0 = φ1);
sλ0 = sλ1;
},
lineEnd: function() {
listener.lineEnd();
λ0 = φ0 = NaN;
},
clean: function() {
return 2 - clean;
}
};
}
function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
}
function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
var φ;
if (from == null) {
φ = direction * halfπ;
listener.point(-π, φ);
listener.point(0, φ);
listener.point(π, φ);
listener.point(π, 0);
listener.point(π, -φ);
listener.point(0, -φ);
listener.point(-π, -φ);
listener.point(-π, 0);
listener.point(-π, φ);
} else if (abs(from[0] - to[0]) > ε) {
var s = from[0] < to[0] ? π : -π;
φ = direction * s / 2;
listener.point(-s, φ);
listener.point(0, φ);
listener.point(s, φ);
} else {
listener.point(to[0], to[1]);
}
}
function d3_geo_clipCircle(radius) {
var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);
function visible(λ, φ) {
return Math.cos(λ) * Math.cos(φ) > cr;
}
function clipLine(listener) {
var point0, c0, v0, v00, clean;
return {
lineStart: function() {
v00 = v0 = false;
clean = 1;
},
point: function(λ, φ) {
var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
if (!point0 && (v00 = v0 = v)) listener.lineStart();
if (v !== v0) {
point2 = intersect(point0, point1);
if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
point1[0] += ε;
point1[1] += ε;
v = visible(point1[0], point1[1]);
}
}
if (v !== v0) {
clean = 0;
if (v) {
listener.lineStart();
point2 = intersect(point1, point0);
listener.point(point2[0], point2[1]);
} else {
point2 = intersect(point0, point1);
listener.point(point2[0], point2[1]);
listener.lineEnd();
}
point0 = point2;
} else if (notHemisphere && point0 && smallRadius ^ v) {
var t;
if (!(c & c0) && (t = intersect(point1, point0, true))) {
clean = 0;
if (smallRadius) {
listener.lineStart();
listener.point(t[0][0], t[0][1]);
listener.point(t[1][0], t[1][1]);
listener.lineEnd();
} else {
listener.point(t[1][0], t[1][1]);
listener.lineEnd();
listener.lineStart();
listener.point(t[0][0], t[0][1]);
}
}
}
if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
listener.point(point1[0], point1[1]);
}
point0 = point1, v0 = v, c0 = c;
},
lineEnd: function() {
if (v0) listener.lineEnd();
point0 = null;
},
clean: function() {
return clean | (v00 && v0) << 1;
}
};
}
function intersect(a, b, two) {
var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);
var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;
if (!determinant) return !two && a;
var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);
d3_geo_cartesianAdd(A, B);
var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
if (t2 < 0) return;
var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);
d3_geo_cartesianAdd(q, A);
q = d3_geo_spherical(q);
if (!two) return q;
var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;
if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;
if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
d3_geo_cartesianAdd(q1, A);
return [ q, d3_geo_spherical(q1) ];
}
}
function code(λ, φ) {
var r = smallRadius ? radius : π - radius, code = 0;
if (λ < -r) code |= 1; else if (λ > r) code |= 2;
if (φ < -r) code |= 4; else if (φ > r) code |= 8;
return code;
}
}
function d3_geom_clipLine(x0, y0, x1, y1) {
return function(line) {
var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;
r = x0 - ax;
if (!dx && r > 0) return;
r /= dx;
if (dx < 0) {
if (r < t0) return;
if (r < t1) t1 = r;
} else if (dx > 0) {
if (r > t1) return;
if (r > t0) t0 = r;
}
r = x1 - ax;
if (!dx && r < 0) return;
r /= dx;
if (dx < 0) {
if (r > t1) return;
if (r > t0) t0 = r;
} else if (dx > 0) {
if (r < t0) return;
if (r < t1) t1 = r;
}
r = y0 - ay;
if (!dy && r > 0) return;
r /= dy;
if (dy < 0) {
if (r < t0) return;
if (r < t1) t1 = r;
} else if (dy > 0) {
if (r > t1) return;
if (r > t0) t0 = r;
}
r = y1 - ay;
if (!dy && r < 0) return;
r /= dy;
if (dy < 0) {
if (r > t1) return;
if (r > t0) t0 = r;
} else if (dy > 0) {
if (r < t0) return;
if (r < t1) t1 = r;
}
if (t0 > 0) line.a = {
x: ax + t0 * dx,
y: ay + t0 * dy
};
if (t1 < 1) line.b = {
x: ax + t1 * dx,
y: ay + t1 * dy
};
return line;
};
}
var d3_geo_clipExtentMAX = 1e9;
d3.geo.clipExtent = function() {
var x0, y0, x1, y1, stream, clip, clipExtent = {
stream: function(output) {
if (stream) stream.valid = false;
stream = clip(output);
stream.valid = true;
return stream;
},
extent: function(_) {
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
if (stream) stream.valid = false, stream = null;
return clipExtent;
}
};
return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);
};
function d3_geo_clipExtent(x0, y0, x1, y1) {
return function(listener) {
var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;
var clip = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
listener = bufferListener;
segments = [];
polygon = [];
clean = true;
},
polygonEnd: function() {
listener = listener_;
segments = d3.merge(segments);
var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;
if (inside || visible) {
listener.polygonStart();
if (inside) {
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
if (visible) {
d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);
}
listener.polygonEnd();
}
segments = polygon = ring = null;
}
};
function insidePolygon(p) {
var wn = 0, n = polygon.length, y = p[1];
for (var i = 0; i < n; ++i) {
for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
b = v[j];
if (a[1] <= y) {
if (b[1] > y && isLeft(a, b, p) > 0) ++wn;
} else {
if (b[1] <= y && isLeft(a, b, p) < 0) --wn;
}
a = b;
}
}
return wn !== 0;
}
function isLeft(a, b, c) {
return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]);
}
function interpolate(from, to, direction, listener) {
var a = 0, a1 = 0;
if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {
do {
listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
} while ((a = (a + direction + 4) % 4) !== a1);
} else {
listener.point(to[0], to[1]);
}
}
function pointVisible(x, y) {
return x0 <= x && x <= x1 && y0 <= y && y <= y1;
}
function point(x, y) {
if (pointVisible(x, y)) listener.point(x, y);
}
var x__, y__, v__, x_, y_, v_, first, clean;
function lineStart() {
clip.point = linePoint;
if (polygon) polygon.push(ring = []);
first = true;
v_ = false;
x_ = y_ = NaN;
}
function lineEnd() {
if (segments) {
linePoint(x__, y__);
if (v__ && v_) bufferListener.rejoin();
segments.push(bufferListener.buffer());
}
clip.point = point;
if (v_) listener.lineEnd();
}
function linePoint(x, y) {
x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
var v = pointVisible(x, y);
if (polygon) ring.push([ x, y ]);
if (first) {
x__ = x, y__ = y, v__ = v;
first = false;
if (v) {
listener.lineStart();
listener.point(x, y);
}
} else {
if (v && v_) listener.point(x, y); else {
var l = {
a: {
x: x_,
y: y_
},
b: {
x: x,
y: y
}
};
if (clipLine(l)) {
if (!v_) {
listener.lineStart();
listener.point(l.a.x, l.a.y);
}
listener.point(l.b.x, l.b.y);
if (!v) listener.lineEnd();
clean = false;
} else if (v) {
listener.lineStart();
listener.point(x, y);
clean = false;
}
}
}
x_ = x, y_ = y, v_ = v;
}
return clip;
};
function corner(p, direction) {
return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;
}
function compare(a, b) {
return comparePoints(a.x, b.x);
}
function comparePoints(a, b) {
var ca = corner(a, 1), cb = corner(b, 1);
return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];
}
}
function d3_geo_compose(a, b) {
function compose(x, y) {
return x = a(x, y), b(x[0], x[1]);
}
if (a.invert && b.invert) compose.invert = function(x, y) {
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
};
return compose;
}
function d3_geo_conic(projectAt) {
var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);
p.parallels = function(_) {
if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];
return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
};
return p;
}
function d3_geo_conicEqualArea(φ0, φ1) {
var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;
function forward(λ, φ) {
var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
}
forward.invert = function(x, y) {
var ρ0_y = ρ0 - y;
return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];
};
return forward;
}
(d3.geo.conicEqualArea = function() {
return d3_geo_conic(d3_geo_conicEqualArea);
}).raw = d3_geo_conicEqualArea;
d3.geo.albers = function() {
return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);
};
d3.geo.albersUsa = function() {
var lower48 = d3.geo.albers();
var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);
var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);
var point, pointStream = {
point: function(x, y) {
point = [ x, y ];
}
}, lower48Point, alaskaPoint, hawaiiPoint;
function albersUsa(coordinates) {
var x = coordinates[0], y = coordinates[1];
point = null;
(lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);
return point;
}
albersUsa.invert = function(coordinates) {
var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;
return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);
};
albersUsa.stream = function(stream) {
var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);
return {
point: function(x, y) {
lower48Stream.point(x, y);
alaskaStream.point(x, y);
hawaiiStream.point(x, y);
},
sphere: function() {
lower48Stream.sphere();
alaskaStream.sphere();
hawaiiStream.sphere();
},
lineStart: function() {
lower48Stream.lineStart();
alaskaStream.lineStart();
hawaiiStream.lineStart();
},
lineEnd: function() {
lower48Stream.lineEnd();
alaskaStream.lineEnd();
hawaiiStream.lineEnd();
},
polygonStart: function() {
lower48Stream.polygonStart();
alaskaStream.polygonStart();
hawaiiStream.polygonStart();
},
polygonEnd: function() {
lower48Stream.polygonEnd();
alaskaStream.polygonEnd();
hawaiiStream.polygonEnd();
}
};
};
albersUsa.precision = function(_) {
if (!arguments.length) return lower48.precision();
lower48.precision(_);
alaska.precision(_);
hawaii.precision(_);
return albersUsa;
};
albersUsa.scale = function(_) {
if (!arguments.length) return lower48.scale();
lower48.scale(_);
alaska.scale(_ * .35);
hawaii.scale(_);
return albersUsa.translate(lower48.translate());
};
albersUsa.translate = function(_) {
if (!arguments.length) return lower48.translate();
var k = lower48.scale(), x = +_[0], y = +_[1];
lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;
alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;
hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;
return albersUsa;
};
return albersUsa.scale(1070);
};
var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
point: d3_noop,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
d3_geo_pathAreaPolygon = 0;
d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
},
polygonEnd: function() {
d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);
}
};
function d3_geo_pathAreaRingStart() {
var x00, y00, x0, y0;
d3_geo_pathArea.point = function(x, y) {
d3_geo_pathArea.point = nextPoint;
x00 = x0 = x, y00 = y0 = y;
};
function nextPoint(x, y) {
d3_geo_pathAreaPolygon += y0 * x - x0 * y;
x0 = x, y0 = y;
}
d3_geo_pathArea.lineEnd = function() {
nextPoint(x00, y00);
};
}
var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;
var d3_geo_pathBounds = {
point: d3_geo_pathBoundsPoint,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: d3_noop,
polygonEnd: d3_noop
};
function d3_geo_pathBoundsPoint(x, y) {
if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
}
function d3_geo_pathBuffer() {
var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];
var stream = {
point: point,
lineStart: function() {
stream.point = pointLineStart;
},
lineEnd: lineEnd,
polygonStart: function() {
stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
stream.lineEnd = lineEnd;
stream.point = point;
},
pointRadius: function(_) {
pointCircle = d3_geo_pathBufferCircle(_);
return stream;
},
result: function() {
if (buffer.length) {
var result = buffer.join("");
buffer = [];
return result;
}
}
};
function point(x, y) {
buffer.push("M", x, ",", y, pointCircle);
}
function pointLineStart(x, y) {
buffer.push("M", x, ",", y);
stream.point = pointLine;
}
function pointLine(x, y) {
buffer.push("L", x, ",", y);
}
function lineEnd() {
stream.point = point;
}
function lineEndPolygon() {
buffer.push("Z");
}
return stream;
}
function d3_geo_pathBufferCircle(radius) {
return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z";
}
var d3_geo_pathCentroid = {
point: d3_geo_pathCentroidPoint,
lineStart: d3_geo_pathCentroidLineStart,
lineEnd: d3_geo_pathCentroidLineEnd,
polygonStart: function() {
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
},
polygonEnd: function() {
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
}
};
function d3_geo_pathCentroidPoint(x, y) {
d3_geo_centroidX0 += x;
d3_geo_centroidY0 += y;
++d3_geo_centroidZ0;
}
function d3_geo_pathCentroidLineStart() {
var x0, y0;
d3_geo_pathCentroid.point = function(x, y) {
d3_geo_pathCentroid.point = nextPoint;
d3_geo_pathCentroidPoint(x0 = x, y0 = y);
};
function nextPoint(x, y) {
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
d3_geo_centroidX1 += z * (x0 + x) / 2;
d3_geo_centroidY1 += z * (y0 + y) / 2;
d3_geo_centroidZ1 += z;
d3_geo_pathCentroidPoint(x0 = x, y0 = y);
}
}
function d3_geo_pathCentroidLineEnd() {
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
}
function d3_geo_pathCentroidRingStart() {
var x00, y00, x0, y0;
d3_geo_pathCentroid.point = function(x, y) {
d3_geo_pathCentroid.point = nextPoint;
d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
};
function nextPoint(x, y) {
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
d3_geo_centroidX1 += z * (x0 + x) / 2;
d3_geo_centroidY1 += z * (y0 + y) / 2;
d3_geo_centroidZ1 += z;
z = y0 * x - x0 * y;
d3_geo_centroidX2 += z * (x0 + x);
d3_geo_centroidY2 += z * (y0 + y);
d3_geo_centroidZ2 += z * 3;
d3_geo_pathCentroidPoint(x0 = x, y0 = y);
}
d3_geo_pathCentroid.lineEnd = function() {
nextPoint(x00, y00);
};
}
function d3_geo_pathContext(context) {
var pointRadius = 4.5;
var stream = {
point: point,
lineStart: function() {
stream.point = pointLineStart;
},
lineEnd: lineEnd,
polygonStart: function() {
stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
stream.lineEnd = lineEnd;
stream.point = point;
},
pointRadius: function(_) {
pointRadius = _;
return stream;
},
result: d3_noop
};
function point(x, y) {
context.moveTo(x, y);
context.arc(x, y, pointRadius, 0, τ);
}
function pointLineStart(x, y) {
context.moveTo(x, y);
stream.point = pointLine;
}
function pointLine(x, y) {
context.lineTo(x, y);
}
function lineEnd() {
stream.point = point;
}
function lineEndPolygon() {
context.closePath();
}
return stream;
}
function d3_geo_resample(project) {
var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;
function resample(stream) {
return (maxDepth ? resampleRecursive : resampleNone)(stream);
}
function resampleNone(stream) {
return d3_geo_transformPoint(stream, function(x, y) {
x = project(x, y);
stream.point(x[0], x[1]);
});
}
function resampleRecursive(stream) {
var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;
var resample = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
stream.polygonStart();
resample.lineStart = ringStart;
},
polygonEnd: function() {
stream.polygonEnd();
resample.lineStart = lineStart;
}
};
function point(x, y) {
x = project(x, y);
stream.point(x[0], x[1]);
}
function lineStart() {
x0 = NaN;
resample.point = linePoint;
stream.lineStart();
}
function linePoint(λ, φ) {
var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
stream.point(x0, y0);
}
function lineEnd() {
resample.point = point;
stream.lineEnd();
}
function ringStart() {
lineStart();
resample.point = ringPoint;
resample.lineEnd = ringEnd;
}
function ringPoint(λ, φ) {
linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
resample.point = linePoint;
}
function ringEnd() {
resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
resample.lineEnd = lineEnd;
lineEnd();
}
return resample;
}
function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
if (d2 > 4 * δ2 && depth--) {
var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;
if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {
resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
stream.point(x2, y2);
resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
}
}
}
resample.precision = function(_) {
if (!arguments.length) return Math.sqrt(δ2);
maxDepth = (δ2 = _ * _) > 0 && 16;
return resample;
};
return resample;
}
d3.geo.path = function() {
var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;
function path(object) {
if (object) {
if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);
d3.geo.stream(object, cacheStream);
}
return contextStream.result();
}
path.area = function(object) {
d3_geo_pathAreaSum = 0;
d3.geo.stream(object, projectStream(d3_geo_pathArea));
return d3_geo_pathAreaSum;
};
path.centroid = function(object) {
d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];
};
path.bounds = function(object) {
d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);
d3.geo.stream(object, projectStream(d3_geo_pathBounds));
return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];
};
path.projection = function(_) {
if (!arguments.length) return projection;
projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
return reset();
};
path.context = function(_) {
if (!arguments.length) return context;
contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);
if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
return reset();
};
path.pointRadius = function(_) {
if (!arguments.length) return pointRadius;
pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
return path;
};
function reset() {
cacheStream = null;
return path;
}
return path.projection(d3.geo.albersUsa()).context(null);
};
function d3_geo_pathProjectStream(project) {
var resample = d3_geo_resample(function(x, y) {
return project([ x * d3_degrees, y * d3_degrees ]);
});
return function(stream) {
return d3_geo_projectionRadians(resample(stream));
};
}
d3.geo.transform = function(methods) {
return {
stream: function(stream) {
var transform = new d3_geo_transform(stream);
for (var k in methods) transform[k] = methods[k];
return transform;
}
};
};
function d3_geo_transform(stream) {
this.stream = stream;
}
d3_geo_transform.prototype = {
point: function(x, y) {
this.stream.point(x, y);
},
sphere: function() {
this.stream.sphere();
},
lineStart: function() {
this.stream.lineStart();
},
lineEnd: function() {
this.stream.lineEnd();
},
polygonStart: function() {
this.stream.polygonStart();
},
polygonEnd: function() {
this.stream.polygonEnd();
}
};
function d3_geo_transformPoint(stream, point) {
return {
point: point,
sphere: function() {
stream.sphere();
},
lineStart: function() {
stream.lineStart();
},
lineEnd: function() {
stream.lineEnd();
},
polygonStart: function() {
stream.polygonStart();
},
polygonEnd: function() {
stream.polygonEnd();
}
};
}
d3.geo.projection = d3_geo_projection;
d3.geo.projectionMutator = d3_geo_projectionMutator;
function d3_geo_projection(project) {
return d3_geo_projectionMutator(function() {
return project;
})();
}
function d3_geo_projectionMutator(projectAt) {
var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {
x = project(x, y);
return [ x[0] * k + δx, δy - x[1] * k ];
}), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;
function projection(point) {
point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
return [ point[0] * k + δx, δy - point[1] * k ];
}
function invert(point) {
point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
}
projection.stream = function(output) {
if (stream) stream.valid = false;
stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));
stream.valid = true;
return stream;
};
projection.clipAngle = function(_) {
if (!arguments.length) return clipAngle;
preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
return invalidate();
};
projection.clipExtent = function(_) {
if (!arguments.length) return clipExtent;
clipExtent = _;
postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
return invalidate();
};
projection.scale = function(_) {
if (!arguments.length) return k;
k = +_;
return reset();
};
projection.translate = function(_) {
if (!arguments.length) return [ x, y ];
x = +_[0];
y = +_[1];
return reset();
};
projection.center = function(_) {
if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
λ = _[0] % 360 * d3_radians;
φ = _[1] % 360 * d3_radians;
return reset();
};
projection.rotate = function(_) {
if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];
δλ = _[0] % 360 * d3_radians;
δφ = _[1] % 360 * d3_radians;
δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
return reset();
};
d3.rebind(projection, projectResample, "precision");
function reset() {
projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
var center = project(λ, φ);
δx = x - center[0] * k;
δy = y + center[1] * k;
return invalidate();
}
function invalidate() {
if (stream) stream.valid = false, stream = null;
return projection;
}
return function() {
project = projectAt.apply(this, arguments);
projection.invert = project.invert && invert;
return reset();
};
}
function d3_geo_projectionRadians(stream) {
return d3_geo_transformPoint(stream, function(x, y) {
stream.point(x * d3_radians, y * d3_radians);
});
}
function d3_geo_equirectangular(λ, φ) {
return [ λ, φ ];
}
(d3.geo.equirectangular = function() {
return d3_geo_projection(d3_geo_equirectangular);
}).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
d3.geo.rotation = function(rotate) {
rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
function forward(coordinates) {
coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
}
forward.invert = function(coordinates) {
coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
};
return forward;
};
function d3_geo_identityRotation(λ, φ) {
return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];
}
d3_geo_identityRotation.invert = d3_geo_equirectangular;
function d3_geo_rotation(δλ, δφ, δγ) {
return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;
}
function d3_geo_forwardRotationλ(δλ) {
return function(λ, φ) {
return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];
};
}
function d3_geo_rotationλ(δλ) {
var rotation = d3_geo_forwardRotationλ(δλ);
rotation.invert = d3_geo_forwardRotationλ(-δλ);
return rotation;
}
function d3_geo_rotationφγ(δφ, δγ) {
var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);
function rotation(λ, φ) {
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;
return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];
}
rotation.invert = function(λ, φ) {
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;
return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];
};
return rotation;
}
d3.geo.circle = function() {
var origin = [ 0, 0 ], angle, precision = 6, interpolate;
function circle() {
var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];
interpolate(null, null, 1, {
point: function(x, y) {
ring.push(x = rotate(x, y));
x[0] *= d3_degrees, x[1] *= d3_degrees;
}
});
return {
type: "Polygon",
coordinates: [ ring ]
};
}
circle.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return circle;
};
circle.angle = function(x) {
if (!arguments.length) return angle;
interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
return circle;
};
circle.precision = function(_) {
if (!arguments.length) return precision;
interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
return circle;
};
return circle.angle(90);
};
function d3_geo_circleInterpolate(radius, precision) {
var cr = Math.cos(radius), sr = Math.sin(radius);
return function(from, to, direction, listener) {
var step = direction * precision;
if (from != null) {
from = d3_geo_circleAngle(cr, from);
to = d3_geo_circleAngle(cr, to);
if (direction > 0 ? from < to : from > to) from += direction * τ;
} else {
from = radius + direction * τ;
to = radius - .5 * step;
}
for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {
listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);
}
};
}
function d3_geo_circleAngle(cr, point) {
var a = d3_geo_cartesian(point);
a[0] -= cr;
d3_geo_cartesianNormalize(a);
var angle = d3_acos(-a[1]);
return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
}
d3.geo.distance = function(a, b) {
var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;
return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);
};
d3.geo.graticule = function() {
var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;
function graticule() {
return {
type: "MultiLineString",
coordinates: lines()
};
}
function lines() {
return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {
return abs(x % DX) > ε;
}).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {
return abs(y % DY) > ε;
}).map(y));
}
graticule.lines = function() {
return lines().map(function(coordinates) {
return {
type: "LineString",
coordinates: coordinates
};
});
};
graticule.outline = function() {
return {
type: "Polygon",
coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]
};
};
graticule.extent = function(_) {
if (!arguments.length) return graticule.minorExtent();
return graticule.majorExtent(_).minorExtent(_);
};
graticule.majorExtent = function(_) {
if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];
X0 = +_[0][0], X1 = +_[1][0];
Y0 = +_[0][1], Y1 = +_[1][1];
if (X0 > X1) _ = X0, X0 = X1, X1 = _;
if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
return graticule.precision(precision);
};
graticule.minorExtent = function(_) {
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
x0 = +_[0][0], x1 = +_[1][0];
y0 = +_[0][1], y1 = +_[1][1];
if (x0 > x1) _ = x0, x0 = x1, x1 = _;
if (y0 > y1) _ = y0, y0 = y1, y1 = _;
return graticule.precision(precision);
};
graticule.step = function(_) {
if (!arguments.length) return graticule.minorStep();
return graticule.majorStep(_).minorStep(_);
};
graticule.majorStep = function(_) {
if (!arguments.length) return [ DX, DY ];
DX = +_[0], DY = +_[1];
return graticule;
};
graticule.minorStep = function(_) {
if (!arguments.length) return [ dx, dy ];
dx = +_[0], dy = +_[1];
return graticule;
};
graticule.precision = function(_) {
if (!arguments.length) return precision;
precision = +_;
x = d3_geo_graticuleX(y0, y1, 90);
y = d3_geo_graticuleY(x0, x1, precision);
X = d3_geo_graticuleX(Y0, Y1, 90);
Y = d3_geo_graticuleY(X0, X1, precision);
return graticule;
};
return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);
};
function d3_geo_graticuleX(y0, y1, dy) {
var y = d3.range(y0, y1 - ε, dy).concat(y1);
return function(x) {
return y.map(function(y) {
return [ x, y ];
});
};
}
function d3_geo_graticuleY(x0, x1, dx) {
var x = d3.range(x0, x1 - ε, dx).concat(x1);
return function(y) {
return x.map(function(x) {
return [ x, y ];
});
};
}
function d3_source(d) {
return d.source;
}
function d3_target(d) {
return d.target;
}
d3.geo.greatArc = function() {
var source = d3_source, source_, target = d3_target, target_;
function greatArc() {
return {
type: "LineString",
coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]
};
}
greatArc.distance = function() {
return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));
};
greatArc.source = function(_) {
if (!arguments.length) return source;
source = _, source_ = typeof _ === "function" ? null : _;
return greatArc;
};
greatArc.target = function(_) {
if (!arguments.length) return target;
target = _, target_ = typeof _ === "function" ? null : _;
return greatArc;
};
greatArc.precision = function() {
return arguments.length ? greatArc : 0;
};
return greatArc;
};
d3.geo.interpolate = function(source, target) {
return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);
};
function d3_geo_interpolate(x0, y0, x1, y1) {
var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);
var interpolate = d ? function(t) {
var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];
} : function() {
return [ x0 * d3_degrees, y0 * d3_degrees ];
};
interpolate.distance = d;
return interpolate;
}
d3.geo.length = function(object) {
d3_geo_lengthSum = 0;
d3.geo.stream(object, d3_geo_length);
return d3_geo_lengthSum;
};
var d3_geo_lengthSum;
var d3_geo_length = {
sphere: d3_noop,
point: d3_noop,
lineStart: d3_geo_lengthLineStart,
lineEnd: d3_noop,
polygonStart: d3_noop,
polygonEnd: d3_noop
};
function d3_geo_lengthLineStart() {
var λ0, sinφ0, cosφ0;
d3_geo_length.point = function(λ, φ) {
λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
d3_geo_length.point = nextPoint;
};
d3_geo_length.lineEnd = function() {
d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
};
function nextPoint(λ, φ) {
var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);
d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
}
}
function d3_geo_azimuthal(scale, angle) {
function azimuthal(λ, φ) {
var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);
return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];
}
azimuthal.invert = function(x, y) {
var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);
return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];
};
return azimuthal;
}
var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {
return Math.sqrt(2 / (1 + cosλcosφ));
}, function(ρ) {
return 2 * Math.asin(ρ / 2);
});
(d3.geo.azimuthalEqualArea = function() {
return d3_geo_projection(d3_geo_azimuthalEqualArea);
}).raw = d3_geo_azimuthalEqualArea;
var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {
var c = Math.acos(cosλcosφ);
return c && c / Math.sin(c);
}, d3_identity);
(d3.geo.azimuthalEquidistant = function() {
return d3_geo_projection(d3_geo_azimuthalEquidistant);
}).raw = d3_geo_azimuthalEquidistant;
function d3_geo_conicConformal(φ0, φ1) {
var cosφ0 = Math.cos(φ0), t = function(φ) {
return Math.tan(π / 4 + φ / 2);
}, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;
if (!n) return d3_geo_mercator;
function forward(λ, φ) {
var ρ = abs(abs(φ) - halfπ) < ε ? 0 : F / Math.pow(t(φ), n);
return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];
}
forward.invert = function(x, y) {
var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);
return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];
};
return forward;
}
(d3.geo.conicConformal = function() {
return d3_geo_conic(d3_geo_conicConformal);
}).raw = d3_geo_conicConformal;
function d3_geo_conicEquidistant(φ0, φ1) {
var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;
if (abs(n) < ε) return d3_geo_equirectangular;
function forward(λ, φ) {
var ρ = G - φ;
return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];
}
forward.invert = function(x, y) {
var ρ0_y = G - y;
return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];
};
return forward;
}
(d3.geo.conicEquidistant = function() {
return d3_geo_conic(d3_geo_conicEquidistant);
}).raw = d3_geo_conicEquidistant;
var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {
return 1 / cosλcosφ;
}, Math.atan);
(d3.geo.gnomonic = function() {
return d3_geo_projection(d3_geo_gnomonic);
}).raw = d3_geo_gnomonic;
function d3_geo_mercator(λ, φ) {
return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];
}
d3_geo_mercator.invert = function(x, y) {
return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];
};
function d3_geo_mercatorProjection(project) {
var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;
m.scale = function() {
var v = scale.apply(m, arguments);
return v === m ? clipAuto ? m.clipExtent(null) : m : v;
};
m.translate = function() {
var v = translate.apply(m, arguments);
return v === m ? clipAuto ? m.clipExtent(null) : m : v;
};
m.clipExtent = function(_) {
var v = clipExtent.apply(m, arguments);
if (v === m) {
if (clipAuto = _ == null) {
var k = π * scale(), t = translate();
clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);
}
} else if (clipAuto) {
v = null;
}
return v;
};
return m.clipExtent(null);
}
(d3.geo.mercator = function() {
return d3_geo_mercatorProjection(d3_geo_mercator);
}).raw = d3_geo_mercator;
var d3_geo_orthographic = d3_geo_azimuthal(function() {
return 1;
}, Math.asin);
(d3.geo.orthographic = function() {
return d3_geo_projection(d3_geo_orthographic);
}).raw = d3_geo_orthographic;
var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {
return 1 / (1 + cosλcosφ);
}, function(ρ) {
return 2 * Math.atan(ρ);
});
(d3.geo.stereographic = function() {
return d3_geo_projection(d3_geo_stereographic);
}).raw = d3_geo_stereographic;
function d3_geo_transverseMercator(λ, φ) {
var B = Math.cos(φ) * Math.sin(λ);
return [ Math.log((1 + B) / (1 - B)) / 2, Math.atan2(Math.tan(φ), Math.cos(λ)) ];
}
d3_geo_transverseMercator.invert = function(x, y) {
return [ Math.atan2(d3_sinh(x), Math.cos(y)), d3_asin(Math.sin(y) / d3_cosh(x)) ];
};
(d3.geo.transverseMercator = function() {
return d3_geo_mercatorProjection(d3_geo_transverseMercator);
}).raw = d3_geo_transverseMercator;
d3.geom = {};
function d3_geom_pointX(d) {
return d[0];
}
function d3_geom_pointY(d) {
return d[1];
}
d3.geom.hull = function(vertices) {
var x = d3_geom_pointX, y = d3_geom_pointY;
if (arguments.length) return hull(vertices);
function hull(data) {
if (data.length < 3) return [];
var fx = d3_functor(x), fy = d3_functor(y), n = data.length, vertices, plen = n - 1, points = [], stack = [], d, i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
if (fx === d3_geom_pointX && y === d3_geom_pointY) vertices = data; else for (i = 0,
vertices = []; i < n; ++i) {
vertices.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]);
}
for (i = 1; i < n; ++i) {
if (vertices[i][1] < vertices[h][1] || vertices[i][1] == vertices[h][1] && vertices[i][0] < vertices[h][0]) h = i;
}
for (i = 0; i < n; ++i) {
if (i === h) continue;
y1 = vertices[i][1] - vertices[h][1];
x1 = vertices[i][0] - vertices[h][0];
points.push({
angle: Math.atan2(y1, x1),
index: i
});
}
points.sort(function(a, b) {
return a.angle - b.angle;
});
a = points[0].angle;
v = points[0].index;
u = 0;
for (i = 1; i < plen; ++i) {
j = points[i].index;
if (a == points[i].angle) {
x1 = vertices[v][0] - vertices[h][0];
y1 = vertices[v][1] - vertices[h][1];
x2 = vertices[j][0] - vertices[h][0];
y2 = vertices[j][1] - vertices[h][1];
if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
points[i].index = -1;
continue;
} else {
points[u].index = -1;
}
}
a = points[i].angle;
u = i;
v = j;
}
stack.push(h);
for (i = 0, j = 0; i < 2; ++j) {
if (points[j].index > -1) {
stack.push(points[j].index);
i++;
}
}
sp = stack.length;
for (;j < plen; ++j) {
if (points[j].index < 0) continue;
while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
--sp;
}
stack[sp++] = points[j].index;
}
var poly = [];
for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]);
return poly;
}
hull.x = function(_) {
return arguments.length ? (x = _, hull) : x;
};
hull.y = function(_) {
return arguments.length ? (y = _, hull) : y;
};
return hull;
};
function d3_geom_hullCCW(i1, i2, i3, v) {
var t, a, b, c, d, e, f;
t = v[i1];
a = t[0];
b = t[1];
t = v[i2];
c = t[0];
d = t[1];
t = v[i3];
e = t[0];
f = t[1];
return (f - b) * (c - a) - (d - b) * (e - a) > 0;
}
d3.geom.polygon = function(coordinates) {
d3_subclass(coordinates, d3_geom_polygonPrototype);
return coordinates;
};
var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];
d3_geom_polygonPrototype.area = function() {
var i = -1, n = this.length, a, b = this[n - 1], area = 0;
while (++i < n) {
a = b;
b = this[i];
area += a[1] * b[0] - a[0] * b[1];
}
return area * .5;
};
d3_geom_polygonPrototype.centroid = function(k) {
var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;
if (!arguments.length) k = -1 / (6 * this.area());
while (++i < n) {
a = b;
b = this[i];
c = a[0] * b[1] - b[0] * a[1];
x += (a[0] + b[0]) * c;
y += (a[1] + b[1]) * c;
}
return [ x * k, y * k ];
};
d3_geom_polygonPrototype.clip = function(subject) {
var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;
while (++i < n) {
input = subject.slice();
subject.length = 0;
b = this[i];
c = input[(m = input.length - closed) - 1];
j = -1;
while (++j < m) {
d = input[j];
if (d3_geom_polygonInside(d, a, b)) {
if (!d3_geom_polygonInside(c, a, b)) {
subject.push(d3_geom_polygonIntersect(c, d, a, b));
}
subject.push(d);
} else if (d3_geom_polygonInside(c, a, b)) {
subject.push(d3_geom_polygonIntersect(c, d, a, b));
}
c = d;
}
if (closed) subject.push(subject[0]);
a = b;
}
return subject;
};
function d3_geom_polygonInside(p, a, b) {
return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
}
function d3_geom_polygonIntersect(c, d, a, b) {
var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
return [ x1 + ua * x21, y1 + ua * y21 ];
}
function d3_geom_polygonClosed(coordinates) {
var a = coordinates[0], b = coordinates[coordinates.length - 1];
return !(a[0] - b[0] || a[1] - b[1]);
}
var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];
function d3_geom_voronoiBeach() {
d3_geom_voronoiRedBlackNode(this);
this.edge = this.site = this.circle = null;
}
function d3_geom_voronoiCreateBeach(site) {
var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();
beach.site = site;
return beach;
}
function d3_geom_voronoiDetachBeach(beach) {
d3_geom_voronoiDetachCircle(beach);
d3_geom_voronoiBeaches.remove(beach);
d3_geom_voronoiBeachPool.push(beach);
d3_geom_voronoiRedBlackNode(beach);
}
function d3_geom_voronoiRemoveBeach(beach) {
var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {
x: x,
y: y
}, previous = beach.P, next = beach.N, disappearing = [ beach ];
d3_geom_voronoiDetachBeach(beach);
var lArc = previous;
while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {
previous = lArc.P;
disappearing.unshift(lArc);
d3_geom_voronoiDetachBeach(lArc);
lArc = previous;
}
disappearing.unshift(lArc);
d3_geom_voronoiDetachCircle(lArc);
var rArc = next;
while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {
next = rArc.N;
disappearing.push(rArc);
d3_geom_voronoiDetachBeach(rArc);
rArc = next;
}
disappearing.push(rArc);
d3_geom_voronoiDetachCircle(rArc);
var nArcs = disappearing.length, iArc;
for (iArc = 1; iArc < nArcs; ++iArc) {
rArc = disappearing[iArc];
lArc = disappearing[iArc - 1];
d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);
}
lArc = disappearing[0];
rArc = disappearing[nArcs - 1];
rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);
d3_geom_voronoiAttachCircle(lArc);
d3_geom_voronoiAttachCircle(rArc);
}
function d3_geom_voronoiAddBeach(site) {
var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;
while (node) {
dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;
if (dxl > ε) node = node.L; else {
dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);
if (dxr > ε) {
if (!node.R) {
lArc = node;
break;
}
node = node.R;
} else {
if (dxl > -ε) {
lArc = node.P;
rArc = node;
} else if (dxr > -ε) {
lArc = node;
rArc = node.N;
} else {
lArc = rArc = node;
}
break;
}
}
}
var newArc = d3_geom_voronoiCreateBeach(site);
d3_geom_voronoiBeaches.insert(lArc, newArc);
if (!lArc && !rArc) return;
if (lArc === rArc) {
d3_geom_voronoiDetachCircle(lArc);
rArc = d3_geom_voronoiCreateBeach(lArc.site);
d3_geom_voronoiBeaches.insert(newArc, rArc);
newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);
d3_geom_voronoiAttachCircle(lArc);
d3_geom_voronoiAttachCircle(rArc);
return;
}
if (!rArc) {
newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);
return;
}
d3_geom_voronoiDetachCircle(lArc);
d3_geom_voronoiDetachCircle(rArc);
var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {
x: (cy * hb - by * hc) / d + ax,
y: (bx * hc - cx * hb) / d + ay
};
d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);
newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);
rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);
d3_geom_voronoiAttachCircle(lArc);
d3_geom_voronoiAttachCircle(rArc);
}
function d3_geom_voronoiLeftBreakPoint(arc, directrix) {
var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;
if (!pby2) return rfocx;
var lArc = arc.P;
if (!lArc) return -Infinity;
site = lArc.site;
var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;
if (!plby2) return lfocx;
var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;
if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;
return (rfocx + lfocx) / 2;
}
function d3_geom_voronoiRightBreakPoint(arc, directrix) {
var rArc = arc.N;
if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);
var site = arc.site;
return site.y === directrix ? site.x : Infinity;
}
function d3_geom_voronoiCell(site) {
this.site = site;
this.edges = [];
}
d3_geom_voronoiCell.prototype.prepare = function() {
var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;
while (iHalfEdge--) {
edge = halfEdges[iHalfEdge].edge;
if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);
}
halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);
return halfEdges.length;
};
function d3_geom_voronoiCloseCells(extent) {
var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;
while (iCell--) {
cell = cells[iCell];
if (!cell || !cell.prepare()) continue;
halfEdges = cell.edges;
nHalfEdges = halfEdges.length;
iHalfEdge = 0;
while (iHalfEdge < nHalfEdges) {
end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;
start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;
if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {
halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {
x: x0,
y: abs(x2 - x0) < ε ? y2 : y1
} : abs(y3 - y1) < ε && x1 - x3 > ε ? {
x: abs(y2 - y1) < ε ? x2 : x1,
y: y1
} : abs(x3 - x1) < ε && y3 - y0 > ε ? {
x: x1,
y: abs(x2 - x1) < ε ? y2 : y0
} : abs(y3 - y0) < ε && x3 - x0 > ε ? {
x: abs(y2 - y0) < ε ? x2 : x0,
y: y0
} : null), cell.site, null));
++nHalfEdges;
}
}
}
}
function d3_geom_voronoiHalfEdgeOrder(a, b) {
return b.angle - a.angle;
}
function d3_geom_voronoiCircle() {
d3_geom_voronoiRedBlackNode(this);
this.x = this.y = this.arc = this.site = this.cy = null;
}
function d3_geom_voronoiAttachCircle(arc) {
var lArc = arc.P, rArc = arc.N;
if (!lArc || !rArc) return;
var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;
if (lSite === rSite) return;
var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;
var d = 2 * (ax * cy - ay * cx);
if (d >= -ε2) return;
var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;
var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();
circle.arc = arc;
circle.site = cSite;
circle.x = x + bx;
circle.y = cy + Math.sqrt(x * x + y * y);
circle.cy = cy;
arc.circle = circle;
var before = null, node = d3_geom_voronoiCircles._;
while (node) {
if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {
if (node.L) node = node.L; else {
before = node.P;
break;
}
} else {
if (node.R) node = node.R; else {
before = node;
break;
}
}
}
d3_geom_voronoiCircles.insert(before, circle);
if (!before) d3_geom_voronoiFirstCircle = circle;
}
function d3_geom_voronoiDetachCircle(arc) {
var circle = arc.circle;
if (circle) {
if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;
d3_geom_voronoiCircles.remove(circle);
d3_geom_voronoiCirclePool.push(circle);
d3_geom_voronoiRedBlackNode(circle);
arc.circle = null;
}
}
function d3_geom_voronoiClipEdges(extent) {
var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;
while (i--) {
e = edges[i];
if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {
e.a = e.b = null;
edges.splice(i, 1);
}
}
}
function d3_geom_voronoiConnectEdge(edge, extent) {
var vb = edge.b;
if (vb) return true;
var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;
if (ry === ly) {
if (fx < x0 || fx >= x1) return;
if (lx > rx) {
if (!va) va = {
x: fx,
y: y0
}; else if (va.y >= y1) return;
vb = {
x: fx,
y: y1
};
} else {
if (!va) va = {
x: fx,
y: y1
}; else if (va.y < y0) return;
vb = {
x: fx,
y: y0
};
}
} else {
fm = (lx - rx) / (ry - ly);
fb = fy - fm * fx;
if (fm < -1 || fm > 1) {
if (lx > rx) {
if (!va) va = {
x: (y0 - fb) / fm,
y: y0
}; else if (va.y >= y1) return;
vb = {
x: (y1 - fb) / fm,
y: y1
};
} else {
if (!va) va = {
x: (y1 - fb) / fm,
y: y1
}; else if (va.y < y0) return;
vb = {
x: (y0 - fb) / fm,
y: y0
};
}
} else {
if (ly < ry) {
if (!va) va = {
x: x0,
y: fm * x0 + fb
}; else if (va.x >= x1) return;
vb = {
x: x1,
y: fm * x1 + fb
};
} else {
if (!va) va = {
x: x1,
y: fm * x1 + fb
}; else if (va.x < x0) return;
vb = {
x: x0,
y: fm * x0 + fb
};
}
}
}
edge.a = va;
edge.b = vb;
return true;
}
function d3_geom_voronoiEdge(lSite, rSite) {
this.l = lSite;
this.r = rSite;
this.a = this.b = null;
}
function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {
var edge = new d3_geom_voronoiEdge(lSite, rSite);
d3_geom_voronoiEdges.push(edge);
if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);
if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);
d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));
d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));
return edge;
}
function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {
var edge = new d3_geom_voronoiEdge(lSite, null);
edge.a = va;
edge.b = vb;
d3_geom_voronoiEdges.push(edge);
return edge;
}
function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {
if (!edge.a && !edge.b) {
edge.a = vertex;
edge.l = lSite;
edge.r = rSite;
} else if (edge.l === rSite) {
edge.b = vertex;
} else {
edge.a = vertex;
}
}
function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {
var va = edge.a, vb = edge.b;
this.edge = edge;
this.site = lSite;
this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);
}
d3_geom_voronoiHalfEdge.prototype = {
start: function() {
return this.edge.l === this.site ? this.edge.a : this.edge.b;
},
end: function() {
return this.edge.l === this.site ? this.edge.b : this.edge.a;
}
};
function d3_geom_voronoiRedBlackTree() {
this._ = null;
}
function d3_geom_voronoiRedBlackNode(node) {
node.U = node.C = node.L = node.R = node.P = node.N = null;
}
d3_geom_voronoiRedBlackTree.prototype = {
insert: function(after, node) {
var parent, grandpa, uncle;
if (after) {
node.P = after;
node.N = after.N;
if (after.N) after.N.P = node;
after.N = node;
if (after.R) {
after = after.R;
while (after.L) after = after.L;
after.L = node;
} else {
after.R = node;
}
parent = after;
} else if (this._) {
after = d3_geom_voronoiRedBlackFirst(this._);
node.P = null;
node.N = after;
after.P = after.L = node;
parent = after;
} else {
node.P = node.N = null;
this._ = node;
parent = null;
}
node.L = node.R = null;
node.U = parent;
node.C = true;
after = node;
while (parent && parent.C) {
grandpa = parent.U;
if (parent === grandpa.L) {
uncle = grandpa.R;
if (uncle && uncle.C) {
parent.C = uncle.C = false;
grandpa.C = true;
after = grandpa;
} else {
if (after === parent.R) {
d3_geom_voronoiRedBlackRotateLeft(this, parent);
after = parent;
parent = after.U;
}
parent.C = false;
grandpa.C = true;
d3_geom_voronoiRedBlackRotateRight(this, grandpa);
}
} else {
uncle = grandpa.L;
if (uncle && uncle.C) {
parent.C = uncle.C = false;
grandpa.C = true;
after = grandpa;
} else {
if (after === parent.L) {
d3_geom_voronoiRedBlackRotateRight(this, parent);
after = parent;
parent = after.U;
}
parent.C = false;
grandpa.C = true;
d3_geom_voronoiRedBlackRotateLeft(this, grandpa);
}
}
parent = after.U;
}
this._.C = false;
},
remove: function(node) {
if (node.N) node.N.P = node.P;
if (node.P) node.P.N = node.N;
node.N = node.P = null;
var parent = node.U, sibling, left = node.L, right = node.R, next, red;
if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);
if (parent) {
if (parent.L === node) parent.L = next; else parent.R = next;
} else {
this._ = next;
}
if (left && right) {
red = next.C;
next.C = node.C;
next.L = left;
left.U = next;
if (next !== right) {
parent = next.U;
next.U = node.U;
node = next.R;
parent.L = node;
next.R = right;
right.U = next;
} else {
next.U = parent;
parent = next;
node = next.R;
}
} else {
red = node.C;
node = next;
}
if (node) node.U = parent;
if (red) return;
if (node && node.C) {
node.C = false;
return;
}
do {
if (node === this._) break;
if (node === parent.L) {
sibling = parent.R;
if (sibling.C) {
sibling.C = false;
parent.C = true;
d3_geom_voronoiRedBlackRotateLeft(this, parent);
sibling = parent.R;
}
if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
if (!sibling.R || !sibling.R.C) {
sibling.L.C = false;
sibling.C = true;
d3_geom_voronoiRedBlackRotateRight(this, sibling);
sibling = parent.R;
}
sibling.C = parent.C;
parent.C = sibling.R.C = false;
d3_geom_voronoiRedBlackRotateLeft(this, parent);
node = this._;
break;
}
} else {
sibling = parent.L;
if (sibling.C) {
sibling.C = false;
parent.C = true;
d3_geom_voronoiRedBlackRotateRight(this, parent);
sibling = parent.L;
}
if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {
if (!sibling.L || !sibling.L.C) {
sibling.R.C = false;
sibling.C = true;
d3_geom_voronoiRedBlackRotateLeft(this, sibling);
sibling = parent.L;
}
sibling.C = parent.C;
parent.C = sibling.L.C = false;
d3_geom_voronoiRedBlackRotateRight(this, parent);
node = this._;
break;
}
}
sibling.C = true;
node = parent;
parent = parent.U;
} while (!node.C);
if (node) node.C = false;
}
};
function d3_geom_voronoiRedBlackRotateLeft(tree, node) {
var p = node, q = node.R, parent = p.U;
if (parent) {
if (parent.L === p) parent.L = q; else parent.R = q;
} else {
tree._ = q;
}
q.U = parent;
p.U = q;
p.R = q.L;
if (p.R) p.R.U = p;
q.L = p;
}
function d3_geom_voronoiRedBlackRotateRight(tree, node) {
var p = node, q = node.L, parent = p.U;
if (parent) {
if (parent.L === p) parent.L = q; else parent.R = q;
} else {
tree._ = q;
}
q.U = parent;
p.U = q;
p.L = q.R;
if (p.L) p.L.U = p;
q.R = p;
}
function d3_geom_voronoiRedBlackFirst(node) {
while (node.L) node = node.L;
return node;
}
function d3_geom_voronoi(sites, bbox) {
var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;
d3_geom_voronoiEdges = [];
d3_geom_voronoiCells = new Array(sites.length);
d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();
d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();
while (true) {
circle = d3_geom_voronoiFirstCircle;
if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {
if (site.x !== x0 || site.y !== y0) {
d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);
d3_geom_voronoiAddBeach(site);
x0 = site.x, y0 = site.y;
}
site = sites.pop();
} else if (circle) {
d3_geom_voronoiRemoveBeach(circle.arc);
} else {
break;
}
}
if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);
var diagram = {
cells: d3_geom_voronoiCells,
edges: d3_geom_voronoiEdges
};
d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;
return diagram;
}
function d3_geom_voronoiVertexOrder(a, b) {
return b.y - a.y || b.x - a.x;
}
d3.geom.voronoi = function(points) {
var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;
if (points) return voronoi(points);
function voronoi(data) {
var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];
d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {
var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {
var s = e.start();
return [ s.x, s.y ];
}) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];
polygon.point = data[i];
});
return polygons;
}
function sites(data) {
return data.map(function(d, i) {
return {
x: Math.round(fx(d, i) / ε) * ε,
y: Math.round(fy(d, i) / ε) * ε,
i: i
};
});
}
voronoi.links = function(data) {
return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {
return edge.l && edge.r;
}).map(function(edge) {
return {
source: data[edge.l.i],
target: data[edge.r.i]
};
});
};
voronoi.triangles = function(data) {
var triangles = [];
d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {
var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;
while (++j < m) {
e0 = e1;
s0 = s1;
e1 = edges[j].edge;
s1 = e1.l === site ? e1.r : e1.l;
if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {
triangles.push([ data[i], data[s0.i], data[s1.i] ]);
}
}
});
return triangles;
};
voronoi.x = function(_) {
return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;
};
voronoi.y = function(_) {
return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;
};
voronoi.clipExtent = function(_) {
if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;
clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;
return voronoi;
};
voronoi.size = function(_) {
if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];
return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);
};
return voronoi;
};
var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];
function d3_geom_voronoiTriangleArea(a, b, c) {
return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);
}
d3.geom.delaunay = function(vertices) {
return d3.geom.voronoi().triangles(vertices);
};
d3.geom.quadtree = function(points, x1, y1, x2, y2) {
var x = d3_geom_pointX, y = d3_geom_pointY, compat;
if (compat = arguments.length) {
x = d3_geom_quadtreeCompatX;
y = d3_geom_quadtreeCompatY;
if (compat === 3) {
y2 = y1;
x2 = x1;
y1 = x1 = 0;
}
return quadtree(points);
}
function quadtree(data) {
var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;
if (x1 != null) {
x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;
} else {
x2_ = y2_ = -(x1_ = y1_ = Infinity);
xs = [], ys = [];
n = data.length;
if (compat) for (i = 0; i < n; ++i) {
d = data[i];
if (d.x < x1_) x1_ = d.x;
if (d.y < y1_) y1_ = d.y;
if (d.x > x2_) x2_ = d.x;
if (d.y > y2_) y2_ = d.y;
xs.push(d.x);
ys.push(d.y);
} else for (i = 0; i < n; ++i) {
var x_ = +fx(d = data[i], i), y_ = +fy(d, i);
if (x_ < x1_) x1_ = x_;
if (y_ < y1_) y1_ = y_;
if (x_ > x2_) x2_ = x_;
if (y_ > y2_) y2_ = y_;
xs.push(x_);
ys.push(y_);
}
}
var dx = x2_ - x1_, dy = y2_ - y1_;
if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;
function insert(n, d, x, y, x1, y1, x2, y2) {
if (isNaN(x) || isNaN(y)) return;
if (n.leaf) {
var nx = n.x, ny = n.y;
if (nx != null) {
if (abs(nx - x) + abs(ny - y) < .01) {
insertChild(n, d, x, y, x1, y1, x2, y2);
} else {
var nPoint = n.point;
n.x = n.y = n.point = null;
insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);
insertChild(n, d, x, y, x1, y1, x2, y2);
}
} else {
n.x = x, n.y = y, n.point = d;
}
} else {
insertChild(n, d, x, y, x1, y1, x2, y2);
}
}
function insertChild(n, d, x, y, x1, y1, x2, y2) {
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = x >= sx, bottom = y >= sy, i = (bottom << 1) + right;
n.leaf = false;
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
if (right) x1 = sx; else x2 = sx;
if (bottom) y1 = sy; else y2 = sy;
insert(n, d, x, y, x1, y1, x2, y2);
}
var root = d3_geom_quadtreeNode();
root.add = function(d) {
insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);
};
root.visit = function(f) {
d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);
};
i = -1;
if (x1 == null) {
while (++i < n) {
insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);
}
--i;
} else data.forEach(root.add);
xs = ys = data = d = null;
return root;
}
quadtree.x = function(_) {
return arguments.length ? (x = _, quadtree) : x;
};
quadtree.y = function(_) {
return arguments.length ? (y = _, quadtree) : y;
};
quadtree.extent = function(_) {
if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];
if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0],
y2 = +_[1][1];
return quadtree;
};
quadtree.size = function(_) {
if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];
if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];
return quadtree;
};
return quadtree;
};
function d3_geom_quadtreeCompatX(d) {
return d.x;
}
function d3_geom_quadtreeCompatY(d) {
return d.y;
}
function d3_geom_quadtreeNode() {
return {
leaf: true,
nodes: [],
point: null,
x: null,
y: null
};
}
function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
if (!f(node, x1, y1, x2, y2)) {
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
}
}
d3.interpolateRgb = d3_interpolateRgb;
function d3_interpolateRgb(a, b) {
a = d3.rgb(a);
b = d3.rgb(b);
var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
return function(t) {
return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
};
}
d3.interpolateObject = d3_interpolateObject;
function d3_interpolateObject(a, b) {
var i = {}, c = {}, k;
for (k in a) {
if (k in b) {
i[k] = d3_interpolate(a[k], b[k]);
} else {
c[k] = a[k];
}
}
for (k in b) {
if (!(k in a)) {
c[k] = b[k];
}
}
return function(t) {
for (k in i) c[k] = i[k](t);
return c;
};
}
d3.interpolateNumber = d3_interpolateNumber;
function d3_interpolateNumber(a, b) {
b -= a = +a;
return function(t) {
return a + b * t;
};
}
d3.interpolateString = d3_interpolateString;
function d3_interpolateString(a, b) {
var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o;
a = a + "", b = b + "";
d3_interpolate_number.lastIndex = 0;
for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
if (m.index) s.push(b.substring(s0, s1 = m.index));
q.push({
i: s.length,
x: m[0]
});
s.push(null);
s0 = d3_interpolate_number.lastIndex;
}
if (s0 < b.length) s.push(b.substring(s0));
for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
o = q[i];
if (o.x == m[0]) {
if (o.i) {
if (s[o.i + 1] == null) {
s[o.i - 1] += o.x;
s.splice(o.i, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
} else {
s[o.i - 1] += o.x + s[o.i + 1];
s.splice(o.i, 2);
for (j = i + 1; j < n; ++j) q[j].i -= 2;
}
} else {
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
}
}
q.splice(i, 1);
n--;
i--;
} else {
o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
}
}
while (i < n) {
o = q.pop();
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
}
n--;
}
if (s.length === 1) {
return s[0] == null ? (o = q[0].x, function(t) {
return o(t) + "";
}) : function() {
return b;
};
}
return function(t) {
for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
}
var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
d3.interpolate = d3_interpolate;
function d3_interpolate(a, b) {
var i = d3.interpolators.length, f;
while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
return f;
}
d3.interpolators = [ function(a, b) {
var t = typeof b;
return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_Color ? d3_interpolateRgb : t === "object" ? Array.isArray(b) ? d3_interpolateArray : d3_interpolateObject : d3_interpolateNumber)(a, b);
} ];
d3.interpolateArray = d3_interpolateArray;
function d3_interpolateArray(a, b) {
var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
for (;i < na; ++i) c[i] = a[i];
for (;i < nb; ++i) c[i] = b[i];
return function(t) {
for (i = 0; i < n0; ++i) c[i] = x[i](t);
return c;
};
}
var d3_ease_default = function() {
return d3_identity;
};
var d3_ease = d3.map({
linear: d3_ease_default,
poly: d3_ease_poly,
quad: function() {
return d3_ease_quad;
},
cubic: function() {
return d3_ease_cubic;
},
sin: function() {
return d3_ease_sin;
},
exp: function() {
return d3_ease_exp;
},
circle: function() {
return d3_ease_circle;
},
elastic: d3_ease_elastic,
back: d3_ease_back,
bounce: function() {
return d3_ease_bounce;
}
});
var d3_ease_mode = d3.map({
"in": d3_identity,
out: d3_ease_reverse,
"in-out": d3_ease_reflect,
"out-in": function(f) {
return d3_ease_reflect(d3_ease_reverse(f));
}
});
d3.ease = function(name) {
var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in";
t = d3_ease.get(t) || d3_ease_default;
m = d3_ease_mode.get(m) || d3_identity;
return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
};
function d3_ease_clamp(f) {
return function(t) {
return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
};
}
function d3_ease_reverse(f) {
return function(t) {
return 1 - f(1 - t);
};
}
function d3_ease_reflect(f) {
return function(t) {
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
};
}
function d3_ease_quad(t) {
return t * t;
}
function d3_ease_cubic(t) {
return t * t * t;
}
function d3_ease_cubicInOut(t) {
if (t <= 0) return 0;
if (t >= 1) return 1;
var t2 = t * t, t3 = t2 * t;
return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
}
function d3_ease_poly(e) {
return function(t) {
return Math.pow(t, e);
};
}
function d3_ease_sin(t) {
return 1 - Math.cos(t * halfπ);
}
function d3_ease_exp(t) {
return Math.pow(2, 10 * (t - 1));
}
function d3_ease_circle(t) {
return 1 - Math.sqrt(1 - t * t);
}
function d3_ease_elastic(a, p) {
var s;
if (arguments.length < 2) p = .45;
if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;
return function(t) {
return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
};
}
function d3_ease_back(s) {
if (!s) s = 1.70158;
return function(t) {
return t * t * ((s + 1) * t - s);
};
}
function d3_ease_bounce(t) {
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
}
d3.interpolateHcl = d3_interpolateHcl;
function d3_interpolateHcl(a, b) {
a = d3.hcl(a);
b = d3.hcl(b);
var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;
if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
return function(t) {
return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
};
}
d3.interpolateHsl = d3_interpolateHsl;
function d3_interpolateHsl(a, b) {
a = d3.hsl(a);
b = d3.hsl(b);
var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;
if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;
if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
return function(t) {
return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + "";
};
}
d3.interpolateLab = d3_interpolateLab;
function d3_interpolateLab(a, b) {
a = d3.lab(a);
b = d3.lab(b);
var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
return function(t) {
return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
};
}
d3.interpolateRound = d3_interpolateRound;
function d3_interpolateRound(a, b) {
b -= a;
return function(t) {
return Math.round(a + b * t);
};
}
d3.transform = function(string) {
var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
return (d3.transform = function(string) {
if (string != null) {
g.setAttribute("transform", string);
var t = g.transform.baseVal.consolidate();
}
return new d3_transform(t ? t.matrix : d3_transformIdentity);
})(string);
};
function d3_transform(m) {
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
if (r0[0] * r1[1] < r1[0] * r0[1]) {
r0[0] *= -1;
r0[1] *= -1;
kx *= -1;
kz *= -1;
}
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
this.translate = [ m.e, m.f ];
this.scale = [ kx, ky ];
this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
}
d3_transform.prototype.toString = function() {
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
};
function d3_transformDot(a, b) {
return a[0] * b[0] + a[1] * b[1];
}
function d3_transformNormalize(a) {
var k = Math.sqrt(d3_transformDot(a, a));
if (k) {
a[0] /= k;
a[1] /= k;
}
return k;
}
function d3_transformCombine(a, b, k) {
a[0] += k * b[0];
a[1] += k * b[1];
return a;
}
var d3_transformIdentity = {
a: 1,
b: 0,
c: 0,
d: 1,
e: 0,
f: 0
};
d3.interpolateTransform = d3_interpolateTransform;
function d3_interpolateTransform(a, b) {
var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
if (ta[0] != tb[0] || ta[1] != tb[1]) {
s.push("translate(", null, ",", null, ")");
q.push({
i: 1,
x: d3_interpolateNumber(ta[0], tb[0])
}, {
i: 3,
x: d3_interpolateNumber(ta[1], tb[1])
});
} else if (tb[0] || tb[1]) {
s.push("translate(" + tb + ")");
} else {
s.push("");
}
if (ra != rb) {
if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
q.push({
i: s.push(s.pop() + "rotate(", null, ")") - 2,
x: d3_interpolateNumber(ra, rb)
});
} else if (rb) {
s.push(s.pop() + "rotate(" + rb + ")");
}
if (wa != wb) {
q.push({
i: s.push(s.pop() + "skewX(", null, ")") - 2,
x: d3_interpolateNumber(wa, wb)
});
} else if (wb) {
s.push(s.pop() + "skewX(" + wb + ")");
}
if (ka[0] != kb[0] || ka[1] != kb[1]) {
n = s.push(s.pop() + "scale(", null, ",", null, ")");
q.push({
i: n - 4,
x: d3_interpolateNumber(ka[0], kb[0])
}, {
i: n - 2,
x: d3_interpolateNumber(ka[1], kb[1])
});
} else if (kb[0] != 1 || kb[1] != 1) {
s.push(s.pop() + "scale(" + kb + ")");
}
n = q.length;
return function(t) {
var i = -1, o;
while (++i < n) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
}
function d3_uninterpolateNumber(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
return (x - a) * b;
};
}
function d3_uninterpolateClamp(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
return Math.max(0, Math.min(1, (x - a) * b));
};
}
d3.layout = {};
d3.layout.bundle = function() {
return function(links) {
var paths = [], i = -1, n = links.length;
while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
return paths;
};
};
function d3_layout_bundlePath(link) {
var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
while (start !== lca) {
start = start.parent;
points.push(start);
}
var k = points.length;
while (end !== lca) {
points.splice(k, 0, end);
end = end.parent;
}
return points;
}
function d3_layout_bundleAncestors(node) {
var ancestors = [], parent = node.parent;
while (parent != null) {
ancestors.push(node);
node = parent;
parent = parent.parent;
}
ancestors.push(node);
return ancestors;
}
function d3_layout_bundleLeastCommonAncestor(a, b) {
if (a === b) return a;
var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
while (aNode === bNode) {
sharedNode = aNode;
aNode = aNodes.pop();
bNode = bNodes.pop();
}
return sharedNode;
}
d3.layout.chord = function() {
var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;
function relayout() {
var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;
chords = [];
groups = [];
k = 0, i = -1;
while (++i < n) {
x = 0, j = -1;
while (++j < n) {
x += matrix[i][j];
}
groupSums.push(x);
subgroupIndex.push(d3.range(n));
k += x;
}
if (sortGroups) {
groupIndex.sort(function(a, b) {
return sortGroups(groupSums[a], groupSums[b]);
});
}
if (sortSubgroups) {
subgroupIndex.forEach(function(d, i) {
d.sort(function(a, b) {
return sortSubgroups(matrix[i][a], matrix[i][b]);
});
});
}
k = (τ - padding * n) / k;
x = 0, i = -1;
while (++i < n) {
x0 = x, j = -1;
while (++j < n) {
var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;
subgroups[di + "-" + dj] = {
index: di,
subindex: dj,
startAngle: a0,
endAngle: a1,
value: v
};
}
groups[di] = {
index: di,
startAngle: x0,
endAngle: x,
value: (x - x0) / k
};
x += padding;
}
i = -1;
while (++i < n) {
j = i - 1;
while (++j < n) {
var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i];
if (source.value || target.value) {
chords.push(source.value < target.value ? {
source: target,
target: source
} : {
source: source,
target: target
});
}
}
}
if (sortChords) resort();
}
function resort() {
chords.sort(function(a, b) {
return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);
});
}
chord.matrix = function(x) {
if (!arguments.length) return matrix;
n = (matrix = x) && matrix.length;
chords = groups = null;
return chord;
};
chord.padding = function(x) {
if (!arguments.length) return padding;
padding = x;
chords = groups = null;
return chord;
};
chord.sortGroups = function(x) {
if (!arguments.length) return sortGroups;
sortGroups = x;
chords = groups = null;
return chord;
};
chord.sortSubgroups = function(x) {
if (!arguments.length) return sortSubgroups;
sortSubgroups = x;
chords = null;
return chord;
};
chord.sortChords = function(x) {
if (!arguments.length) return sortChords;
sortChords = x;
if (chords) resort();
return chord;
};
chord.chords = function() {
if (!chords) relayout();
return chords;
};
chord.groups = function() {
if (!groups) relayout();
return groups;
};
return chord;
};
d3.layout.force = function() {
var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, nodes = [], links = [], distances, strengths, charges;
function repulse(node) {
return function(quad, x1, _, x2) {
if (quad.point !== node) {
var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy);
if ((x2 - x1) * dn < theta) {
var k = quad.charge * dn * dn;
node.px -= dx * k;
node.py -= dy * k;
return true;
}
if (quad.point && isFinite(dn)) {
var k = quad.pointCharge * dn * dn;
node.px -= dx * k;
node.py -= dy * k;
}
}
return !quad.charge;
};
}
force.tick = function() {
if ((alpha *= .99) < .005) {
event.end({
type: "end",
alpha: alpha = 0
});
return true;
}
var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;
for (i = 0; i < m; ++i) {
o = links[i];
s = o.source;
t = o.target;
x = t.x - s.x;
y = t.y - s.y;
if (l = x * x + y * y) {
l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
x *= l;
y *= l;
t.x -= x * (k = s.weight / (t.weight + s.weight));
t.y -= y * k;
s.x += x * (k = 1 - k);
s.y += y * k;
}
}
if (k = alpha * gravity) {
x = size[0] / 2;
y = size[1] / 2;
i = -1;
if (k) while (++i < n) {
o = nodes[i];
o.x += (x - o.x) * k;
o.y += (y - o.y) * k;
}
}
if (charge) {
d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
i = -1;
while (++i < n) {
if (!(o = nodes[i]).fixed) {
q.visit(repulse(o));
}
}
}
i = -1;
while (++i < n) {
o = nodes[i];
if (o.fixed) {
o.x = o.px;
o.y = o.py;
} else {
o.x -= (o.px - (o.px = o.x)) * friction;
o.y -= (o.py - (o.py = o.y)) * friction;
}
}
event.tick({
type: "tick",
alpha: alpha
});
};
force.nodes = function(x) {
if (!arguments.length) return nodes;
nodes = x;
return force;
};
force.links = function(x) {
if (!arguments.length) return links;
links = x;
return force;
};
force.size = function(x) {
if (!arguments.length) return size;
size = x;
return force;
};
force.linkDistance = function(x) {
if (!arguments.length) return linkDistance;
linkDistance = typeof x === "function" ? x : +x;
return force;
};
force.distance = force.linkDistance;
force.linkStrength = function(x) {
if (!arguments.length) return linkStrength;
linkStrength = typeof x === "function" ? x : +x;
return force;
};
force.friction = function(x) {
if (!arguments.length) return friction;
friction = +x;
return force;
};
force.charge = function(x) {
if (!arguments.length) return charge;
charge = typeof x === "function" ? x : +x;
return force;
};
force.gravity = function(x) {
if (!arguments.length) return gravity;
gravity = +x;
return force;
};
force.theta = function(x) {
if (!arguments.length) return theta;
theta = +x;
return force;
};
force.alpha = function(x) {
if (!arguments.length) return alpha;
x = +x;
if (alpha) {
if (x > 0) alpha = x; else alpha = 0;
} else if (x > 0) {
event.start({
type: "start",
alpha: alpha = x
});
d3.timer(force.tick);
}
return force;
};
force.start = function() {
var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
for (i = 0; i < n; ++i) {
(o = nodes[i]).index = i;
o.weight = 0;
}
for (i = 0; i < m; ++i) {
o = links[i];
if (typeof o.source == "number") o.source = nodes[o.source];
if (typeof o.target == "number") o.target = nodes[o.target];
++o.source.weight;
++o.target.weight;
}
for (i = 0; i < n; ++i) {
o = nodes[i];
if (isNaN(o.x)) o.x = position("x", w);
if (isNaN(o.y)) o.y = position("y", h);
if (isNaN(o.px)) o.px = o.x;
if (isNaN(o.py)) o.py = o.y;
}
distances = [];
if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;
strengths = [];
if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;
charges = [];
if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;
function position(dimension, size) {
if (!neighbors) {
neighbors = new Array(n);
for (j = 0; j < n; ++j) {
neighbors[j] = [];
}
for (j = 0; j < m; ++j) {
var o = links[j];
neighbors[o.source.index].push(o.target);
neighbors[o.target.index].push(o.source);
}
}
var candidates = neighbors[i], j = -1, m = candidates.length, x;
while (++j < m) if (!isNaN(x = candidates[j][dimension])) return x;
return Math.random() * size;
}
return force.resume();
};
force.resume = function() {
return force.alpha(.1);
};
force.stop = function() {
return force.alpha(0);
};
force.drag = function() {
if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend);
if (!arguments.length) return drag;
this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag);
};
function dragmove(d) {
d.px = d3.event.x, d.py = d3.event.y;
force.resume();
}
return d3.rebind(force, event, "on");
};
function d3_layout_forceDragstart(d) {
d.fixed |= 2;
}
function d3_layout_forceDragend(d) {
d.fixed &= ~6;
}
function d3_layout_forceMouseover(d) {
d.fixed |= 4;
d.px = d.x, d.py = d.y;
}
function d3_layout_forceMouseout(d) {
d.fixed &= ~4;
}
function d3_layout_forceAccumulate(quad, alpha, charges) {
var cx = 0, cy = 0;
quad.charge = 0;
if (!quad.leaf) {
var nodes = quad.nodes, n = nodes.length, i = -1, c;
while (++i < n) {
c = nodes[i];
if (c == null) continue;
d3_layout_forceAccumulate(c, alpha, charges);
quad.charge += c.charge;
cx += c.charge * c.cx;
cy += c.charge * c.cy;
}
}
if (quad.point) {
if (!quad.leaf) {
quad.point.x += Math.random() - .5;
quad.point.y += Math.random() - .5;
}
var k = alpha * charges[quad.point.index];
quad.charge += quad.pointCharge = k;
cx += k * quad.point.x;
cy += k * quad.point.y;
}
quad.cx = cx / quad.charge;
quad.cy = cy / quad.charge;
}
var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1;
d3.layout.hierarchy = function() {
var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
function recurse(node, depth, nodes) {
var childs = children.call(hierarchy, node, depth);
node.depth = depth;
nodes.push(node);
if (childs && (n = childs.length)) {
var i = -1, n, c = node.children = new Array(n), v = 0, j = depth + 1, d;
while (++i < n) {
d = c[i] = recurse(childs[i], j, nodes);
d.parent = node;
v += d.value;
}
if (sort) c.sort(sort);
if (value) node.value = v;
} else {
delete node.children;
if (value) {
node.value = +value.call(hierarchy, node, depth) || 0;
}
}
return node;
}
function revalue(node, depth) {
var children = node.children, v = 0;
if (children && (n = children.length)) {
var i = -1, n, j = depth + 1;
while (++i < n) v += revalue(children[i], j);
} else if (value) {
v = +value.call(hierarchy, node, depth) || 0;
}
if (value) node.value = v;
return v;
}
function hierarchy(d) {
var nodes = [];
recurse(d, 0, nodes);
return nodes;
}
hierarchy.sort = function(x) {
if (!arguments.length) return sort;
sort = x;
return hierarchy;
};
hierarchy.children = function(x) {
if (!arguments.length) return children;
children = x;
return hierarchy;
};
hierarchy.value = function(x) {
if (!arguments.length) return value;
value = x;
return hierarchy;
};
hierarchy.revalue = function(root) {
revalue(root, 0);
return root;
};
return hierarchy;
};
function d3_layout_hierarchyRebind(object, hierarchy) {
d3.rebind(object, hierarchy, "sort", "children", "value");
object.nodes = object;
object.links = d3_layout_hierarchyLinks;
return object;
}
function d3_layout_hierarchyChildren(d) {
return d.children;
}
function d3_layout_hierarchyValue(d) {
return d.value;
}
function d3_layout_hierarchySort(a, b) {
return b.value - a.value;
}
function d3_layout_hierarchyLinks(nodes) {
return d3.merge(nodes.map(function(parent) {
return (parent.children || []).map(function(child) {
return {
source: parent,
target: child
};
});
}));
}
d3.layout.partition = function() {
var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];
function position(node, x, dx, dy) {
var children = node.children;
node.x = x;
node.y = node.depth * dy;
node.dx = dx;
node.dy = dy;
if (children && (n = children.length)) {
var i = -1, n, c, d;
dx = node.value ? dx / node.value : 0;
while (++i < n) {
position(c = children[i], x, d = c.value * dx, dy);
x += d;
}
}
}
function depth(node) {
var children = node.children, d = 0;
if (children && (n = children.length)) {
var i = -1, n;
while (++i < n) d = Math.max(d, depth(children[i]));
}
return 1 + d;
}
function partition(d, i) {
var nodes = hierarchy.call(this, d, i);
position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
return nodes;
}
partition.size = function(x) {
if (!arguments.length) return size;
size = x;
return partition;
};
return d3_layout_hierarchyRebind(partition, hierarchy);
};
d3.layout.pie = function() {
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ;
function pie(data) {
var values = data.map(function(d, i) {
return +value.call(pie, d, i);
});
var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values);
var index = d3.range(data.length);
if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
return values[j] - values[i];
} : function(i, j) {
return sort(data[i], data[j]);
});
var arcs = [];
index.forEach(function(i) {
var d;
arcs[i] = {
data: data[i],
value: d = values[i],
startAngle: a,
endAngle: a += d * k
};
});
return arcs;
}
pie.value = function(x) {
if (!arguments.length) return value;
value = x;
return pie;
};
pie.sort = function(x) {
if (!arguments.length) return sort;
sort = x;
return pie;
};
pie.startAngle = function(x) {
if (!arguments.length) return startAngle;
startAngle = x;
return pie;
};
pie.endAngle = function(x) {
if (!arguments.length) return endAngle;
endAngle = x;
return pie;
};
return pie;
};
var d3_layout_pieSortByValue = {};
d3.layout.stack = function() {
var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
function stack(data, index) {
var series = data.map(function(d, i) {
return values.call(stack, d, i);
});
var points = series.map(function(d) {
return d.map(function(v, i) {
return [ x.call(stack, v, i), y.call(stack, v, i) ];
});
});
var orders = order.call(stack, points, index);
series = d3.permute(series, orders);
points = d3.permute(points, orders);
var offsets = offset.call(stack, points, index);
var n = series.length, m = series[0].length, i, j, o;
for (j = 0; j < m; ++j) {
out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
for (i = 1; i < n; ++i) {
out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
}
}
return data;
}
stack.values = function(x) {
if (!arguments.length) return values;
values = x;
return stack;
};
stack.order = function(x) {
if (!arguments.length) return order;
order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;
return stack;
};
stack.offset = function(x) {
if (!arguments.length) return offset;
offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;
return stack;
};
stack.x = function(z) {
if (!arguments.length) return x;
x = z;
return stack;
};
stack.y = function(z) {
if (!arguments.length) return y;
y = z;
return stack;
};
stack.out = function(z) {
if (!arguments.length) return out;
out = z;
return stack;
};
return stack;
};
function d3_layout_stackX(d) {
return d.x;
}
function d3_layout_stackY(d) {
return d.y;
}
function d3_layout_stackOut(d, y0, y) {
d.y0 = y0;
d.y = y;
}
var d3_layout_stackOrders = d3.map({
"inside-out": function(data) {
var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {
return max[a] - max[b];
}), top = 0, bottom = 0, tops = [], bottoms = [];
for (i = 0; i < n; ++i) {
j = index[i];
if (top < bottom) {
top += sums[j];
tops.push(j);
} else {
bottom += sums[j];
bottoms.push(j);
}
}
return bottoms.reverse().concat(tops);
},
reverse: function(data) {
return d3.range(data.length).reverse();
},
"default": d3_layout_stackOrderDefault
});
var d3_layout_stackOffsets = d3.map({
silhouette: function(data) {
var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];
for (j = 0; j < m; ++j) {
for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
if (o > max) max = o;
sums.push(o);
}
for (j = 0; j < m; ++j) {
y0[j] = (max - sums[j]) / 2;
}
return y0;
},
wiggle: function(data) {
var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];
y0[0] = o = o0 = 0;
for (j = 1; j < m; ++j) {
for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
}
s2 += s3 * data[i][j][1];
}
y0[j] = o -= s1 ? s2 / s1 * dx : 0;
if (o < o0) o0 = o;
}
for (j = 0; j < m; ++j) y0[j] -= o0;
return y0;
},
expand: function(data) {
var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];
for (j = 0; j < m; ++j) {
for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;
}
for (j = 0; j < m; ++j) y0[j] = 0;
return y0;
},
zero: d3_layout_stackOffsetZero
});
function d3_layout_stackOrderDefault(data) {
return d3.range(data.length);
}
function d3_layout_stackOffsetZero(data) {
var j = -1, m = data[0].length, y0 = [];
while (++j < m) y0[j] = 0;
return y0;
}
function d3_layout_stackMaxIndex(array) {
var i = 1, j = 0, v = array[0][1], k, n = array.length;
for (;i < n; ++i) {
if ((k = array[i][1]) > v) {
j = i;
v = k;
}
}
return j;
}
function d3_layout_stackReduceSum(d) {
return d.reduce(d3_layout_stackSum, 0);
}
function d3_layout_stackSum(p, d) {
return p + d[1];
}
d3.layout.histogram = function() {
var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;
function histogram(data, i) {
var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;
while (++i < m) {
bin = bins[i] = [];
bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
bin.y = 0;
}
if (m > 0) {
i = -1;
while (++i < n) {
x = values[i];
if (x >= range[0] && x <= range[1]) {
bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
bin.y += k;
bin.push(data[i]);
}
}
}
return bins;
}
histogram.value = function(x) {
if (!arguments.length) return valuer;
valuer = x;
return histogram;
};
histogram.range = function(x) {
if (!arguments.length) return ranger;
ranger = d3_functor(x);
return histogram;
};
histogram.bins = function(x) {
if (!arguments.length) return binner;
binner = typeof x === "number" ? function(range) {
return d3_layout_histogramBinFixed(range, x);
} : d3_functor(x);
return histogram;
};
histogram.frequency = function(x) {
if (!arguments.length) return frequency;
frequency = !!x;
return histogram;
};
return histogram;
};
function d3_layout_histogramBinSturges(range, values) {
return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
}
function d3_layout_histogramBinFixed(range, n) {
var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
while (++x <= n) f[x] = m * x + b;
return f;
}
function d3_layout_histogramRange(values) {
return [ d3.min(values), d3.max(values) ];
}
d3.layout.tree = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
function tree(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0];
function firstWalk(node, previousSibling) {
var children = node.children, layout = node._tree;
if (children && (n = children.length)) {
var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1;
while (++i < n) {
child = children[i];
firstWalk(child, previousChild);
ancestor = apportion(child, previousChild, ancestor);
previousChild = child;
}
d3_layout_treeShift(node);
var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim);
if (previousSibling) {
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
layout.mod = layout.prelim - midpoint;
} else {
layout.prelim = midpoint;
}
} else {
if (previousSibling) {
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
}
}
}
function secondWalk(node, x) {
node.x = node._tree.prelim + x;
var children = node.children;
if (children && (n = children.length)) {
var i = -1, n;
x += node._tree.mod;
while (++i < n) {
secondWalk(children[i], x);
}
}
}
function apportion(node, previousSibling, ancestor) {
if (previousSibling) {
var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift;
while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
vom = d3_layout_treeLeft(vom);
vop = d3_layout_treeRight(vop);
vop._tree.ancestor = node;
shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip);
if (shift > 0) {
d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift);
sip += shift;
sop += shift;
}
sim += vim._tree.mod;
sip += vip._tree.mod;
som += vom._tree.mod;
sop += vop._tree.mod;
}
if (vim && !d3_layout_treeRight(vop)) {
vop._tree.thread = vim;
vop._tree.mod += sim - sop;
}
if (vip && !d3_layout_treeLeft(vom)) {
vom._tree.thread = vip;
vom._tree.mod += sip - som;
ancestor = node;
}
}
return ancestor;
}
d3_layout_treeVisitAfter(root, function(node, previousSibling) {
node._tree = {
ancestor: node,
prelim: 0,
mod: 0,
change: 0,
shift: 0,
number: previousSibling ? previousSibling._tree.number + 1 : 0
};
});
firstWalk(root);
secondWalk(root, -root._tree.prelim);
var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1;
d3_layout_treeVisitAfter(root, nodeSize ? function(node) {
node.x *= size[0];
node.y = node.depth * size[1];
delete node._tree;
} : function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = node.depth / y1 * size[1];
delete node._tree;
});
return nodes;
}
tree.separation = function(x) {
if (!arguments.length) return separation;
separation = x;
return tree;
};
tree.size = function(x) {
if (!arguments.length) return nodeSize ? null : size;
nodeSize = (size = x) == null;
return tree;
};
tree.nodeSize = function(x) {
if (!arguments.length) return nodeSize ? size : null;
nodeSize = (size = x) != null;
return tree;
};
return d3_layout_hierarchyRebind(tree, hierarchy);
};
function d3_layout_treeSeparation(a, b) {
return a.parent == b.parent ? 1 : 2;
}
function d3_layout_treeLeft(node) {
var children = node.children;
return children && children.length ? children[0] : node._tree.thread;
}
function d3_layout_treeRight(node) {
var children = node.children, n;
return children && (n = children.length) ? children[n - 1] : node._tree.thread;
}
function d3_layout_treeSearch(node, compare) {
var children = node.children;
if (children && (n = children.length)) {
var child, n, i = -1;
while (++i < n) {
if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
node = child;
}
}
}
return node;
}
function d3_layout_treeRightmost(a, b) {
return a.x - b.x;
}
function d3_layout_treeLeftmost(a, b) {
return b.x - a.x;
}
function d3_layout_treeDeepest(a, b) {
return a.depth - b.depth;
}
function d3_layout_treeVisitAfter(node, callback) {
function visit(node, previousSibling) {
var children = node.children;
if (children && (n = children.length)) {
var child, previousChild = null, i = -1, n;
while (++i < n) {
child = children[i];
visit(child, previousChild);
previousChild = child;
}
}
callback(node, previousSibling);
}
visit(node, null);
}
function d3_layout_treeShift(node) {
var shift = 0, change = 0, children = node.children, i = children.length, child;
while (--i >= 0) {
child = children[i]._tree;
child.prelim += shift;
child.mod += shift;
shift += child.shift + (change += child.change);
}
}
function d3_layout_treeMove(ancestor, node, shift) {
ancestor = ancestor._tree;
node = node._tree;
var change = shift / (node.number - ancestor.number);
ancestor.change += change;
node.change -= change;
node.shift += shift;
node.prelim += shift;
node.mod += shift;
}
function d3_layout_treeAncestor(vim, node, ancestor) {
return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
}
d3.layout.pack = function() {
var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;
function pack(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() {
return radius;
};
root.x = root.y = 0;
d3_layout_treeVisitAfter(root, function(d) {
d.r = +r(d.value);
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
if (padding) {
var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;
d3_layout_treeVisitAfter(root, function(d) {
d.r += dr;
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
d3_layout_treeVisitAfter(root, function(d) {
d.r -= dr;
});
}
d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));
return nodes;
}
pack.size = function(_) {
if (!arguments.length) return size;
size = _;
return pack;
};
pack.radius = function(_) {
if (!arguments.length) return radius;
radius = _ == null || typeof _ === "function" ? _ : +_;
return pack;
};
pack.padding = function(_) {
if (!arguments.length) return padding;
padding = +_;
return pack;
};
return d3_layout_hierarchyRebind(pack, hierarchy);
};
function d3_layout_packSort(a, b) {
return a.value - b.value;
}
function d3_layout_packInsert(a, b) {
var c = a._pack_next;
a._pack_next = b;
b._pack_prev = a;
b._pack_next = c;
c._pack_prev = b;
}
function d3_layout_packSplice(a, b) {
a._pack_next = b;
b._pack_prev = a;
}
function d3_layout_packIntersects(a, b) {
var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
return .999 * dr * dr > dx * dx + dy * dy;
}
function d3_layout_packSiblings(node) {
if (!(nodes = node.children) || !(n = nodes.length)) return;
var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
function bound(node) {
xMin = Math.min(node.x - node.r, xMin);
xMax = Math.max(node.x + node.r, xMax);
yMin = Math.min(node.y - node.r, yMin);
yMax = Math.max(node.y + node.r, yMax);
}
nodes.forEach(d3_layout_packLink);
a = nodes[0];
a.x = -a.r;
a.y = 0;
bound(a);
if (n > 1) {
b = nodes[1];
b.x = b.r;
b.y = 0;
bound(b);
if (n > 2) {
c = nodes[2];
d3_layout_packPlace(a, b, c);
bound(c);
d3_layout_packInsert(a, c);
a._pack_prev = c;
d3_layout_packInsert(c, b);
b = a._pack_next;
for (i = 3; i < n; i++) {
d3_layout_packPlace(a, b, c = nodes[i]);
var isect = 0, s1 = 1, s2 = 1;
for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
if (d3_layout_packIntersects(j, c)) {
isect = 1;
break;
}
}
if (isect == 1) {
for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
if (d3_layout_packIntersects(k, c)) {
break;
}
}
}
if (isect) {
if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
i--;
} else {
d3_layout_packInsert(a, c);
b = c;
bound(c);
}
}
}
}
var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
for (i = 0; i < n; i++) {
c = nodes[i];
c.x -= cx;
c.y -= cy;
cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
}
node.r = cr;
nodes.forEach(d3_layout_packUnlink);
}
function d3_layout_packLink(node) {
node._pack_next = node._pack_prev = node;
}
function d3_layout_packUnlink(node) {
delete node._pack_next;
delete node._pack_prev;
}
function d3_layout_packTransform(node, x, y, k) {
var children = node.children;
node.x = x += k * node.x;
node.y = y += k * node.y;
node.r *= k;
if (children) {
var i = -1, n = children.length;
while (++i < n) d3_layout_packTransform(children[i], x, y, k);
}
}
function d3_layout_packPlace(a, b, c) {
var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
if (db && (dx || dy)) {
var da = b.r + c.r, dc = dx * dx + dy * dy;
da *= da;
db *= db;
var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
c.x = a.x + x * dx + y * dy;
c.y = a.y + x * dy - y * dx;
} else {
c.x = a.x + db;
c.y = a.y;
}
}
d3.layout.cluster = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;
function cluster(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;
d3_layout_treeVisitAfter(root, function(node) {
var children = node.children;
if (children && children.length) {
node.x = d3_layout_clusterX(children);
node.y = d3_layout_clusterY(children);
} else {
node.x = previousNode ? x += separation(node, previousNode) : 0;
node.y = 0;
previousNode = node;
}
});
var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
d3_layout_treeVisitAfter(root, nodeSize ? function(node) {
node.x = (node.x - root.x) * size[0];
node.y = (root.y - node.y) * size[1];
} : function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
});
return nodes;
}
cluster.separation = function(x) {
if (!arguments.length) return separation;
separation = x;
return cluster;
};
cluster.size = function(x) {
if (!arguments.length) return nodeSize ? null : size;
nodeSize = (size = x) == null;
return cluster;
};
cluster.nodeSize = function(x) {
if (!arguments.length) return nodeSize ? size : null;
nodeSize = (size = x) != null;
return cluster;
};
return d3_layout_hierarchyRebind(cluster, hierarchy);
};
function d3_layout_clusterY(children) {
return 1 + d3.max(children, function(child) {
return child.y;
});
}
function d3_layout_clusterX(children) {
return children.reduce(function(x, child) {
return x + child.x;
}, 0) / children.length;
}
function d3_layout_clusterLeft(node) {
var children = node.children;
return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
}
function d3_layout_clusterRight(node) {
var children = node.children, n;
return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
}
d3.layout.treemap = function() {
var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5));
function scale(children, k) {
var i = -1, n = children.length, child, area;
while (++i < n) {
area = (child = children[i]).value * (k < 0 ? 0 : k);
child.area = isNaN(area) || area <= 0 ? 0 : area;
}
}
function squarify(node) {
var children = node.children;
if (children && children.length) {
var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;
scale(remaining, rect.dx * rect.dy / node.value);
row.area = 0;
while ((n = remaining.length) > 0) {
row.push(child = remaining[n - 1]);
row.area += child.area;
if (mode !== "squarify" || (score = worst(row, u)) <= best) {
remaining.pop();
best = score;
} else {
row.area -= row.pop().area;
position(row, u, rect, false);
u = Math.min(rect.dx, rect.dy);
row.length = row.area = 0;
best = Infinity;
}
}
if (row.length) {
position(row, u, rect, true);
row.length = row.area = 0;
}
children.forEach(squarify);
}
}
function stickify(node) {
var children = node.children;
if (children && children.length) {
var rect = pad(node), remaining = children.slice(), child, row = [];
scale(remaining, rect.dx * rect.dy / node.value);
row.area = 0;
while (child = remaining.pop()) {
row.push(child);
row.area += child.area;
if (child.z != null) {
position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
row.length = row.area = 0;
}
}
children.forEach(stickify);
}
}
function worst(row, u) {
var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;
while (++i < n) {
if (!(r = row[i].area)) continue;
if (r < rmin) rmin = r;
if (r > rmax) rmax = r;
}
s *= s;
u *= u;
return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;
}
function position(row, u, rect, flush) {
var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;
if (u == rect.dx) {
if (flush || v > rect.dy) v = rect.dy;
while (++i < n) {
o = row[i];
o.x = x;
o.y = y;
o.dy = v;
x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);
}
o.z = true;
o.dx += rect.x + rect.dx - x;
rect.y += v;
rect.dy -= v;
} else {
if (flush || v > rect.dx) v = rect.dx;
while (++i < n) {
o = row[i];
o.x = x;
o.y = y;
o.dx = v;
y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);
}
o.z = false;
o.dy += rect.y + rect.dy - y;
rect.x += v;
rect.dx -= v;
}
}
function treemap(d) {
var nodes = stickies || hierarchy(d), root = nodes[0];
root.x = 0;
root.y = 0;
root.dx = size[0];
root.dy = size[1];
if (stickies) hierarchy.revalue(root);
scale([ root ], root.dx * root.dy / root.value);
(stickies ? stickify : squarify)(root);
if (sticky) stickies = nodes;
return nodes;
}
treemap.size = function(x) {
if (!arguments.length) return size;
size = x;
return treemap;
};
treemap.padding = function(x) {
if (!arguments.length) return padding;
function padFunction(node) {
var p = x.call(treemap, node, node.depth);
return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p);
}
function padConstant(node) {
return d3_layout_treemapPad(node, x);
}
var type;
pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ],
padConstant) : padConstant;
return treemap;
};
treemap.round = function(x) {
if (!arguments.length) return round != Number;
round = x ? Math.round : Number;
return treemap;
};
treemap.sticky = function(x) {
if (!arguments.length) return sticky;
sticky = x;
stickies = null;
return treemap;
};
treemap.ratio = function(x) {
if (!arguments.length) return ratio;
ratio = x;
return treemap;
};
treemap.mode = function(x) {
if (!arguments.length) return mode;
mode = x + "";
return treemap;
};
return d3_layout_hierarchyRebind(treemap, hierarchy);
};
function d3_layout_treemapPadNull(node) {
return {
x: node.x,
y: node.y,
dx: node.dx,
dy: node.dy
};
}
function d3_layout_treemapPad(node, padding) {
var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
if (dx < 0) {
x += dx / 2;
dx = 0;
}
if (dy < 0) {
y += dy / 2;
dy = 0;
}
return {
x: x,
y: y,
dx: dx,
dy: dy
};
}
d3.random = {
normal: function(µ, σ) {
var n = arguments.length;
if (n < 2) σ = 1;
if (n < 1) µ = 0;
return function() {
var x, y, r;
do {
x = Math.random() * 2 - 1;
y = Math.random() * 2 - 1;
r = x * x + y * y;
} while (!r || r > 1);
return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
};
},
logNormal: function() {
var random = d3.random.normal.apply(d3, arguments);
return function() {
return Math.exp(random());
};
},
irwinHall: function(m) {
return function() {
for (var s = 0, j = 0; j < m; j++) s += Math.random();
return s / m;
};
}
};
d3.scale = {};
function d3_scaleExtent(domain) {
var start = domain[0], stop = domain[domain.length - 1];
return start < stop ? [ start, stop ] : [ stop, start ];
}
function d3_scaleRange(scale) {
return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
}
function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
return function(x) {
return i(u(x));
};
}
function d3_scale_nice(domain, nice) {
var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
if (x1 < x0) {
dx = i0, i0 = i1, i1 = dx;
dx = x0, x0 = x1, x1 = dx;
}
domain[i0] = nice.floor(x0);
domain[i1] = nice.ceil(x1);
return domain;
}
function d3_scale_niceStep(step) {
return step ? {
floor: function(x) {
return Math.floor(x / step) * step;
},
ceil: function(x) {
return Math.ceil(x / step) * step;
}
} : d3_scale_niceIdentity;
}
var d3_scale_niceIdentity = {
floor: d3_identity,
ceil: d3_identity
};
function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
if (domain[k] < domain[0]) {
domain = domain.slice().reverse();
range = range.slice().reverse();
}
while (++j <= k) {
u.push(uninterpolate(domain[j - 1], domain[j]));
i.push(interpolate(range[j - 1], range[j]));
}
return function(x) {
var j = d3.bisect(domain, x, 1, k) - 1;
return i[j](u[j](x));
};
}
d3.scale.linear = function() {
return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);
};
function d3_scale_linear(domain, range, interpolate, clamp) {
var output, input;
function rescale() {
var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
output = linear(domain, range, uninterpolate, interpolate);
input = linear(range, domain, uninterpolate, d3_interpolate);
return scale;
}
function scale(x) {
return output(x);
}
scale.invert = function(y) {
return input(y);
};
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x.map(Number);
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.rangeRound = function(x) {
return scale.range(x).interpolate(d3_interpolateRound);
};
scale.clamp = function(x) {
if (!arguments.length) return clamp;
clamp = x;
return rescale();
};
scale.interpolate = function(x) {
if (!arguments.length) return interpolate;
interpolate = x;
return rescale();
};
scale.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
scale.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
scale.nice = function(m) {
d3_scale_linearNice(domain, m);
return rescale();
};
scale.copy = function() {
return d3_scale_linear(domain, range, interpolate, clamp);
};
return rescale();
}
function d3_scale_linearRebind(scale, linear) {
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
}
function d3_scale_linearNice(domain, m) {
return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));
}
function d3_scale_linearTickRange(domain, m) {
if (m == null) m = 10;
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
extent[0] = Math.ceil(extent[0] / step) * step;
extent[1] = Math.floor(extent[1] / step) * step + step * .5;
extent[2] = step;
return extent;
}
function d3_scale_linearTicks(domain, m) {
return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
}
function d3_scale_linearTickFormat(domain, m, format) {
var range = d3_scale_linearTickRange(domain, m);
return d3.format(format ? format.replace(d3_format_re, function(a, b, c, d, e, f, g, h, i, j) {
return [ b, c, d, e, f, g, h, i || "." + d3_scale_linearFormatPrecision(j, range), j ].join("");
}) : ",." + d3_scale_linearPrecision(range[2]) + "f");
}
var d3_scale_linearFormatSignificant = {
s: 1,
g: 1,
p: 1,
r: 1,
e: 1
};
function d3_scale_linearPrecision(value) {
return -Math.floor(Math.log(value) / Math.LN10 + .01);
}
function d3_scale_linearFormatPrecision(type, range) {
var p = d3_scale_linearPrecision(range[2]);
return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(Math.abs(range[0]), Math.abs(range[1])))) + +(type !== "e") : p - (type === "%") * 2;
}
d3.scale.log = function() {
return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);
};
function d3_scale_log(linear, base, positive, domain) {
function log(x) {
return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);
}
function pow(x) {
return positive ? Math.pow(base, x) : -Math.pow(base, -x);
}
function scale(x) {
return linear(log(x));
}
scale.invert = function(x) {
return pow(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return domain;
positive = x[0] >= 0;
linear.domain((domain = x.map(Number)).map(log));
return scale;
};
scale.base = function(_) {
if (!arguments.length) return base;
base = +_;
linear.domain(domain.map(log));
return scale;
};
scale.nice = function() {
var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);
linear.domain(niced);
domain = niced.map(pow);
return scale;
};
scale.ticks = function() {
var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;
if (isFinite(j - i)) {
if (positive) {
for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);
ticks.push(pow(i));
} else {
ticks.push(pow(i));
for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);
}
for (i = 0; ticks[i] < u; i++) {}
for (j = ticks.length; ticks[j - 1] > v; j--) {}
ticks = ticks.slice(i, j);
}
return ticks;
};
scale.tickFormat = function(n, format) {
if (!arguments.length) return d3_scale_logFormat;
if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format);
var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12,
Math.floor), e;
return function(d) {
return d / pow(f(log(d) + e)) <= k ? format(d) : "";
};
};
scale.copy = function() {
return d3_scale_log(linear.copy(), base, positive, domain);
};
return d3_scale_linearRebind(scale, linear);
}
var d3_scale_logFormat = d3.format(".0e"), d3_scale_logNiceNegative = {
floor: function(x) {
return -Math.ceil(-x);
},
ceil: function(x) {
return -Math.floor(-x);
}
};
d3.scale.pow = function() {
return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);
};
function d3_scale_pow(linear, exponent, domain) {
var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
function scale(x) {
return linear(powp(x));
}
scale.invert = function(x) {
return powb(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return domain;
linear.domain((domain = x.map(Number)).map(powp));
return scale;
};
scale.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
scale.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
scale.nice = function(m) {
return scale.domain(d3_scale_linearNice(domain, m));
};
scale.exponent = function(x) {
if (!arguments.length) return exponent;
powp = d3_scale_powPow(exponent = x);
powb = d3_scale_powPow(1 / exponent);
linear.domain(domain.map(powp));
return scale;
};
scale.copy = function() {
return d3_scale_pow(linear.copy(), exponent, domain);
};
return d3_scale_linearRebind(scale, linear);
}
function d3_scale_powPow(e) {
return function(x) {
return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
};
}
d3.scale.sqrt = function() {
return d3.scale.pow().exponent(.5);
};
d3.scale.ordinal = function() {
return d3_scale_ordinal([], {
t: "range",
a: [ [] ]
});
};
function d3_scale_ordinal(domain, ranger) {
var index, range, rangeBand;
function scale(x) {
return range[((index.get(x) || ranger.t === "range" && index.set(x, domain.push(x))) - 1) % range.length];
}
function steps(start, step) {
return d3.range(domain.length).map(function(i) {
return start + step * i;
});
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = [];
index = new d3_Map();
var i = -1, n = x.length, xi;
while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
return scale[ranger.t].apply(scale, ranger.a);
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
rangeBand = 0;
ranger = {
t: "range",
a: arguments
};
return scale;
};
scale.rangePoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
rangeBand = 0;
ranger = {
t: "rangePoints",
a: arguments
};
return scale;
};
scale.rangeBands = function(x, padding, outerPadding) {
if (arguments.length < 2) padding = 0;
if (arguments.length < 3) outerPadding = padding;
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
range = steps(start + step * outerPadding, step);
if (reverse) range.reverse();
rangeBand = step * (1 - padding);
ranger = {
t: "rangeBands",
a: arguments
};
return scale;
};
scale.rangeRoundBands = function(x, padding, outerPadding) {
if (arguments.length < 2) padding = 0;
if (arguments.length < 3) outerPadding = padding;
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step;
range = steps(start + Math.round(error / 2), step);
if (reverse) range.reverse();
rangeBand = Math.round(step * (1 - padding));
ranger = {
t: "rangeRoundBands",
a: arguments
};
return scale;
};
scale.rangeBand = function() {
return rangeBand;
};
scale.rangeExtent = function() {
return d3_scaleExtent(ranger.a[0]);
};
scale.copy = function() {
return d3_scale_ordinal(domain, ranger);
};
return scale.domain(domain);
}
d3.scale.category10 = function() {
return d3.scale.ordinal().range(d3_category10);
};
d3.scale.category20 = function() {
return d3.scale.ordinal().range(d3_category20);
};
d3.scale.category20b = function() {
return d3.scale.ordinal().range(d3_category20b);
};
d3.scale.category20c = function() {
return d3.scale.ordinal().range(d3_category20c);
};
var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);
var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);
var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);
var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);
d3.scale.quantile = function() {
return d3_scale_quantile([], []);
};
function d3_scale_quantile(domain, range) {
var thresholds;
function rescale() {
var k = 0, q = range.length;
thresholds = [];
while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
return scale;
}
function scale(x) {
if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x.filter(function(d) {
return !isNaN(d);
}).sort(d3.ascending);
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.quantiles = function() {
return thresholds;
};
scale.invertExtent = function(y) {
y = range.indexOf(y);
return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];
};
scale.copy = function() {
return d3_scale_quantile(domain, range);
};
return rescale();
}
d3.scale.quantize = function() {
return d3_scale_quantize(0, 1, [ 0, 1 ]);
};
function d3_scale_quantize(x0, x1, range) {
var kx, i;
function scale(x) {
return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
}
function rescale() {
kx = range.length / (x1 - x0);
i = range.length - 1;
return scale;
}
scale.domain = function(x) {
if (!arguments.length) return [ x0, x1 ];
x0 = +x[0];
x1 = +x[x.length - 1];
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.invertExtent = function(y) {
y = range.indexOf(y);
y = y < 0 ? NaN : y / kx + x0;
return [ y, y + 1 / kx ];
};
scale.copy = function() {
return d3_scale_quantize(x0, x1, range);
};
return rescale();
}
d3.scale.threshold = function() {
return d3_scale_threshold([ .5 ], [ 0, 1 ]);
};
function d3_scale_threshold(domain, range) {
function scale(x) {
if (x <= x) return range[d3.bisect(domain, x)];
}
scale.domain = function(_) {
if (!arguments.length) return domain;
domain = _;
return scale;
};
scale.range = function(_) {
if (!arguments.length) return range;
range = _;
return scale;
};
scale.invertExtent = function(y) {
y = range.indexOf(y);
return [ domain[y - 1], domain[y] ];
};
scale.copy = function() {
return d3_scale_threshold(domain, range);
};
return scale;
}
d3.scale.identity = function() {
return d3_scale_identity([ 0, 1 ]);
};
function d3_scale_identity(domain) {
function identity(x) {
return +x;
}
identity.invert = identity;
identity.domain = identity.range = function(x) {
if (!arguments.length) return domain;
domain = x.map(identity);
return identity;
};
identity.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
identity.tickFormat = function(m, format) {
return d3_scale_linearTickFormat(domain, m, format);
};
identity.copy = function() {
return d3_scale_identity(domain);
};
return identity;
}
d3.svg = {};
d3.svg.arc = function() {
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
function arc() {
var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0,
a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1);
return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z";
}
arc.innerRadius = function(v) {
if (!arguments.length) return innerRadius;
innerRadius = d3_functor(v);
return arc;
};
arc.outerRadius = function(v) {
if (!arguments.length) return outerRadius;
outerRadius = d3_functor(v);
return arc;
};
arc.startAngle = function(v) {
if (!arguments.length) return startAngle;
startAngle = d3_functor(v);
return arc;
};
arc.endAngle = function(v) {
if (!arguments.length) return endAngle;
endAngle = d3_functor(v);
return arc;
};
arc.centroid = function() {
var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
return [ Math.cos(a) * r, Math.sin(a) * r ];
};
return arc;
};
var d3_svg_arcOffset = -halfπ, d3_svg_arcMax = τ - ε;
function d3_svg_arcInnerRadius(d) {
return d.innerRadius;
}
function d3_svg_arcOuterRadius(d) {
return d.outerRadius;
}
function d3_svg_arcStartAngle(d) {
return d.startAngle;
}
function d3_svg_arcEndAngle(d) {
return d.endAngle;
}
function d3_svg_line(projection) {
var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
function line(data) {
var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
function segment() {
segments.push("M", interpolate(projection(points), tension));
}
while (++i < n) {
if (defined.call(this, d = data[i], i)) {
points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
} else if (points.length) {
segment();
points = [];
}
}
if (points.length) segment();
return segments.length ? segments.join("") : null;
}
line.x = function(_) {
if (!arguments.length) return x;
x = _;
return line;
};
line.y = function(_) {
if (!arguments.length) return y;
y = _;
return line;
};
line.defined = function(_) {
if (!arguments.length) return defined;
defined = _;
return line;
};
line.interpolate = function(_) {
if (!arguments.length) return interpolateKey;
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
return line;
};
line.tension = function(_) {
if (!arguments.length) return tension;
tension = _;
return line;
};
return line;
}
d3.svg.line = function() {
return d3_svg_line(d3_identity);
};
var d3_svg_lineInterpolators = d3.map({
linear: d3_svg_lineLinear,
"linear-closed": d3_svg_lineLinearClosed,
step: d3_svg_lineStep,
"step-before": d3_svg_lineStepBefore,
"step-after": d3_svg_lineStepAfter,
basis: d3_svg_lineBasis,
"basis-open": d3_svg_lineBasisOpen,
"basis-closed": d3_svg_lineBasisClosed,
bundle: d3_svg_lineBundle,
cardinal: d3_svg_lineCardinal,
"cardinal-open": d3_svg_lineCardinalOpen,
"cardinal-closed": d3_svg_lineCardinalClosed,
monotone: d3_svg_lineMonotone
});
d3_svg_lineInterpolators.forEach(function(key, value) {
value.key = key;
value.closed = /-closed$/.test(key);
});
function d3_svg_lineLinear(points) {
return points.join("L");
}
function d3_svg_lineLinearClosed(points) {
return d3_svg_lineLinear(points) + "Z";
}
function d3_svg_lineStep(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]);
if (n > 1) path.push("H", p[0]);
return path.join("");
}
function d3_svg_lineStepBefore(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
return path.join("");
}
function d3_svg_lineStepAfter(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
return path.join("");
}
function d3_svg_lineCardinalOpen(points, tension) {
return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineCardinalClosed(points, tension) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]),
points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
}
function d3_svg_lineCardinal(points, tension) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineHermite(points, tangents) {
if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
return d3_svg_lineLinear(points);
}
var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
if (quad) {
path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
p0 = points[1];
pi = 2;
}
if (tangents.length > 1) {
t = tangents[1];
p = points[pi];
pi++;
path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
for (var i = 2; i < tangents.length; i++, pi++) {
p = points[pi];
t = tangents[i];
path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
}
}
if (quad) {
var lp = points[pi];
path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
}
return path;
}
function d3_svg_lineCardinalTangents(points, tension) {
var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
while (++i < n) {
p0 = p1;
p1 = p2;
p2 = points[i];
tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
}
return tangents;
}
function d3_svg_lineBasis(points) {
if (points.length < 3) return d3_svg_lineLinear(points);
var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0, "L", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
points.push(points[n - 1]);
while (++i <= n) {
pi = points[i];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
points.pop();
path.push("L", pi);
return path.join("");
}
function d3_svg_lineBasisOpen(points) {
if (points.length < 4) return d3_svg_lineLinear(points);
var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
while (++i < 3) {
pi = points[i];
px.push(pi[0]);
py.push(pi[1]);
}
path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
--i;
while (++i < n) {
pi = points[i];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBasisClosed(points) {
var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
while (++i < 4) {
pi = points[i % n];
px.push(pi[0]);
py.push(pi[1]);
}
path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
--i;
while (++i < m) {
pi = points[i % n];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBundle(points, tension) {
var n = points.length - 1;
if (n) {
var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
while (++i <= n) {
p = points[i];
t = i / n;
p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
}
}
return d3_svg_lineBasis(points);
}
function d3_svg_lineDot4(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
}
var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];
function d3_svg_lineBasisBezier(path, x, y) {
path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
}
function d3_svg_lineSlope(p0, p1) {
return (p1[1] - p0[1]) / (p1[0] - p0[0]);
}
function d3_svg_lineFiniteDifferences(points) {
var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
while (++i < j) {
m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
}
m[i] = d;
return m;
}
function d3_svg_lineMonotoneTangents(points) {
var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
while (++i < j) {
d = d3_svg_lineSlope(points[i], points[i + 1]);
if (abs(d) < ε) {
m[i] = m[i + 1] = 0;
} else {
a = m[i] / d;
b = m[i + 1] / d;
s = a * a + b * b;
if (s > 9) {
s = d * 3 / Math.sqrt(s);
m[i] = s * a;
m[i + 1] = s * b;
}
}
}
i = -1;
while (++i <= j) {
s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
tangents.push([ s || 0, m[i] * s || 0 ]);
}
return tangents;
}
function d3_svg_lineMonotone(points) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
}
d3.svg.line.radial = function() {
var line = d3_svg_line(d3_svg_lineRadial);
line.radius = line.x, delete line.x;
line.angle = line.y, delete line.y;
return line;
};
function d3_svg_lineRadial(points) {
var point, i = -1, n = points.length, r, a;
while (++i < n) {
point = points[i];
r = point[0];
a = point[1] + d3_svg_arcOffset;
point[0] = r * Math.cos(a);
point[1] = r * Math.sin(a);
}
return points;
}
function d3_svg_area(projection) {
var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
function area(data) {
var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
return x;
} : d3_functor(x1), fy1 = y0 === y1 ? function() {
return y;
} : d3_functor(y1), x, y;
function segment() {
segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
}
while (++i < n) {
if (defined.call(this, d = data[i], i)) {
points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
} else if (points0.length) {
segment();
points0 = [];
points1 = [];
}
}
if (points0.length) segment();
return segments.length ? segments.join("") : null;
}
area.x = function(_) {
if (!arguments.length) return x1;
x0 = x1 = _;
return area;
};
area.x0 = function(_) {
if (!arguments.length) return x0;
x0 = _;
return area;
};
area.x1 = function(_) {
if (!arguments.length) return x1;
x1 = _;
return area;
};
area.y = function(_) {
if (!arguments.length) return y1;
y0 = y1 = _;
return area;
};
area.y0 = function(_) {
if (!arguments.length) return y0;
y0 = _;
return area;
};
area.y1 = function(_) {
if (!arguments.length) return y1;
y1 = _;
return area;
};
area.defined = function(_) {
if (!arguments.length) return defined;
defined = _;
return area;
};
area.interpolate = function(_) {
if (!arguments.length) return interpolateKey;
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
interpolateReverse = interpolate.reverse || interpolate;
L = interpolate.closed ? "M" : "L";
return area;
};
area.tension = function(_) {
if (!arguments.length) return tension;
tension = _;
return area;
};
return area;
}
d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
d3.svg.area = function() {
return d3_svg_area(d3_identity);
};
d3.svg.area.radial = function() {
var area = d3_svg_area(d3_svg_lineRadial);
area.radius = area.x, delete area.x;
area.innerRadius = area.x0, delete area.x0;
area.outerRadius = area.x1, delete area.x1;
area.angle = area.y, delete area.y;
area.startAngle = area.y0, delete area.y0;
area.endAngle = area.y1, delete area.y1;
return area;
};
d3.svg.chord = function() {
var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
function chord(d, i) {
var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);
return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
}
function subgroup(self, f, d, i) {
var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset;
return {
r: r,
a0: a0,
a1: a1,
p0: [ r * Math.cos(a0), r * Math.sin(a0) ],
p1: [ r * Math.cos(a1), r * Math.sin(a1) ]
};
}
function equals(a, b) {
return a.a0 == b.a0 && a.a1 == b.a1;
}
function arc(r, p, a) {
return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p;
}
function curve(r0, p0, r1, p1) {
return "Q 0,0 " + p1;
}
chord.radius = function(v) {
if (!arguments.length) return radius;
radius = d3_functor(v);
return chord;
};
chord.source = function(v) {
if (!arguments.length) return source;
source = d3_functor(v);
return chord;
};
chord.target = function(v) {
if (!arguments.length) return target;
target = d3_functor(v);
return chord;
};
chord.startAngle = function(v) {
if (!arguments.length) return startAngle;
startAngle = d3_functor(v);
return chord;
};
chord.endAngle = function(v) {
if (!arguments.length) return endAngle;
endAngle = d3_functor(v);
return chord;
};
return chord;
};
function d3_svg_chordRadius(d) {
return d.radius;
}
d3.svg.diagonal = function() {
var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;
function diagonal(d, i) {
var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
x: p0.x,
y: m
}, {
x: p3.x,
y: m
}, p3 ];
p = p.map(projection);
return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
}
diagonal.source = function(x) {
if (!arguments.length) return source;
source = d3_functor(x);
return diagonal;
};
diagonal.target = function(x) {
if (!arguments.length) return target;
target = d3_functor(x);
return diagonal;
};
diagonal.projection = function(x) {
if (!arguments.length) return projection;
projection = x;
return diagonal;
};
return diagonal;
};
function d3_svg_diagonalProjection(d) {
return [ d.x, d.y ];
}
d3.svg.diagonal.radial = function() {
var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;
diagonal.projection = function(x) {
return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;
};
return diagonal;
};
function d3_svg_diagonalRadialProjection(projection) {
return function() {
var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset;
return [ r * Math.cos(a), r * Math.sin(a) ];
};
}
d3.svg.symbol = function() {
var type = d3_svg_symbolType, size = d3_svg_symbolSize;
function symbol(d, i) {
return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));
}
symbol.type = function(x) {
if (!arguments.length) return type;
type = d3_functor(x);
return symbol;
};
symbol.size = function(x) {
if (!arguments.length) return size;
size = d3_functor(x);
return symbol;
};
return symbol;
};
function d3_svg_symbolSize() {
return 64;
}
function d3_svg_symbolType() {
return "circle";
}
function d3_svg_symbolCircle(size) {
var r = Math.sqrt(size / π);
return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
}
var d3_svg_symbols = d3.map({
circle: d3_svg_symbolCircle,
cross: function(size) {
var r = Math.sqrt(size / 5) / 2;
return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z";
},
diamond: function(size) {
var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;
return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z";
},
square: function(size) {
var r = Math.sqrt(size) / 2;
return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z";
},
"triangle-down": function(size) {
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z";
},
"triangle-up": function(size) {
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z";
}
});
d3.svg.symbolTypes = d3_svg_symbols.keys();
var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
function d3_transition(groups, id) {
d3_subclass(groups, d3_transitionPrototype);
groups.id = id;
return groups;
}
var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;
d3_transitionPrototype.call = d3_selectionPrototype.call;
d3_transitionPrototype.empty = d3_selectionPrototype.empty;
d3_transitionPrototype.node = d3_selectionPrototype.node;
d3_transitionPrototype.size = d3_selectionPrototype.size;
d3.transition = function(selection) {
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
};
d3.transition.prototype = d3_transitionPrototype;
d3_transitionPrototype.select = function(selector) {
var id = this.id, subgroups = [], subgroup, subnode, node;
selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
d3_transitionNode(subnode, i, id, node.__transition__[id]);
subgroup.push(subnode);
} else {
subgroup.push(null);
}
}
}
return d3_transition(subgroups, id);
};
d3_transitionPrototype.selectAll = function(selector) {
var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition;
selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
transition = node.__transition__[id];
subnodes = selector.call(node, node.__data__, i, j);
subgroups.push(subgroup = []);
for (var k = -1, o = subnodes.length; ++k < o; ) {
if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition);
subgroup.push(subnode);
}
}
}
}
return d3_transition(subgroups, id);
};
d3_transitionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
subgroup.push(node);
}
}
}
return d3_transition(subgroups, this.id);
};
d3_transitionPrototype.tween = function(name, tween) {
var id = this.id;
if (arguments.length < 2) return this.node().__transition__[id].tween.get(name);
return d3_selection_each(this, tween == null ? function(node) {
node.__transition__[id].tween.remove(name);
} : function(node) {
node.__transition__[id].tween.set(name, tween);
});
};
function d3_transition_tween(groups, name, value, tween) {
var id = groups.id;
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
} : (value = tween(value), function(node) {
node.__transition__[id].tween.set(name, value);
}));
}
d3_transitionPrototype.attr = function(nameNS, value) {
if (arguments.length < 2) {
for (value in nameNS) this.attr(value, nameNS[value]);
return this;
}
var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
function attrTween(b) {
return b == null ? attrNull : (b += "", function() {
var a = this.getAttribute(name), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.setAttribute(name, i(t));
});
});
}
function attrTweenNS(b) {
return b == null ? attrNullNS : (b += "", function() {
var a = this.getAttributeNS(name.space, name.local), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.setAttributeNS(name.space, name.local, i(t));
});
});
}
return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween);
};
d3_transitionPrototype.attrTween = function(nameNS, tween) {
var name = d3.ns.qualify(nameNS);
function attrTween(d, i) {
var f = tween.call(this, d, i, this.getAttribute(name));
return f && function(t) {
this.setAttribute(name, f(t));
};
}
function attrTweenNS(d, i) {
var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
return f && function(t) {
this.setAttributeNS(name.space, name.local, f(t));
};
}
return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
};
d3_transitionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.style(priority, name[priority], value);
return this;
}
priority = "";
}
function styleNull() {
this.style.removeProperty(name);
}
function styleString(b) {
return b == null ? styleNull : (b += "", function() {
var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i;
return a !== b && (i = d3_interpolate(a, b), function(t) {
this.style.setProperty(name, i(t), priority);
});
});
}
return d3_transition_tween(this, "style." + name, value, styleString);
};
d3_transitionPrototype.styleTween = function(name, tween, priority) {
if (arguments.length < 3) priority = "";
function styleTween(d, i) {
var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name));
return f && function(t) {
this.style.setProperty(name, f(t), priority);
};
}
return this.tween("style." + name, styleTween);
};
d3_transitionPrototype.text = function(value) {
return d3_transition_tween(this, "text", value, d3_transition_text);
};
function d3_transition_text(b) {
if (b == null) b = "";
return function() {
this.textContent = b;
};
}
d3_transitionPrototype.remove = function() {
return this.each("end.transition", function() {
var p;
if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this);
});
};
d3_transitionPrototype.ease = function(value) {
var id = this.id;
if (arguments.length < 1) return this.node().__transition__[id].ease;
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
return d3_selection_each(this, function(node) {
node.__transition__[id].ease = value;
});
};
d3_transitionPrototype.delay = function(value) {
var id = this.id;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].delay = +value.call(node, node.__data__, i, j);
} : (value = +value, function(node) {
node.__transition__[id].delay = value;
}));
};
d3_transitionPrototype.duration = function(value) {
var id = this.id;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j));
} : (value = Math.max(1, value), function(node) {
node.__transition__[id].duration = value;
}));
};
d3_transitionPrototype.each = function(type, listener) {
var id = this.id;
if (arguments.length < 2) {
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
d3_transitionInheritId = id;
d3_selection_each(this, function(node, i, j) {
d3_transitionInherit = node.__transition__[id];
type.call(node, node.__data__, i, j);
});
d3_transitionInherit = inherit;
d3_transitionInheritId = inheritId;
} else {
d3_selection_each(this, function(node) {
var transition = node.__transition__[id];
(transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener);
});
}
return this;
};
d3_transitionPrototype.transition = function() {
var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition;
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if (node = group[i]) {
transition = Object.create(node.__transition__[id0]);
transition.delay += transition.duration;
d3_transitionNode(node, i, id1, transition);
}
subgroup.push(node);
}
}
return d3_transition(subgroups, id1);
};
function d3_transitionNode(node, i, id, inherit) {
var lock = node.__transition__ || (node.__transition__ = {
active: 0,
count: 0
}), transition = lock[id];
if (!transition) {
var time = inherit.time;
transition = lock[id] = {
tween: new d3_Map(),
time: time,
ease: inherit.ease,
delay: inherit.delay,
duration: inherit.duration
};
++lock.count;
d3.timer(function(elapsed) {
var d = node.__data__, ease = transition.ease, delay = transition.delay, duration = transition.duration, timer = d3_timer_active, tweened = [];
timer.t = delay + time;
if (delay <= elapsed) return start(elapsed - delay);
timer.c = start;
function start(elapsed) {
if (lock.active > id) return stop();
lock.active = id;
transition.event && transition.event.start.call(node, d, i);
transition.tween.forEach(function(key, value) {
if (value = value.call(node, d, i)) {
tweened.push(value);
}
});
d3.timer(function() {
timer.c = tick(elapsed || 1) ? d3_true : tick;
return 1;
}, 0, time);
}
function tick(elapsed) {
if (lock.active !== id) return stop();
var t = elapsed / duration, e = ease(t), n = tweened.length;
while (n > 0) {
tweened[--n].call(node, e);
}
if (t >= 1) {
transition.event && transition.event.end.call(node, d, i);
return stop();
}
}
function stop() {
if (--lock.count) delete lock[id]; else delete node.__transition__;
return 1;
}
}, 0, time);
}
}
d3.svg.axis = function() {
var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;
function axis(g) {
g.each(function() {
var g = d3.select(this);
var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();
var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform;
var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
d3.transition(path));
tickEnter.append("line");
tickEnter.append("text");
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text");
switch (orient) {
case "bottom":
{
tickTransform = d3_svg_axisX;
lineEnter.attr("y2", innerTickSize);
textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding);
lineUpdate.attr("x2", 0).attr("y2", innerTickSize);
textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding);
text.attr("dy", ".71em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize);
break;
}
case "top":
{
tickTransform = d3_svg_axisX;
lineEnter.attr("y2", -innerTickSize);
textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
lineUpdate.attr("x2", 0).attr("y2", -innerTickSize);
textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding));
text.attr("dy", "0em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize);
break;
}
case "left":
{
tickTransform = d3_svg_axisY;
lineEnter.attr("x2", -innerTickSize);
textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding));
lineUpdate.attr("x2", -innerTickSize).attr("y2", 0);
textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0);
text.attr("dy", ".32em").style("text-anchor", "end");
pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize);
break;
}
case "right":
{
tickTransform = d3_svg_axisY;
lineEnter.attr("x2", innerTickSize);
textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding);
lineUpdate.attr("x2", innerTickSize).attr("y2", 0);
textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0);
text.attr("dy", ".32em").style("text-anchor", "start");
pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize);
break;
}
}
if (scale1.rangeBand) {
var x = scale1, dx = x.rangeBand() / 2;
scale0 = scale1 = function(d) {
return x(d) + dx;
};
} else if (scale0.rangeBand) {
scale0 = scale1;
} else {
tickExit.call(tickTransform, scale1);
}
tickEnter.call(tickTransform, scale0);
tickUpdate.call(tickTransform, scale1);
});
}
axis.scale = function(x) {
if (!arguments.length) return scale;
scale = x;
return axis;
};
axis.orient = function(x) {
if (!arguments.length) return orient;
orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient;
return axis;
};
axis.ticks = function() {
if (!arguments.length) return tickArguments_;
tickArguments_ = arguments;
return axis;
};
axis.tickValues = function(x) {
if (!arguments.length) return tickValues;
tickValues = x;
return axis;
};
axis.tickFormat = function(x) {
if (!arguments.length) return tickFormat_;
tickFormat_ = x;
return axis;
};
axis.tickSize = function(x) {
var n = arguments.length;
if (!n) return innerTickSize;
innerTickSize = +x;
outerTickSize = +arguments[n - 1];
return axis;
};
axis.innerTickSize = function(x) {
if (!arguments.length) return innerTickSize;
innerTickSize = +x;
return axis;
};
axis.outerTickSize = function(x) {
if (!arguments.length) return outerTickSize;
outerTickSize = +x;
return axis;
};
axis.tickPadding = function(x) {
if (!arguments.length) return tickPadding;
tickPadding = +x;
return axis;
};
axis.tickSubdivide = function() {
return arguments.length && axis;
};
return axis;
};
var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = {
top: 1,
right: 1,
bottom: 1,
left: 1
};
function d3_svg_axisX(selection, x) {
selection.attr("transform", function(d) {
return "translate(" + x(d) + ",0)";
});
}
function d3_svg_axisY(selection, y) {
selection.attr("transform", function(d) {
return "translate(0," + y(d) + ")";
});
}
d3.svg.brush = function() {
var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];
function brush(g) {
g.each(function() {
var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
var background = g.selectAll(".background").data([ 0 ]);
background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move");
var resize = g.selectAll(".resize").data(resizes, d3_identity);
resize.exit().remove();
resize.enter().append("g").attr("class", function(d) {
return "resize " + d;
}).style("cursor", function(d) {
return d3_svg_brushCursor[d];
}).append("rect").attr("x", function(d) {
return /[ew]$/.test(d) ? -3 : null;
}).attr("y", function(d) {
return /^[ns]/.test(d) ? -3 : null;
}).attr("width", 6).attr("height", 6).style("visibility", "hidden");
resize.style("display", brush.empty() ? "none" : null);
var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;
if (x) {
range = d3_scaleRange(x);
backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]);
redrawX(gUpdate);
}
if (y) {
range = d3_scaleRange(y);
backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]);
redrawY(gUpdate);
}
redraw(gUpdate);
});
}
brush.event = function(g) {
g.each(function() {
var event_ = event.of(this, arguments), extent1 = {
x: xExtent,
y: yExtent,
i: xExtentDomain,
j: yExtentDomain
}, extent0 = this.__chart__ || extent1;
this.__chart__ = extent1;
if (d3_transitionInheritId) {
d3.select(this).transition().each("start.brush", function() {
xExtentDomain = extent0.i;
yExtentDomain = extent0.j;
xExtent = extent0.x;
yExtent = extent0.y;
event_({
type: "brushstart"
});
}).tween("brush:brush", function() {
var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);
xExtentDomain = yExtentDomain = null;
return function(t) {
xExtent = extent1.x = xi(t);
yExtent = extent1.y = yi(t);
event_({
type: "brush",
mode: "resize"
});
};
}).each("end.brush", function() {
xExtentDomain = extent1.i;
yExtentDomain = extent1.j;
event_({
type: "brush",
mode: "resize"
});
event_({
type: "brushend"
});
});
} else {
event_({
type: "brushstart"
});
event_({
type: "brush",
mode: "resize"
});
event_({
type: "brushend"
});
}
});
};
function redraw(g) {
g.selectAll(".resize").attr("transform", function(d) {
return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")";
});
}
function redrawX(g) {
g.select(".extent").attr("x", xExtent[0]);
g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]);
}
function redrawY(g) {
g.select(".extent").attr("y", yExtent[0]);
g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]);
}
function brushstart() {
var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = d3.mouse(target), offset;
var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup);
if (d3.event.changedTouches) {
w.on("touchmove.brush", brushmove).on("touchend.brush", brushend);
} else {
w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend);
}
g.interrupt().selectAll("*").interrupt();
if (dragging) {
origin[0] = xExtent[0] - origin[0];
origin[1] = yExtent[0] - origin[1];
} else if (resizing) {
var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];
origin[0] = xExtent[ex];
origin[1] = yExtent[ey];
} else if (d3.event.altKey) center = origin.slice();
g.style("pointer-events", "none").selectAll(".resize").style("display", null);
d3.select("body").style("cursor", eventTarget.style("cursor"));
event_({
type: "brushstart"
});
brushmove();
function keydown() {
if (d3.event.keyCode == 32) {
if (!dragging) {
center = null;
origin[0] -= xExtent[1];
origin[1] -= yExtent[1];
dragging = 2;
}
d3_eventPreventDefault();
}
}
function keyup() {
if (d3.event.keyCode == 32 && dragging == 2) {
origin[0] += xExtent[1];
origin[1] += yExtent[1];
dragging = 0;
d3_eventPreventDefault();
}
}
function brushmove() {
var point = d3.mouse(target), moved = false;
if (offset) {
point[0] += offset[0];
point[1] += offset[1];
}
if (!dragging) {
if (d3.event.altKey) {
if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];
origin[0] = xExtent[+(point[0] < center[0])];
origin[1] = yExtent[+(point[1] < center[1])];
} else center = null;
}
if (resizingX && move1(point, x, 0)) {
redrawX(g);
moved = true;
}
if (resizingY && move1(point, y, 1)) {
redrawY(g);
moved = true;
}
if (moved) {
redraw(g);
event_({
type: "brush",
mode: dragging ? "move" : "resize"
});
}
}
function move1(point, scale, i) {
var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;
if (dragging) {
r0 -= position;
r1 -= size + position;
}
min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];
if (dragging) {
max = (min += position) + size;
} else {
if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
if (position < min) {
max = min;
min = position;
} else {
max = position;
}
}
if (extent[0] != min || extent[1] != max) {
if (i) yExtentDomain = null; else xExtentDomain = null;
extent[0] = min;
extent[1] = max;
return true;
}
}
function brushend() {
brushmove();
g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
d3.select("body").style("cursor", null);
w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
dragRestore();
event_({
type: "brushend"
});
}
}
brush.x = function(z) {
if (!arguments.length) return x;
x = z;
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
brush.y = function(z) {
if (!arguments.length) return y;
y = z;
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
brush.clamp = function(z) {
if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;
if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;
return brush;
};
brush.extent = function(z) {
var x0, x1, y0, y1, t;
if (!arguments.length) {
if (x) {
if (xExtentDomain) {
x0 = xExtentDomain[0], x1 = xExtentDomain[1];
} else {
x0 = xExtent[0], x1 = xExtent[1];
if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
if (x1 < x0) t = x0, x0 = x1, x1 = t;
}
}
if (y) {
if (yExtentDomain) {
y0 = yExtentDomain[0], y1 = yExtentDomain[1];
} else {
y0 = yExtent[0], y1 = yExtent[1];
if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
if (y1 < y0) t = y0, y0 = y1, y1 = t;
}
}
return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
}
if (x) {
x0 = z[0], x1 = z[1];
if (y) x0 = x0[0], x1 = x1[0];
xExtentDomain = [ x0, x1 ];
if (x.invert) x0 = x(x0), x1 = x(x1);
if (x1 < x0) t = x0, x0 = x1, x1 = t;
if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];
}
if (y) {
y0 = z[0], y1 = z[1];
if (x) y0 = y0[1], y1 = y1[1];
yExtentDomain = [ y0, y1 ];
if (y.invert) y0 = y(y0), y1 = y(y1);
if (y1 < y0) t = y0, y0 = y1, y1 = t;
if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];
}
return brush;
};
brush.clear = function() {
if (!brush.empty()) {
xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];
xExtentDomain = yExtentDomain = null;
}
return brush;
};
brush.empty = function() {
return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];
};
return d3.rebind(brush, event, "on");
};
var d3_svg_brushCursor = {
n: "ns-resize",
e: "ew-resize",
s: "ns-resize",
w: "ew-resize",
nw: "nwse-resize",
ne: "nesw-resize",
se: "nwse-resize",
sw: "nesw-resize"
};
var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
var d3_time = d3.time = {}, d3_date = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
function d3_date_utc() {
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
}
d3_date_utc.prototype = {
getDate: function() {
return this._.getUTCDate();
},
getDay: function() {
return this._.getUTCDay();
},
getFullYear: function() {
return this._.getUTCFullYear();
},
getHours: function() {
return this._.getUTCHours();
},
getMilliseconds: function() {
return this._.getUTCMilliseconds();
},
getMinutes: function() {
return this._.getUTCMinutes();
},
getMonth: function() {
return this._.getUTCMonth();
},
getSeconds: function() {
return this._.getUTCSeconds();
},
getTime: function() {
return this._.getTime();
},
getTimezoneOffset: function() {
return 0;
},
valueOf: function() {
return this._.valueOf();
},
setDate: function() {
d3_time_prototype.setUTCDate.apply(this._, arguments);
},
setDay: function() {
d3_time_prototype.setUTCDay.apply(this._, arguments);
},
setFullYear: function() {
d3_time_prototype.setUTCFullYear.apply(this._, arguments);
},
setHours: function() {
d3_time_prototype.setUTCHours.apply(this._, arguments);
},
setMilliseconds: function() {
d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);
},
setMinutes: function() {
d3_time_prototype.setUTCMinutes.apply(this._, arguments);
},
setMonth: function() {
d3_time_prototype.setUTCMonth.apply(this._, arguments);
},
setSeconds: function() {
d3_time_prototype.setUTCSeconds.apply(this._, arguments);
},
setTime: function() {
d3_time_prototype.setTime.apply(this._, arguments);
}
};
var d3_time_prototype = Date.prototype;
var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S";
var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
function d3_time_interval(local, step, number) {
function round(date) {
var d0 = local(date), d1 = offset(d0, 1);
return date - d0 < d1 - date ? d0 : d1;
}
function ceil(date) {
step(date = local(new d3_date(date - 1)), 1);
return date;
}
function offset(date, k) {
step(date = new d3_date(+date), k);
return date;
}
function range(t0, t1, dt) {
var time = ceil(t0), times = [];
if (dt > 1) {
while (time < t1) {
if (!(number(time) % dt)) times.push(new Date(+time));
step(time, 1);
}
} else {
while (time < t1) times.push(new Date(+time)), step(time, 1);
}
return times;
}
function range_utc(t0, t1, dt) {
try {
d3_date = d3_date_utc;
var utc = new d3_date_utc();
utc._ = t0;
return range(utc, t1, dt);
} finally {
d3_date = Date;
}
}
local.floor = local;
local.round = round;
local.ceil = ceil;
local.offset = offset;
local.range = range;
var utc = local.utc = d3_time_interval_utc(local);
utc.floor = utc;
utc.round = d3_time_interval_utc(round);
utc.ceil = d3_time_interval_utc(ceil);
utc.offset = d3_time_interval_utc(offset);
utc.range = range_utc;
return local;
}
function d3_time_interval_utc(method) {
return function(date, k) {
try {
d3_date = d3_date_utc;
var utc = new d3_date_utc();
utc._ = date;
return method(utc, k)._;
} finally {
d3_date = Date;
}
};
}
d3_time.year = d3_time_interval(function(date) {
date = d3_time.day(date);
date.setMonth(0, 1);
return date;
}, function(date, offset) {
date.setFullYear(date.getFullYear() + offset);
}, function(date) {
return date.getFullYear();
});
d3_time.years = d3_time.year.range;
d3_time.years.utc = d3_time.year.utc.range;
d3_time.day = d3_time_interval(function(date) {
var day = new d3_date(2e3, 0);
day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
return day;
}, function(date, offset) {
date.setDate(date.getDate() + offset);
}, function(date) {
return date.getDate() - 1;
});
d3_time.days = d3_time.day.range;
d3_time.days.utc = d3_time.day.utc.range;
d3_time.dayOfYear = function(date) {
var year = d3_time.year(date);
return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
};
d3_time_daySymbols.forEach(function(day, i) {
day = day.toLowerCase();
i = 7 - i;
var interval = d3_time[day] = d3_time_interval(function(date) {
(date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
return date;
}, function(date, offset) {
date.setDate(date.getDate() + Math.floor(offset) * 7);
}, function(date) {
var day = d3_time.year(date).getDay();
return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
});
d3_time[day + "s"] = interval.range;
d3_time[day + "s"].utc = interval.utc.range;
d3_time[day + "OfYear"] = function(date) {
var day = d3_time.year(date).getDay();
return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);
};
});
d3_time.week = d3_time.sunday;
d3_time.weeks = d3_time.sunday.range;
d3_time.weeks.utc = d3_time.sunday.utc.range;
d3_time.weekOfYear = d3_time.sundayOfYear;
d3_time.format = d3_time_format;
function d3_time_format(template) {
var n = template.length;
function format(date) {
var string = [], i = -1, j = 0, c, p, f;
while (++i < n) {
if (template.charCodeAt(i) === 37) {
string.push(template.substring(j, i));
if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);
if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p);
string.push(c);
j = i + 1;
}
}
string.push(template.substring(j, i));
return string.join("");
}
format.parse = function(string) {
var d = {
y: 1900,
m: 0,
d: 1,
H: 0,
M: 0,
S: 0,
L: 0,
Z: null
}, i = d3_time_parse(d, template, string, 0);
if (i != string.length) return null;
if ("p" in d) d.H = d.H % 12 + d.p * 12;
var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();
if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) {
date.setFullYear(d.y, 0, 1);
date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);
} else date.setFullYear(d.y, d.m, d.d);
date.setHours(d.H + Math.floor(d.Z / 100), d.M + d.Z % 100, d.S, d.L);
return localZ ? date._ : date;
};
format.toString = function() {
return template;
};
return format;
}
function d3_time_parse(date, template, string, j) {
var c, p, t, i = 0, n = template.length, m = string.length;
while (i < n) {
if (j >= m) return -1;
c = template.charCodeAt(i++);
if (c === 37) {
t = template.charAt(i++);
p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];
if (!p || (j = p(date, string, j)) < 0) return -1;
} else if (c != string.charCodeAt(j++)) {
return -1;
}
}
return j;
}
function d3_time_formatRe(names) {
return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
}
function d3_time_formatLookup(names) {
var map = new d3_Map(), i = -1, n = names.length;
while (++i < n) map.set(names[i].toLowerCase(), i);
return map;
}
function d3_time_formatPad(value, fill, width) {
var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length;
return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);
}
var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayLookup = d3_time_formatLookup(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_dayAbbrevLookup = d3_time_formatLookup(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations), d3_time_percentRe = /^%/;
var d3_time_formatPads = {
"-": "",
_: " ",
"0": "0"
};
var d3_time_formats = {
a: function(d) {
return d3_time_dayAbbreviations[d.getDay()];
},
A: function(d) {
return d3_time_days[d.getDay()];
},
b: function(d) {
return d3_time_monthAbbreviations[d.getMonth()];
},
B: function(d) {
return d3_time_months[d.getMonth()];
},
c: d3_time_format(d3_time_formatDateTime),
d: function(d, p) {
return d3_time_formatPad(d.getDate(), p, 2);
},
e: function(d, p) {
return d3_time_formatPad(d.getDate(), p, 2);
},
H: function(d, p) {
return d3_time_formatPad(d.getHours(), p, 2);
},
I: function(d, p) {
return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);
},
j: function(d, p) {
return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);
},
L: function(d, p) {
return d3_time_formatPad(d.getMilliseconds(), p, 3);
},
m: function(d, p) {
return d3_time_formatPad(d.getMonth() + 1, p, 2);
},
M: function(d, p) {
return d3_time_formatPad(d.getMinutes(), p, 2);
},
p: function(d) {
return d.getHours() >= 12 ? "PM" : "AM";
},
S: function(d, p) {
return d3_time_formatPad(d.getSeconds(), p, 2);
},
U: function(d, p) {
return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);
},
w: function(d) {
return d.getDay();
},
W: function(d, p) {
return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);
},
x: d3_time_format(d3_time_formatDate),
X: d3_time_format(d3_time_formatTime),
y: function(d, p) {
return d3_time_formatPad(d.getFullYear() % 100, p, 2);
},
Y: function(d, p) {
return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);
},
Z: d3_time_zone,
"%": function() {
return "%";
}
};
var d3_time_parsers = {
a: d3_time_parseWeekdayAbbrev,
A: d3_time_parseWeekday,
b: d3_time_parseMonthAbbrev,
B: d3_time_parseMonth,
c: d3_time_parseLocaleFull,
d: d3_time_parseDay,
e: d3_time_parseDay,
H: d3_time_parseHour24,
I: d3_time_parseHour24,
j: d3_time_parseDayOfYear,
L: d3_time_parseMilliseconds,
m: d3_time_parseMonthNumber,
M: d3_time_parseMinutes,
p: d3_time_parseAmPm,
S: d3_time_parseSeconds,
U: d3_time_parseWeekNumberSunday,
w: d3_time_parseWeekdayNumber,
W: d3_time_parseWeekNumberMonday,
x: d3_time_parseLocaleDate,
X: d3_time_parseLocaleTime,
y: d3_time_parseYear,
Y: d3_time_parseFullYear,
Z: d3_time_parseZone,
"%": d3_time_parseLiteralPercent
};
function d3_time_parseWeekdayAbbrev(date, string, i) {
d3_time_dayAbbrevRe.lastIndex = 0;
var n = d3_time_dayAbbrevRe.exec(string.substring(i));
return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseWeekday(date, string, i) {
d3_time_dayRe.lastIndex = 0;
var n = d3_time_dayRe.exec(string.substring(i));
return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseWeekdayNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 1));
return n ? (date.w = +n[0], i + n[0].length) : -1;
}
function d3_time_parseWeekNumberSunday(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i));
return n ? (date.U = +n[0], i + n[0].length) : -1;
}
function d3_time_parseWeekNumberMonday(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i));
return n ? (date.W = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMonthAbbrev(date, string, i) {
d3_time_monthAbbrevRe.lastIndex = 0;
var n = d3_time_monthAbbrevRe.exec(string.substring(i));
return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseMonth(date, string, i) {
d3_time_monthRe.lastIndex = 0;
var n = d3_time_monthRe.exec(string.substring(i));
return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;
}
function d3_time_parseLocaleFull(date, string, i) {
return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
}
function d3_time_parseLocaleDate(date, string, i) {
return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
}
function d3_time_parseLocaleTime(date, string, i) {
return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
}
function d3_time_parseFullYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 4));
return n ? (date.y = +n[0], i + n[0].length) : -1;
}
function d3_time_parseYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
}
function d3_time_parseZone(date, string, i) {
return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = +string,
i + 5) : -1;
}
function d3_time_expandYear(d) {
return d + (d > 68 ? 1900 : 2e3);
}
function d3_time_parseMonthNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.m = n[0] - 1, i + n[0].length) : -1;
}
function d3_time_parseDay(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.d = +n[0], i + n[0].length) : -1;
}
function d3_time_parseDayOfYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 3));
return n ? (date.j = +n[0], i + n[0].length) : -1;
}
function d3_time_parseHour24(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.H = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMinutes(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.M = +n[0], i + n[0].length) : -1;
}
function d3_time_parseSeconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.S = +n[0], i + n[0].length) : -1;
}
function d3_time_parseMilliseconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 3));
return n ? (date.L = +n[0], i + n[0].length) : -1;
}
var d3_time_numberRe = /^\s*\d+/;
function d3_time_parseAmPm(date, string, i) {
var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
return n == null ? -1 : (date.p = n, i);
}
var d3_time_amPmLookup = d3.map({
am: 0,
pm: 1
});
function d3_time_zone(d) {
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(abs(z) / 60), zm = abs(z) % 60;
return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2);
}
function d3_time_parseLiteralPercent(date, string, i) {
d3_time_percentRe.lastIndex = 0;
var n = d3_time_percentRe.exec(string.substring(i, i + 1));
return n ? i + n[0].length : -1;
}
d3_time_format.utc = d3_time_formatUtc;
function d3_time_formatUtc(template) {
var local = d3_time_format(template);
function format(date) {
try {
d3_date = d3_date_utc;
var utc = new d3_date();
utc._ = date;
return local(utc);
} finally {
d3_date = Date;
}
}
format.parse = function(string) {
try {
d3_date = d3_date_utc;
var date = local.parse(string);
return date && date._;
} finally {
d3_date = Date;
}
};
format.toString = local.toString;
return format;
}
var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ");
d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso;
function d3_time_formatIsoNative(date) {
return date.toISOString();
}
d3_time_formatIsoNative.parse = function(string) {
var date = new Date(string);
return isNaN(date) ? null : date;
};
d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
d3_time.second = d3_time_interval(function(date) {
return new d3_date(Math.floor(date / 1e3) * 1e3);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 1e3);
}, function(date) {
return date.getSeconds();
});
d3_time.seconds = d3_time.second.range;
d3_time.seconds.utc = d3_time.second.utc.range;
d3_time.minute = d3_time_interval(function(date) {
return new d3_date(Math.floor(date / 6e4) * 6e4);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 6e4);
}, function(date) {
return date.getMinutes();
});
d3_time.minutes = d3_time.minute.range;
d3_time.minutes.utc = d3_time.minute.utc.range;
d3_time.hour = d3_time_interval(function(date) {
var timezone = date.getTimezoneOffset() / 60;
return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 36e5);
}, function(date) {
return date.getHours();
});
d3_time.hours = d3_time.hour.range;
d3_time.hours.utc = d3_time.hour.utc.range;
d3_time.month = d3_time_interval(function(date) {
date = d3_time.day(date);
date.setDate(1);
return date;
}, function(date, offset) {
date.setMonth(date.getMonth() + offset);
}, function(date) {
return date.getMonth();
});
d3_time.months = d3_time.month.range;
d3_time.months.utc = d3_time.month.utc.range;
function d3_time_scale(linear, methods, format) {
function scale(x) {
return linear(x);
}
scale.invert = function(x) {
return d3_time_scaleDate(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
linear.domain(x);
return scale;
};
function tickMethod(extent, count) {
var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);
return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {
return d / 31536e6;
}), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];
}
scale.nice = function(interval, skip) {
var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval);
if (method) interval = method[0], skip = method[1];
function skipped(date) {
return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;
}
return scale.domain(d3_scale_nice(domain, skip > 1 ? {
floor: function(date) {
while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);
return date;
},
ceil: function(date) {
while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);
return date;
}
} : interval));
};
scale.ticks = function(interval, skip) {
var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ {
range: interval
}, skip ];
if (method) interval = method[0], skip = method[1];
return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);
};
scale.tickFormat = function() {
return format;
};
scale.copy = function() {
return d3_time_scale(linear.copy(), methods, format);
};
return d3_scale_linearRebind(scale, linear);
}
function d3_time_scaleDate(t) {
return new Date(t);
}
function d3_time_scaleFormat(formats) {
return function(date) {
var i = formats.length - 1, f = formats[i];
while (!f[1](date)) f = formats[--i];
return f[0](date);
};
}
var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];
var d3_time_scaleLocalFormats = [ [ d3_time_format("%Y"), d3_true ], [ d3_time_format("%B"), function(d) {
return d.getMonth();
} ], [ d3_time_format("%b %d"), function(d) {
return d.getDate() != 1;
} ], [ d3_time_format("%a %d"), function(d) {
return d.getDay() && d.getDate() != 1;
} ], [ d3_time_format("%I %p"), function(d) {
return d.getHours();
} ], [ d3_time_format("%I:%M"), function(d) {
return d.getMinutes();
} ], [ d3_time_format(":%S"), function(d) {
return d.getSeconds();
} ], [ d3_time_format(".%L"), function(d) {
return d.getMilliseconds();
} ] ];
var d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats);
d3_time_scaleLocalMethods.year = d3_time.year;
d3_time.scale = function() {
return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
};
var d3_time_scaleMilliseconds = {
range: function(start, stop, step) {
return d3.range(+start, +stop, step).map(d3_time_scaleDate);
}
};
var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) {
return [ m[0].utc, m[1] ];
});
var d3_time_scaleUTCFormats = [ [ d3_time_formatUtc("%Y"), d3_true ], [ d3_time_formatUtc("%B"), function(d) {
return d.getUTCMonth();
} ], [ d3_time_formatUtc("%b %d"), function(d) {
return d.getUTCDate() != 1;
} ], [ d3_time_formatUtc("%a %d"), function(d) {
return d.getUTCDay() && d.getUTCDate() != 1;
} ], [ d3_time_formatUtc("%I %p"), function(d) {
return d.getUTCHours();
} ], [ d3_time_formatUtc("%I:%M"), function(d) {
return d.getUTCMinutes();
} ], [ d3_time_formatUtc(":%S"), function(d) {
return d.getUTCSeconds();
} ], [ d3_time_formatUtc(".%L"), function(d) {
return d.getUTCMilliseconds();
} ] ];
var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats);
d3_time_scaleUTCMethods.year = d3_time.year.utc;
d3_time.scale.utc = function() {
return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat);
};
d3.text = d3_xhrType(function(request) {
return request.responseText;
});
d3.json = function(url, callback) {
return d3_xhr(url, "application/json", d3_json, callback);
};
function d3_json(request) {
return JSON.parse(request.responseText);
}
d3.html = function(url, callback) {
return d3_xhr(url, "text/html", d3_html, callback);
};
function d3_html(request) {
var range = d3_document.createRange();
range.selectNode(d3_document.body);
return range.createContextualFragment(request.responseText);
}
d3.xml = d3_xhrType(function(request) {
return request.responseXML;
});
return d3;
}();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>week8homework2</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>The Meat Demand Gap Between Two Worlds </h1>
<p>Overall, the global demand for meat is growing, but at different rates in different re- gions. In Europe and the United States, the biggest meat producers in the 20th century, consumption is growing slowly, or is even stagnating. On the other hand, the booming economies in Asia and elsewhere, will see around 80 percent of the growth in the meat sector by 2022. The biggest growth will be in China and India because of huge demand from their new middle classes. </p>
<div class="row">
<div class="btn-group" role="group">
<button type="button" id="Beef">Beef</button>
<button type="button" id="Pig">Pig</button>
<button type="button" id="Poultry">Poultry</button>
<button type="button" id="Sheep">Sheep</button>
</div>
<div id="svg"></div>
<p>Source: <a href="https://data.oecd.org/agroutput/meat-consumption.htm">OECD</a></p>
</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
<script src="https://d3js.org/queue.v1.min.js"></script>
<script type="text/javascript" src="d3.v3.js"></script>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
var fullwidth = 900;
var fullheight = 600;
var margin = { top: 20, right: 100, bottom: 40, left: 100};
var width = fullwidth - margin.right - margin.left;
var height = fullheight - margin.top - margin.bottom;
var dateFormat = d3.time.format("%Y");
var years = ["1983", "2014"];
var xScale = d3.time.scale()
.range([ 0, width])
.domain(d3.extent(years, function(d) {
return dateFormat.parse(d);
}));
var buttons = d3.selectAll("button")
.classed("button", true);
var yScale = d3.scale.linear()
.range([0, height]);
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(10)
.tickFormat(function(d) {return dateFormat(d);
})
.innerTickSize([0])
.outerTickSize([0]);
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left")
.outerTickSize([0]);
var line = d3.svg.line()
.x(function(d) {return xScale(dateFormat.parse(d.Year));
})
.y(function(d) {return yScale(+d.number);
});
var svg = d3.select("#svg")
.append("svg")
.attr("width", fullwidth)
.attr("height", fullheight)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var tooltip = d3.select("body")
.append("div")
.attr("class", "mytooltip");
queue()
.defer(d3.csv,"Beef.csv")
.defer(d3.csv,"Pig.csv")
.defer(d3.csv,"Poultry.csv")
.defer(d3.csv,"Sheep.csv")
.await(Linechart);
function Linechart(error, beef, pig, pourltry, sheep){
if(error) { console.log(error); }
console.log(beef);
console.log(pig);
console.log(pourltry);
console.log(sheep);
d3.select("#Beef").on("click", function(d, i) {
d3.selectAll("button").classed("selected", false);
d3.select(this).classed("selected", true);
redraw(beef,20);
});
d3.select("#Pig").on("click", function(d, i) {
d3.selectAll("button").classed("selected", false);
d3.select(this).classed("selected", true);
redraw(pig,20.1);
});
d3.select("#Poultry").on("click", function(d, i) {
d3.selectAll("button").classed("selected", false);
d3.select(this).classed("selected", true);
redraw(pourltry,39);
});
d3.select("#Sheep").on("click", function(d, i) {
d3.selectAll("button").classed("selected", false);
d3.select(this).classed("selected", true);
redraw(sheep,5.6);
});
d3.select("#Beef").classed("selected", true);
yScale.domain([d3.max(beef, function(d) {
return +d.number;
}),
0]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
redraw(beef, 20);
}
function redraw(data, cutoff) {
yScale.domain([d3.max(data, function(d) {
return +d.number;
}), 0]);
var dataset = d3.nest().key(function(d) {return d.Location;
})
.sortValues(function (a, b) { return dateFormat.parse(a.Year) - dateFormat.parse(b.Year)})
.entries(data);
console.log("nested data", dataset);
var groups = svg.selectAll("g.lines")
.data(dataset, function(d){return d.key;});
groups
.enter()
.append("g")
.attr("class", "lines")
groups.exit()
.remove();
var lines = groups.selectAll("path.line")
.data(function(d) {return [d.values];
});
lines.enter()
.append("path")
.attr("d", line)
.attr("class", "line")
.classed("unfocused", true);
lines.exit()
.transition()
.duration(1000)
.remove();
lines
.transition()
.duration(1000)
.attr("d",line);
var circles = groups.selectAll("circle")
.data(function(d) {
return d.values;
});
circles.enter()
.append("circle")
.attr("r", 2)
.classed("circle", true)
.style("opacity", 0);
circles.exit()
.remove();
circles.transition()
.attr("cx",function(d){return xScale(dateFormat.parse(d.Year));})
.attr("cy", function(d) {return yScale(+d.number);});
circles.on("mouseover", mouseoverFunc)
.on("mousemove", mousemoveFunc)
.on("mouseout", mouseoutFunc);
var labels = groups.selectAll("text.label")
.data(function(d){
return [d.values];});
labels.enter()
.append("text")
.classed("label", true)
.text(function(d) {
return d[d.length-1].Location;
});
labels.exit()
.remove();
labels.transition()
.duration(2000)
.attr("y",function(d){
var lastNumber = d[d.length - 1].number;
return yScale(+lastNumber);})
.attr("x", function(d){
var lastYear = d[d.length - 1].Year;
return xScale(dateFormat.parse(lastYear));})
.attr("dx", ".35em")
.attr("dy", ".35em");
labels.classed("textshow", function(d,i){
if (d && +d[d.length - 1].number > cutoff) {
return true;
}
else {return false; };
});
labels.classed("texthide", function(d, i) {
if (d && +d[d.length - 1].number < cutoff) {
return true;
}
else {return false; };
});
groups
.on("mouseover", TIn)
.on("mouseout", TOut);
d3.select(".y.axis").transition().call(yAxis);
}
function mouseoverFunc(d){
d3.select(this)
.transition()
.style("opacity", 1)
.attr("r", 4);
tooltip
.style("display", null)
.html("<p>Country: <span style='color:#b35900'>" + d.Location +"</span>" + "<br>Year: <span style='color:#b35900'>" + d.Year +"</span>" + "<br>Kg/capita:<span style='color:#b35900'> " + d3.round(d.number, 1) + "</span>" + "</p>");
}
function mousemoveFunc(d) {
console.log(d3.event.pageX, d3.event.pageY);
tooltip
.style("top", (d3.event.pageY - 5) + "px" )
.style("left", (d3.event.pageX + 5) + "px");
}
function mouseoutFunc(d) {
d3.select(this)
.transition()
.style("opacity", 0)
.attr("r", 2);
tooltip.style("display", "none");}
function TIn(d) {
d3.select(this).select("path")
.classed("unfocused", false)
.classed("focused", true);
d3.select(this).select("text.label")
.attr("id", "highlight");
}
function TOut(d) {
d3.select(this).select("path")
.classed("unfocused", true)
.classed("focused", false);
d3.select(this).select("text.label")
.attr("id",null);
}
Location IndiaICATOR SUBJECT MEASURE FREQUENCY Year number
Australia MEATCONSUMP PIG KG_CAP A 1983 12.47654072
Australia MEATCONSUMP PIG KG_CAP A 1984 12.83771096
Australia MEATCONSUMP PIG KG_CAP A 1985 13.10120807
Australia MEATCONSUMP PIG KG_CAP A 1986 13.39227104
Australia MEATCONSUMP PIG KG_CAP A 1987 13.50479093
Australia MEATCONSUMP PIG KG_CAP A 1988 13.70668897
Australia MEATCONSUMP PIG KG_CAP A 1989 13.8499557
Australia MEATCONSUMP PIG KG_CAP A 1990 14.31885846
Australia MEATCONSUMP PIG KG_CAP A 1991 14.39993707
Australia MEATCONSUMP PIG KG_CAP A 1992 15.13772514
Australia MEATCONSUMP PIG KG_CAP A 1993 14.88222008
Australia MEATCONSUMP PIG KG_CAP A 1994 15.60680549
Australia MEATCONSUMP PIG KG_CAP A 1995 15.50517566
Australia MEATCONSUMP PIG KG_CAP A 1996 14.44320151
Australia MEATCONSUMP PIG KG_CAP A 1997 14.67532439
Australia MEATCONSUMP PIG KG_CAP A 1998 15.09703862
Australia MEATCONSUMP PIG KG_CAP A 1999 14.97403758
Australia MEATCONSUMP PIG KG_CAP A 2000 15.12684062
Australia MEATCONSUMP PIG KG_CAP A 2001 14.66797077
Australia MEATCONSUMP PIG KG_CAP A 2002 16.15695742
Australia MEATCONSUMP PIG KG_CAP A 2003 17.3025934
Australia MEATCONSUMP PIG KG_CAP A 2004 17.42142985
Australia MEATCONSUMP PIG KG_CAP A 2005 18.54860259
Australia MEATCONSUMP PIG KG_CAP A 2006 18.10959414
Australia MEATCONSUMP PIG KG_CAP A 2007 19.90693253
Australia MEATCONSUMP PIG KG_CAP A 2008 18.89317765
Australia MEATCONSUMP PIG KG_CAP A 2009 19.48750192
Australia MEATCONSUMP PIG KG_CAP A 2010 19.90499817
Australia MEATCONSUMP PIG KG_CAP A 2011 19.31199932
Australia MEATCONSUMP PIG KG_CAP A 2012 20.3716126
Australia MEATCONSUMP PIG KG_CAP A 2013 19.82510891
Australia MEATCONSUMP PIG KG_CAP A 2014 20.09175097
Canada MEATCONSUMP PIG KG_CAP A 1983 23.1086162
Canada MEATCONSUMP PIG KG_CAP A 1984 22.38864707
Canada MEATCONSUMP PIG KG_CAP A 1985 22.69899142
Canada MEATCONSUMP PIG KG_CAP A 1986 21.79416291
Canada MEATCONSUMP PIG KG_CAP A 1987 21.46099937
Canada MEATCONSUMP PIG KG_CAP A 1988 21.8830591
Canada MEATCONSUMP PIG KG_CAP A 1989 22.50714279
Canada MEATCONSUMP PIG KG_CAP A 1990 20.50991421
Canada MEATCONSUMP PIG KG_CAP A 1991 20.27890998
Canada MEATCONSUMP PIG KG_CAP A 1992 22.24394964
Canada MEATCONSUMP PIG KG_CAP A 1993 21.65179952
Canada MEATCONSUMP PIG KG_CAP A 1994 22.26717312
Canada MEATCONSUMP PIG KG_CAP A 1995 21.79598298
Canada MEATCONSUMP PIG KG_CAP A 1996 20.38883989
Canada MEATCONSUMP PIG KG_CAP A 1997 19.95174393
Canada MEATCONSUMP PIG KG_CAP A 1998 22.50620343
Canada MEATCONSUMP PIG KG_CAP A 1999 23.58113043
Canada MEATCONSUMP PIG KG_CAP A 2000 22.49693451
Canada MEATCONSUMP PIG KG_CAP A 2001 22.72673308
Canada MEATCONSUMP PIG KG_CAP A 2002 21.87782627
Canada MEATCONSUMP PIG KG_CAP A 2003 19.74628914
Canada MEATCONSUMP PIG KG_CAP A 2004 20.94062809
Canada MEATCONSUMP PIG KG_CAP A 2005 18.09825326
Canada MEATCONSUMP PIG KG_CAP A 2006 18.39907984
Canada MEATCONSUMP PIG KG_CAP A 2007 19.66015105
Canada MEATCONSUMP PIG KG_CAP A 2008 18.67592468
Canada MEATCONSUMP PIG KG_CAP A 2009 18.46701064
Canada MEATCONSUMP PIG KG_CAP A 2010 17.18251536
Canada MEATCONSUMP PIG KG_CAP A 2011 16.71856759
Canada MEATCONSUMP PIG KG_CAP A 2012 17.59387764
Canada MEATCONSUMP PIG KG_CAP A 2013 16.44300641
Canada MEATCONSUMP PIG KG_CAP A 2014 17.06190895
Japan MEATCONSUMP PIG KG_CAP A 1983 10.91144162
Japan MEATCONSUMP PIG KG_CAP A 1984 11.10560304
Japan MEATCONSUMP PIG KG_CAP A 1985 11.36957414
Japan MEATCONSUMP PIG KG_CAP A 1986 12.02267885
Japan MEATCONSUMP PIG KG_CAP A 1987 12.6913861
Japan MEATCONSUMP PIG KG_CAP A 1988 12.98541309
Japan MEATCONSUMP PIG KG_CAP A 1989 13.1658349
Japan MEATCONSUMP PIG KG_CAP A 1990 13.21900597
Japan MEATCONSUMP PIG KG_CAP A 1991 13.23926698
Japan MEATCONSUMP PIG KG_CAP A 1992 13.23331214
Japan MEATCONSUMP PIG KG_CAP A 1993 13.11437952
Japan MEATCONSUMP PIG KG_CAP A 1994 13.18016213
Japan MEATCONSUMP PIG KG_CAP A 1995 13.22634917
Japan MEATCONSUMP PIG KG_CAP A 1996 13.13331642
Japan MEATCONSUMP PIG KG_CAP A 1997 12.88021069
Japan MEATCONSUMP PIG KG_CAP A 1998 13.09511525
Japan MEATCONSUMP PIG KG_CAP A 1999 13.36405959
Japan MEATCONSUMP PIG KG_CAP A 2000 13.39095432
Japan MEATCONSUMP PIG KG_CAP A 2001 13.69776342
Japan MEATCONSUMP PIG KG_CAP A 2002 14.37912125
Japan MEATCONSUMP PIG KG_CAP A 2003 14.21553709
Japan MEATCONSUMP PIG KG_CAP A 2004 15.31107122
Japan MEATCONSUMP PIG KG_CAP A 2005 14.83602007
Japan MEATCONSUMP PIG KG_CAP A 2006 14.33584754
Japan MEATCONSUMP PIG KG_CAP A 2007 14.40067653
Japan MEATCONSUMP PIG KG_CAP A 2008 14.59281167
Japan MEATCONSUMP PIG KG_CAP A 2009 14.29232786
Japan MEATCONSUMP PIG KG_CAP A 2010 14.486372
Japan MEATCONSUMP PIG KG_CAP A 2011 14.71449192
Japan MEATCONSUMP PIG KG_CAP A 2012 14.77313016
Japan MEATCONSUMP PIG KG_CAP A 2013 14.61798409
Japan MEATCONSUMP PIG KG_CAP A 2014 14.95708067
Korea MEATCONSUMP PIG KG_CAP A 1983 7.318687514
Korea MEATCONSUMP PIG KG_CAP A 1984 8.383389999
Korea MEATCONSUMP PIG KG_CAP A 1985 8.355060927
Korea MEATCONSUMP PIG KG_CAP A 1986 6.109279276
Korea MEATCONSUMP PIG KG_CAP A 1987 7.024967887
Korea MEATCONSUMP PIG KG_CAP A 1988 7.771486978
Korea MEATCONSUMP PIG KG_CAP A 1989 8.649607972
Korea MEATCONSUMP PIG KG_CAP A 1990 9.986839068
Korea MEATCONSUMP PIG KG_CAP A 1991 9.939973847
Korea MEATCONSUMP PIG KG_CAP A 1992 13.35284394
Korea MEATCONSUMP PIG KG_CAP A 1993 13.49736944
Korea MEATCONSUMP PIG KG_CAP A 1994 13.97348323
Korea MEATCONSUMP PIG KG_CAP A 1995 14.59027966
Korea MEATCONSUMP PIG KG_CAP A 1996 15.62700744
Korea MEATCONSUMP PIG KG_CAP A 1997 15.45227783
Korea MEATCONSUMP PIG KG_CAP A 1998 15.27682502
Korea MEATCONSUMP PIG KG_CAP A 1999 17.57211312
Korea MEATCONSUMP PIG KG_CAP A 2000 16.44502906
Korea MEATCONSUMP PIG KG_CAP A 2001 17.11074363
Korea MEATCONSUMP PIG KG_CAP A 2002 17.60207674
Korea MEATCONSUMP PIG KG_CAP A 2003 21.62359332
Korea MEATCONSUMP PIG KG_CAP A 2004 19.98072432
Korea MEATCONSUMP PIG KG_CAP A 2005 19.52483865
Korea MEATCONSUMP PIG KG_CAP A 2006 23.47859106
Korea MEATCONSUMP PIG KG_CAP A 2007 24.69186009
Korea MEATCONSUMP PIG KG_CAP A 2008 24.84306625
Korea MEATCONSUMP PIG KG_CAP A 2009 24.0483665
Korea MEATCONSUMP PIG KG_CAP A 2010 24.85630838
Korea MEATCONSUMP PIG KG_CAP A 2011 23.88365092
Korea MEATCONSUMP PIG KG_CAP A 2012 23.04007429
Korea MEATCONSUMP PIG KG_CAP A 2013 23.97064718
Korea MEATCONSUMP PIG KG_CAP A 2014 24.35152758
Mexico MEATCONSUMP PIG KG_CAP A 1983 15.46878682
Mexico MEATCONSUMP PIG KG_CAP A 1984 14.86535873
Mexico MEATCONSUMP PIG KG_CAP A 1985 12.95558257
Mexico MEATCONSUMP PIG KG_CAP A 1986 9.419223103
Mexico MEATCONSUMP PIG KG_CAP A 1987 8.797719236
Mexico MEATCONSUMP PIG KG_CAP A 1988 8.538584682
Mexico MEATCONSUMP PIG KG_CAP A 1989 7.243405697
Mexico MEATCONSUMP PIG KG_CAP A 1990 7.156540671
Mexico MEATCONSUMP PIG KG_CAP A 1991 7.68173601
Mexico MEATCONSUMP PIG KG_CAP A 1992 7.597929078
Mexico MEATCONSUMP PIG KG_CAP A 1993 7.382934347
Mexico MEATCONSUMP PIG KG_CAP A 1994 7.912680583
Mexico MEATCONSUMP PIG KG_CAP A 1995 7.730211946
Mexico MEATCONSUMP PIG KG_CAP A 1996 7.443555653
Mexico MEATCONSUMP PIG KG_CAP A 1997 7.648218269
Mexico MEATCONSUMP PIG KG_CAP A 1998 8.072001364
Mexico MEATCONSUMP PIG KG_CAP A 1999 8.257989335
Mexico MEATCONSUMP PIG KG_CAP A 2000 8.785946678
Mexico MEATCONSUMP PIG KG_CAP A 2001 8.965028301
Mexico MEATCONSUMP PIG KG_CAP A 2002 9.238627839
Mexico MEATCONSUMP PIG KG_CAP A 2003 9.529140221
Mexico MEATCONSUMP PIG KG_CAP A 2004 9.778711369
Mexico MEATCONSUMP PIG KG_CAP A 2005 9.648398111
Mexico MEATCONSUMP PIG KG_CAP A 2006 9.638247407
Mexico MEATCONSUMP PIG KG_CAP A 2007 9.742212844
Mexico MEATCONSUMP PIG KG_CAP A 2008 9.841354337
Mexico MEATCONSUMP PIG KG_CAP A 2009 10.76371907
Mexico MEATCONSUMP PIG KG_CAP A 2010 10.68516652
Mexico MEATCONSUMP PIG KG_CAP A 2011 10.15416406
Mexico MEATCONSUMP PIG KG_CAP A 2012 10.8678623
Mexico MEATCONSUMP PIG KG_CAP A 2013 11.30819192
Mexico MEATCONSUMP PIG KG_CAP A 2014 11.29205346
New Zealand MEATCONSUMP PIG KG_CAP A 1983 9.943046676
New Zealand MEATCONSUMP PIG KG_CAP A 1984 10.7973089
New Zealand MEATCONSUMP PIG KG_CAP A 1985 11.76427758
New Zealand MEATCONSUMP PIG KG_CAP A 1986 11.49620546
New Zealand MEATCONSUMP PIG KG_CAP A 1987 11.0017693
New Zealand MEATCONSUMP PIG KG_CAP A 1988 11.30401542
New Zealand MEATCONSUMP PIG KG_CAP A 1989 10.90802299
New Zealand MEATCONSUMP PIG KG_CAP A 1990 10.97239156
New Zealand MEATCONSUMP PIG KG_CAP A 1991 10.78079862
New Zealand MEATCONSUMP PIG KG_CAP A 1992 11.17744871
New Zealand MEATCONSUMP PIG KG_CAP A 1993 11.59313215
New Zealand MEATCONSUMP PIG KG_CAP A 1994 11.97650686
New Zealand MEATCONSUMP PIG KG_CAP A 1995 12.42428863
New Zealand MEATCONSUMP PIG KG_CAP A 1996 12.50779803
New Zealand MEATCONSUMP PIG KG_CAP A 1997 11.79214101
New Zealand MEATCONSUMP PIG KG_CAP A 1998 12.50875177
New Zealand MEATCONSUMP PIG KG_CAP A 1999 13.3907302
New Zealand MEATCONSUMP PIG KG_CAP A 2000 13.38537941
New Zealand MEATCONSUMP PIG KG_CAP A 2001 12.84570736
New Zealand MEATCONSUMP PIG KG_CAP A 2002 12.96289146
New Zealand MEATCONSUMP PIG KG_CAP A 2003 13.78843888
New Zealand MEATCONSUMP PIG KG_CAP A 2004 14.81931065
New Zealand MEATCONSUMP PIG KG_CAP A 2005 15.01739951
New Zealand MEATCONSUMP PIG KG_CAP A 2006 15.96098358
New Zealand MEATCONSUMP PIG KG_CAP A 2007 16.03584599
New Zealand MEATCONSUMP PIG KG_CAP A 2008 16.03410601
New Zealand MEATCONSUMP PIG KG_CAP A 2009 15.87514483
New Zealand MEATCONSUMP PIG KG_CAP A 2010 14.79036494
New Zealand MEATCONSUMP PIG KG_CAP A 2011 15.73047711
New Zealand MEATCONSUMP PIG KG_CAP A 2012 16.14058784
New Zealand MEATCONSUMP PIG KG_CAP A 2013 15.94428111
New Zealand MEATCONSUMP PIG KG_CAP A 2014 16.42690112
Turkey MEATCONSUMP PIG KG_CAP A 1983 0.005591383
Turkey MEATCONSUMP PIG KG_CAP A 1984 0.008980581
Turkey MEATCONSUMP PIG KG_CAP A 1985 0.005684493
Turkey MEATCONSUMP PIG KG_CAP A 1986 0.006029314
Turkey MEATCONSUMP PIG KG_CAP A 1987 0.003130335
Turkey MEATCONSUMP PIG KG_CAP A 1988 0.003670606
Turkey MEATCONSUMP PIG KG_CAP A 1989 0.007746938
Turkey MEATCONSUMP PIG KG_CAP A 1990 0.005820928
Turkey MEATCONSUMP PIG KG_CAP A 1991 0.005327511
Turkey MEATCONSUMP PIG KG_CAP A 1992 0.004188928
Turkey MEATCONSUMP PIG KG_CAP A 1993 0.002944616
Turkey MEATCONSUMP PIG KG_CAP A 1994 0.00000122
Turkey MEATCONSUMP PIG KG_CAP A 1995 0.004535628
Turkey MEATCONSUMP PIG KG_CAP A 1996 0.001447862
Turkey MEATCONSUMP PIG KG_CAP A 1997 0.001115633
Turkey MEATCONSUMP PIG KG_CAP A 1998 0.001658397
Turkey MEATCONSUMP PIG KG_CAP A 1999 0.001409774
Turkey MEATCONSUMP PIG KG_CAP A 2000 0.000949967
Turkey MEATCONSUMP PIG KG_CAP A 2001 0.000761747
Turkey MEATCONSUMP PIG KG_CAP A 2002 0.000554212
Turkey MEATCONSUMP PIG KG_CAP A 2003 0.001182929
Turkey MEATCONSUMP PIG KG_CAP A 2004 0.008225205
Turkey MEATCONSUMP PIG KG_CAP A 2005 0.004720783
Turkey MEATCONSUMP PIG KG_CAP A 2006 0.012389913
Turkey MEATCONSUMP PIG KG_CAP A 2007 0.007049373
Turkey MEATCONSUMP PIG KG_CAP A 2008 0.002472002
Turkey MEATCONSUMP PIG KG_CAP A 2009 0.005012895
Turkey MEATCONSUMP PIG KG_CAP A 2010 0.003847676
Turkey MEATCONSUMP PIG KG_CAP A 2011 0.002405347
Turkey MEATCONSUMP PIG KG_CAP A 2012 0.002171443
Turkey MEATCONSUMP PIG KG_CAP A 2013 0.006995389
Turkey MEATCONSUMP PIG KG_CAP A 2014 0.02512646
USA MEATCONSUMP PIG KG_CAP A 1983 23.27379075
USA MEATCONSUMP PIG KG_CAP A 1984 23.09234912
USA MEATCONSUMP PIG KG_CAP A 1985 23.20752117
USA MEATCONSUMP PIG KG_CAP A 1986 21.91625326
USA MEATCONSUMP PIG KG_CAP A 1987 22.0048355
USA MEATCONSUMP PIG KG_CAP A 1988 23.47935602
USA MEATCONSUMP PIG KG_CAP A 1989 23.27057173
USA MEATCONSUMP PIG KG_CAP A 1990 22.28475571
USA MEATCONSUMP PIG KG_CAP A 1991 22.56981499
USA MEATCONSUMP PIG KG_CAP A 1992 23.81305104
USA MEATCONSUMP PIG KG_CAP A 1993 23.49652422
USA MEATCONSUMP PIG KG_CAP A 1994 23.7972713
USA MEATCONSUMP PIG KG_CAP A 1995 23.45310547
USA MEATCONSUMP PIG KG_CAP A 1996 21.90789589
USA MEATCONSUMP PIG KG_CAP A 1997 21.67214498
USA MEATCONSUMP PIG KG_CAP A 1998 23.29683647
USA MEATCONSUMP PIG KG_CAP A 1999 23.82912634
USA MEATCONSUMP PIG KG_CAP A 2000 23.17663156
USA MEATCONSUMP PIG KG_CAP A 2001 22.75399172
USA MEATCONSUMP PIG KG_CAP A 2002 23.33775973
USA MEATCONSUMP PIG KG_CAP A 2003 23.47746628
USA MEATCONSUMP PIG KG_CAP A 2004 23.27246499
USA MEATCONSUMP PIG KG_CAP A 2005 22.6806041
USA MEATCONSUMP PIG KG_CAP A 2006 22.3960647
USA MEATCONSUMP PIG KG_CAP A 2007 23.02145622
USA MEATCONSUMP PIG KG_CAP A 2008 22.4194659
USA MEATCONSUMP PIG KG_CAP A 2009 22.67825607
USA MEATCONSUMP PIG KG_CAP A 2010 21.62492392
USA MEATCONSUMP PIG KG_CAP A 2011 20.63976693
USA MEATCONSUMP PIG KG_CAP A 2012 20.65726424
USA MEATCONSUMP PIG KG_CAP A 2013 21.16398413
USA MEATCONSUMP PIG KG_CAP A 2014 20.72474785
Algeria MEATCONSUMP PIG KG_CAP A 1983 0.003232639
Algeria MEATCONSUMP PIG KG_CAP A 1984 0.01393647
Algeria MEATCONSUMP PIG KG_CAP A 1985 0.003277454
Algeria MEATCONSUMP PIG KG_CAP A 1986 0.003338833
Algeria MEATCONSUMP PIG KG_CAP A 1987 0.003219681
Algeria MEATCONSUMP PIG KG_CAP A 1988 0.003257177
Algeria MEATCONSUMP PIG KG_CAP A 1989 0.003293584
Algeria MEATCONSUMP PIG KG_CAP A 1990 0.003329268
Algeria MEATCONSUMP PIG KG_CAP A 1991 0.003970766
Algeria MEATCONSUMP PIG KG_CAP A 1992 0.003481743
Algeria MEATCONSUMP PIG KG_CAP A 1993 0.003504432
Algeria MEATCONSUMP PIG KG_CAP A 1994 0.003663855
Algeria MEATCONSUMP PIG KG_CAP A 1995 0.00428541
Algeria MEATCONSUMP PIG KG_CAP A 1996 0.005403418
Algeria MEATCONSUMP PIG KG_CAP A 1997 0.003643856
Algeria MEATCONSUMP PIG KG_CAP A 1998 0.004097658
Algeria MEATCONSUMP PIG KG_CAP A 1999 0.003479275
Algeria MEATCONSUMP PIG KG_CAP A 2000 0.00357208
Algeria MEATCONSUMP PIG KG_CAP A 2001 0.004174395
Algeria MEATCONSUMP PIG KG_CAP A 2002 0.004409935
Algeria MEATCONSUMP PIG KG_CAP A 2003 0.005551914
Algeria MEATCONSUMP PIG KG_CAP A 2004 0.006175243
Algeria MEATCONSUMP PIG KG_CAP A 2005 0.004912983
Algeria MEATCONSUMP PIG KG_CAP A 2006 0.004224934
Algeria MEATCONSUMP PIG KG_CAP A 2007 0.004598393
Algeria MEATCONSUMP PIG KG_CAP A 2008 0.004976062
Algeria MEATCONSUMP PIG KG_CAP A 2009 0.004007086
Algeria MEATCONSUMP PIG KG_CAP A 2010 0.005575096
Algeria MEATCONSUMP PIG KG_CAP A 2011 0.002745274
Algeria MEATCONSUMP PIG KG_CAP A 2012 0.002835866
Algeria MEATCONSUMP PIG KG_CAP A 2013 0.003320491
Algeria MEATCONSUMP PIG KG_CAP A 2014 0.005018653
Argentina MEATCONSUMP PIG KG_CAP A 1983 5.49368224
Argentina MEATCONSUMP PIG KG_CAP A 1984 5.500595282
Argentina MEATCONSUMP PIG KG_CAP A 1985 4.979386641
Argentina MEATCONSUMP PIG KG_CAP A 1986 5.23620178
Argentina MEATCONSUMP PIG KG_CAP A 1987 5.148772054
Argentina MEATCONSUMP PIG KG_CAP A 1988 4.720685986
Argentina MEATCONSUMP PIG KG_CAP A 1989 4.105243937
Argentina MEATCONSUMP PIG KG_CAP A 1990 3.673031197
Argentina MEATCONSUMP PIG KG_CAP A 1991 3.611938905
Argentina MEATCONSUMP PIG KG_CAP A 1992 4.487777933
Argentina MEATCONSUMP PIG KG_CAP A 1993 4.851914409
Argentina MEATCONSUMP PIG KG_CAP A 1994 4.837135407
Argentina MEATCONSUMP PIG KG_CAP A 1995 5.08521361
Argentina MEATCONSUMP PIG KG_CAP A 1996 4.886049738
Argentina MEATCONSUMP PIG KG_CAP A 1997 4.742401525
Argentina MEATCONSUMP PIG KG_CAP A 1998 5.59452288
Argentina MEATCONSUMP PIG KG_CAP A 1999 6.10434556
Argentina MEATCONSUMP PIG KG_CAP A 2000 6.087425742
Argentina MEATCONSUMP PIG KG_CAP A 2001 5.705854109
Argentina MEATCONSUMP PIG KG_CAP A 2002 3.876394806
Argentina MEATCONSUMP PIG KG_CAP A 2003 4.150060425
Argentina MEATCONSUMP PIG KG_CAP A 2004 4.478108269
Argentina MEATCONSUMP PIG KG_CAP A 2005 4.846783472
Argentina MEATCONSUMP PIG KG_CAP A 2006 5.747272373
Argentina MEATCONSUMP PIG KG_CAP A 2007 6.200379509
Argentina MEATCONSUMP PIG KG_CAP A 2008 5.999142103
Argentina MEATCONSUMP PIG KG_CAP A 2009 6.108723092
Argentina MEATCONSUMP PIG KG_CAP A 2010 6.284554224
Argentina MEATCONSUMP PIG KG_CAP A 2011 6.722034943
Argentina MEATCONSUMP PIG KG_CAP A 2012 6.73367468
Argentina MEATCONSUMP PIG KG_CAP A 2013 7.828935822
Argentina MEATCONSUMP PIG KG_CAP A 2014 8.695043732
Bangladesh MEATCONSUMP PIG KG_CAP A 2003 0.0000616
Bangladesh MEATCONSUMP PIG KG_CAP A 2004 0.0000221
Bangladesh MEATCONSUMP PIG KG_CAP A 2005 0.0000872
Bangladesh MEATCONSUMP PIG KG_CAP A 2006 0.00007
Bangladesh MEATCONSUMP PIG KG_CAP A 2007 0.000186403
Bangladesh MEATCONSUMP PIG KG_CAP A 2008 0.00015814
Bangladesh MEATCONSUMP PIG KG_CAP A 2009 0.000104346
Bangladesh MEATCONSUMP PIG KG_CAP A 2010 0.000154839
Bangladesh MEATCONSUMP PIG KG_CAP A 2011 0.000127566
Bangladesh MEATCONSUMP PIG KG_CAP A 2012 0.000610104
Bangladesh MEATCONSUMP PIG KG_CAP A 2013 0.000610407
Bangladesh MEATCONSUMP PIG KG_CAP A 2014 0.00046747
Brazil MEATCONSUMP PIG KG_CAP A 1983 6.294138608
Brazil MEATCONSUMP PIG KG_CAP A 1984 5.665580146
Brazil MEATCONSUMP PIG KG_CAP A 1985 5.701854715
Brazil MEATCONSUMP PIG KG_CAP A 1986 6.316375789
Brazil MEATCONSUMP PIG KG_CAP A 1987 6.668377165
Brazil MEATCONSUMP PIG KG_CAP A 1988 5.934264038
Brazil MEATCONSUMP PIG KG_CAP A 1989 6.273785784
Brazil MEATCONSUMP PIG KG_CAP A 1990 5.420708272
Brazil MEATCONSUMP PIG KG_CAP A 1991 5.608282302
Brazil MEATCONSUMP PIG KG_CAP A 1992 5.76178273
Brazil MEATCONSUMP PIG KG_CAP A 1993 5.886843781
Brazil MEATCONSUMP PIG KG_CAP A 1994 6.306226276
Brazil MEATCONSUMP PIG KG_CAP A 1995 6.764804867
Brazil MEATCONSUMP PIG KG_CAP A 1996 7.331887188
Brazil MEATCONSUMP PIG KG_CAP A 1997 6.866798873
Brazil MEATCONSUMP PIG KG_CAP A 1998 7.267274466
Brazil MEATCONSUMP PIG KG_CAP A 1999 7.59153176
Brazil MEATCONSUMP PIG KG_CAP A 2000 10.81463112
Brazil MEATCONSUMP PIG KG_CAP A 2001 11.05828372
Brazil MEATCONSUMP PIG KG_CAP A 2002 10.53556598
Brazil MEATCONSUMP PIG KG_CAP A 2003 9.608182263
Brazil MEATCONSUMP PIG KG_CAP A 2004 8.963309947
Brazil MEATCONSUMP PIG KG_CAP A 2005 8.741066785
Brazil MEATCONSUMP PIG KG_CAP A 2006 10.05042289
Brazil MEATCONSUMP PIG KG_CAP A 2007 9.8597768
Brazil MEATCONSUMP PIG KG_CAP A 2008 10.19770947
Brazil MEATCONSUMP PIG KG_CAP A 2009 10.45016197
Brazil MEATCONSUMP PIG KG_CAP A 2010 10.82003467
Brazil MEATCONSUMP PIG KG_CAP A 2011 11.4587416
Brazil MEATCONSUMP PIG KG_CAP A 2012 11.48236775
Brazil MEATCONSUMP PIG KG_CAP A 2013 11.39349876
Brazil MEATCONSUMP PIG KG_CAP A 2014 11.92323667
Chile MEATCONSUMP PIG KG_CAP A 1983 3.966408225
Chile MEATCONSUMP PIG KG_CAP A 1984 3.94051779
Chile MEATCONSUMP PIG KG_CAP A 1985 4.260248898
Chile MEATCONSUMP PIG KG_CAP A 1986 4.771494585
Chile MEATCONSUMP PIG KG_CAP A 1987 5.493175597
Chile MEATCONSUMP PIG KG_CAP A 1988 6.126879646
Chile MEATCONSUMP PIG KG_CAP A 1989 6.812216448
Chile MEATCONSUMP PIG KG_CAP A 1990 7.18094946
Chile MEATCONSUMP PIG KG_CAP A 1991 7.02506621
Chile MEATCONSUMP PIG KG_CAP A 1992 7.481577901
Chile MEATCONSUMP PIG KG_CAP A 1993 8.051867853
Chile MEATCONSUMP PIG KG_CAP A 1994 8.602279905
Chile MEATCONSUMP PIG KG_CAP A 1995 9.239432655
Chile MEATCONSUMP PIG KG_CAP A 1996 9.726276327
Chile MEATCONSUMP PIG KG_CAP A 1997 10.39676533
Chile MEATCONSUMP PIG KG_CAP A 1998 11.44638049
Chile MEATCONSUMP PIG KG_CAP A 1999 12.16659808
Chile MEATCONSUMP PIG KG_CAP A 2000 12.46652204
Chile MEATCONSUMP PIG KG_CAP A 2001 13.46571316
Chile MEATCONSUMP PIG KG_CAP A 2002 13.24359933
Chile MEATCONSUMP PIG KG_CAP A 2003 14.04521773
Chile MEATCONSUMP PIG KG_CAP A 2004 13.19183168
Chile MEATCONSUMP PIG KG_CAP A 2005 13.68843193
Chile MEATCONSUMP PIG KG_CAP A 2006 16.07031575
Chile MEATCONSUMP PIG KG_CAP A 2007 16.57760888
Chile MEATCONSUMP PIG KG_CAP A 2008 17.96057663
Chile MEATCONSUMP PIG KG_CAP A 2009 17.04951022
Chile MEATCONSUMP PIG KG_CAP A 2010 17.53028601
Chile MEATCONSUMP PIG KG_CAP A 2011 18.47655375
Chile MEATCONSUMP PIG KG_CAP A 2012 17.47990383
Chile MEATCONSUMP PIG KG_CAP A 2013 18.66754154
Chile MEATCONSUMP PIG KG_CAP A 2014 18.26502549
China MEATCONSUMP PIG KG_CAP A 1984 10.70483271
China MEATCONSUMP PIG KG_CAP A 1985 12.07851587
China MEATCONSUMP PIG KG_CAP A 1986 12.92819177
China MEATCONSUMP PIG KG_CAP A 1987 12.99085565
China MEATCONSUMP PIG KG_CAP A 1988 14.09505072
China MEATCONSUMP PIG KG_CAP A 1989 14.57773456
China MEATCONSUMP PIG KG_CAP A 1990 15.10568254
China MEATCONSUMP PIG KG_CAP A 1991 15.98371666
China MEATCONSUMP PIG KG_CAP A 1992 17.06218269
China MEATCONSUMP PIG KG_CAP A 1993 18.24414423
China MEATCONSUMP PIG KG_CAP A 1994 19.73987562
China MEATCONSUMP PIG KG_CAP A 1995 19.99362025
China MEATCONSUMP PIG KG_CAP A 1996 19.60489417
China MEATCONSUMP PIG KG_CAP A 1997 22.20023486
China MEATCONSUMP PIG KG_CAP A 1998 23.83455226
China MEATCONSUMP PIG KG_CAP A 1999 23.79960453
China MEATCONSUMP PIG KG_CAP A 2000 24.57409503
China MEATCONSUMP PIG KG_CAP A 2001 25.16787332
China MEATCONSUMP PIG KG_CAP A 2002 26.01809895
China MEATCONSUMP PIG KG_CAP A 2003 25.23855105
China MEATCONSUMP PIG KG_CAP A 2004 25.56659525
China MEATCONSUMP PIG KG_CAP A 2005 26.6771931
China MEATCONSUMP PIG KG_CAP A 2006 27.0442469
China MEATCONSUMP PIG KG_CAP A 2007 24.90928276
China MEATCONSUMP PIG KG_CAP A 2008 26.96803068
China MEATCONSUMP PIG KG_CAP A 2009 28.11955822
China MEATCONSUMP PIG KG_CAP A 2010 29.29683306
China MEATCONSUMP PIG KG_CAP A 2011 28.38568675
China MEATCONSUMP PIG KG_CAP A 2012 30.41119476
China MEATCONSUMP PIG KG_CAP A 2013 31.20850923
China MEATCONSUMP PIG KG_CAP A 2014 31.9944735
Colombia MEATCONSUMP PIG KG_CAP A 1983 3.026429081
Colombia MEATCONSUMP PIG KG_CAP A 1984 3.03374265
Colombia MEATCONSUMP PIG KG_CAP A 1985 3.080980897
Colombia MEATCONSUMP PIG KG_CAP A 1986 3.133670244
Colombia MEATCONSUMP PIG KG_CAP A 1987 3.04637482
Colombia MEATCONSUMP PIG KG_CAP A 1988 3.203362331
Colombia MEATCONSUMP PIG KG_CAP A 1989 3.016351736
Colombia MEATCONSUMP PIG KG_CAP A 1990 3.135288988
Colombia MEATCONSUMP PIG KG_CAP A 1991 3.073486549
Colombia MEATCONSUMP PIG KG_CAP A 1992 3.051413167
Colombia MEATCONSUMP PIG KG_CAP A 1993 2.988039464
Colombia MEATCONSUMP PIG KG_CAP A 1994 2.957146973
Colombia MEATCONSUMP PIG KG_CAP A 1995 2.964178029
Colombia MEATCONSUMP PIG KG_CAP A 1996 2.778690423
Colombia MEATCONSUMP PIG KG_CAP A 1997 2.215866983
Colombia MEATCONSUMP PIG KG_CAP A 1998 1.666022303
Colombia MEATCONSUMP PIG KG_CAP A 1999 2.256171225
Colombia MEATCONSUMP PIG KG_CAP A 2000 2.156920305
Colombia MEATCONSUMP PIG KG_CAP A 2001 1.997292391
Colombia MEATCONSUMP PIG KG_CAP A 2002 2.145487185
Colombia MEATCONSUMP PIG KG_CAP A 2003 2.359261587
Colombia MEATCONSUMP PIG KG_CAP A 2004 2.419599249
Colombia MEATCONSUMP PIG KG_CAP A 2005 2.365250964
Colombia MEATCONSUMP PIG KG_CAP A 2006 2.710936232
Colombia MEATCONSUMP PIG KG_CAP A 2007 3.249853819
Colombia MEATCONSUMP PIG KG_CAP A 2008 3.135979049
Colombia MEATCONSUMP PIG KG_CAP A 2009 3.215466993
Colombia MEATCONSUMP PIG KG_CAP A 2010 3.481139355
Colombia MEATCONSUMP PIG KG_CAP A 2011 3.937443426
Colombia MEATCONSUMP PIG KG_CAP A 2012 4.485833876
Colombia MEATCONSUMP PIG KG_CAP A 2013 4.84677762
Colombia MEATCONSUMP PIG KG_CAP A 2014 4.92503109
Egypt MEATCONSUMP PIG KG_CAP A 1983 0.042121817
Egypt MEATCONSUMP PIG KG_CAP A 1984 0.042767439
Egypt MEATCONSUMP PIG KG_CAP A 1985 0.04641687
Egypt MEATCONSUMP PIG KG_CAP A 1986 0.046121916
Egypt MEATCONSUMP PIG KG_CAP A 1987 0.045862705
Egypt MEATCONSUMP PIG KG_CAP A 1988 0.039939419
Egypt MEATCONSUMP PIG KG_CAP A 1989 0.06618704
Egypt MEATCONSUMP PIG KG_CAP A 1990 0.033634135
Egypt MEATCONSUMP PIG KG_CAP A 1991 0.033757549
Egypt MEATCONSUMP PIG KG_CAP A 1992 0.038570386
Egypt MEATCONSUMP PIG KG_CAP A 1993 0.038229312
Egypt MEATCONSUMP PIG KG_CAP A 1994 0.036259795
Egypt MEATCONSUMP PIG KG_CAP A 1995 0.035586224
Egypt MEATCONSUMP PIG KG_CAP A 1996 0.035721623
Egypt MEATCONSUMP PIG KG_CAP A 1997 0.036283957
Egypt MEATCONSUMP PIG KG_CAP A 1998 0.100136473
Egypt MEATCONSUMP PIG KG_CAP A 1999 0.036512671
Egypt MEATCONSUMP PIG KG_CAP A 2000 0.036537474
Egypt MEATCONSUMP PIG KG_CAP A 2001 0.03598
Egypt MEATCONSUMP PIG KG_CAP A 2002 0.036964551
Egypt MEATCONSUMP PIG KG_CAP A 2003 0.01892482
Egypt MEATCONSUMP PIG KG_CAP A 2004 0.018783269
Egypt MEATCONSUMP PIG KG_CAP A 2005 0.020114521
Egypt MEATCONSUMP PIG KG_CAP A 2006 0.020432107
Egypt MEATCONSUMP PIG KG_CAP A 2007 0.040770579
Egypt MEATCONSUMP PIG KG_CAP A 2008 0.022265935
Egypt MEATCONSUMP PIG KG_CAP A 2009 0.008706741
Egypt MEATCONSUMP PIG KG_CAP A 2010 0.004215892
Egypt MEATCONSUMP PIG KG_CAP A 2011 0.007564994
Egypt MEATCONSUMP PIG KG_CAP A 2012 0.007962142
Egypt MEATCONSUMP PIG KG_CAP A 2013 0.980076083
Egypt MEATCONSUMP PIG KG_CAP A 2014 0.422509767
Ethiopia MEATCONSUMP PIG KG_CAP A 1993 0.016810975
Ethiopia MEATCONSUMP PIG KG_CAP A 1994 0.016316553
Ethiopia MEATCONSUMP PIG KG_CAP A 1995 0.016582524
Ethiopia MEATCONSUMP PIG KG_CAP A 1996 0.016806968
Ethiopia MEATCONSUMP PIG KG_CAP A 1997 0.017024328
Ethiopia MEATCONSUMP PIG KG_CAP A 1998 0.017476758
Ethiopia MEATCONSUMP PIG KG_CAP A 1999 0.017690812
Ethiopia MEATCONSUMP PIG KG_CAP A 2000 0.01731207
Ethiopia MEATCONSUMP PIG KG_CAP A 2001 0.017641679
Ethiopia MEATCONSUMP PIG KG_CAP A 2002 0.017007273
Ethiopia MEATCONSUMP PIG KG_CAP A 2003 0.018208487
Ethiopia MEATCONSUMP PIG KG_CAP A 2004 0.017570694
Ethiopia MEATCONSUMP PIG KG_CAP A 2005 0.017766616
Ethiopia MEATCONSUMP PIG KG_CAP A 2006 0.017603425
Ethiopia MEATCONSUMP PIG KG_CAP A 2007 0.016774155
Ethiopia MEATCONSUMP PIG KG_CAP A 2008 0.016322968
Ethiopia MEATCONSUMP PIG KG_CAP A 2009 0.015032179
Ethiopia MEATCONSUMP PIG KG_CAP A 2010 0.015565073
Ethiopia MEATCONSUMP PIG KG_CAP A 2011 0.01574083
Ethiopia MEATCONSUMP PIG KG_CAP A 2012 0.015858671
Ethiopia MEATCONSUMP PIG KG_CAP A 2013 0.01588698
Ethiopia MEATCONSUMP PIG KG_CAP A 2014 0.014928191
Ghana MEATCONSUMP PIG KG_CAP A 1983 0.59066572
Ghana MEATCONSUMP PIG KG_CAP A 1984 0.577582016
Ghana MEATCONSUMP PIG KG_CAP A 1985 0.568295933
Ghana MEATCONSUMP PIG KG_CAP A 1986 0.625452892
Ghana MEATCONSUMP PIG KG_CAP A 1987 0.518905139
Ghana MEATCONSUMP PIG KG_CAP A 1988 0.617581765
Ghana MEATCONSUMP PIG KG_CAP A 1989 0.703118491
Ghana MEATCONSUMP PIG KG_CAP A 1990 0.709947682
Ghana MEATCONSUMP PIG KG_CAP A 1991 0.696605382
Ghana MEATCONSUMP PIG KG_CAP A 1992 0.58325116
Ghana MEATCONSUMP PIG KG_CAP A 1993 0.564376351
Ghana MEATCONSUMP PIG KG_CAP A 1994 0.567129532
Ghana MEATCONSUMP PIG KG_CAP A 1995 0.522776362
Ghana MEATCONSUMP PIG KG_CAP A 1996 0.645400105
Ghana MEATCONSUMP PIG KG_CAP A 1997 0.698315312
Ghana MEATCONSUMP PIG KG_CAP A 1998 0.612564578
Ghana MEATCONSUMP PIG KG_CAP A 1999 0.585749292
Ghana MEATCONSUMP PIG KG_CAP A 2000 0.517108711
Ghana MEATCONSUMP PIG KG_CAP A 2001 0.500881434
Ghana MEATCONSUMP PIG KG_CAP A 2002 0.538785812
Ghana MEATCONSUMP PIG KG_CAP A 2003 0.643532657
Ghana MEATCONSUMP PIG KG_CAP A 2004 0.37671199
Ghana MEATCONSUMP PIG KG_CAP A 2005 0.39364758
Ghana MEATCONSUMP PIG KG_CAP A 2006 0.573521067
Ghana MEATCONSUMP PIG KG_CAP A 2007 0.751433018
Ghana MEATCONSUMP PIG KG_CAP A 2008 0.772338362
Ghana MEATCONSUMP PIG KG_CAP A 2009 0.743258491
Ghana MEATCONSUMP PIG KG_CAP A 2010 0.709500052
Ghana MEATCONSUMP PIG KG_CAP A 2011 0.794138431
Ghana MEATCONSUMP PIG KG_CAP A 2012 0.819418538
Ghana MEATCONSUMP PIG KG_CAP A 2013 0.933166977
Ghana MEATCONSUMP PIG KG_CAP A 2014 0.963212635
Haiti MEATCONSUMP PIG KG_CAP A 1983 2.154033688
Haiti MEATCONSUMP PIG KG_CAP A 1984 2.193293746
Haiti MEATCONSUMP PIG KG_CAP A 1985 2.215523689
Haiti MEATCONSUMP PIG KG_CAP A 1986 2.380248596
Haiti MEATCONSUMP PIG KG_CAP A 1987 2.142448511
Haiti MEATCONSUMP PIG KG_CAP A 1988 1.878633554
Haiti MEATCONSUMP PIG KG_CAP A 1989 1.6522125
Haiti MEATCONSUMP PIG KG_CAP A 1990 1.536019716
Haiti MEATCONSUMP PIG KG_CAP A 1991 1.717990081
Haiti MEATCONSUMP PIG KG_CAP A 1992 1.960636479
Haiti MEATCONSUMP PIG KG_CAP A 1993 2.059650596
Haiti MEATCONSUMP PIG KG_CAP A 1994 1.980795428
Haiti MEATCONSUMP PIG KG_CAP A 1995 2.564388805
Haiti MEATCONSUMP PIG KG_CAP A 1996 2.581842818
Haiti MEATCONSUMP PIG KG_CAP A 1997 2.597978038
Haiti MEATCONSUMP PIG KG_CAP A 1998 2.762519801
Haiti MEATCONSUMP PIG KG_CAP A 1999 2.777163473
Haiti MEATCONSUMP PIG KG_CAP A 2000 2.856021262
Haiti MEATCONSUMP PIG KG_CAP A 2001 3.2297466
Haiti MEATCONSUMP PIG KG_CAP A 2002 3.375587188
Haiti MEATCONSUMP PIG KG_CAP A 2003 3.474521196
Haiti MEATCONSUMP PIG KG_CAP A 2004 3.167356192
Haiti MEATCONSUMP PIG KG_CAP A 2005 3.312023498
Haiti MEATCONSUMP PIG KG_CAP A 2006 3.192019262
Haiti MEATCONSUMP PIG KG_CAP A 2007 3.397509992
Haiti MEATCONSUMP PIG KG_CAP A 2008 3.351936918
Haiti MEATCONSUMP PIG KG_CAP A 2009 3.108650383
Haiti MEATCONSUMP PIG KG_CAP A 2010 3.199522069
Haiti MEATCONSUMP PIG KG_CAP A 2011 3.370404574
Haiti MEATCONSUMP PIG KG_CAP A 2012 3.515896311
Haiti MEATCONSUMP PIG KG_CAP A 2013 3.490600963
Haiti MEATCONSUMP PIG KG_CAP A 2014 3.494745314
India MEATCONSUMP PIG KG_CAP A 1983 0.312787921
India MEATCONSUMP PIG KG_CAP A 1984 0.310394011
India MEATCONSUMP PIG KG_CAP A 1985 0.359646848
India MEATCONSUMP PIG KG_CAP A 1986 0.35536813
India MEATCONSUMP PIG KG_CAP A 1987 0.349516253
India MEATCONSUMP PIG KG_CAP A 1988 0.356870078
India MEATCONSUMP PIG KG_CAP A 1989 0.365548364
India MEATCONSUMP PIG KG_CAP A 1990 0.370745939
India MEATCONSUMP PIG KG_CAP A 1991 0.375766205
India MEATCONSUMP PIG KG_CAP A 1992 0.383628902
India MEATCONSUMP PIG KG_CAP A 1993 0.379320766
India MEATCONSUMP PIG KG_CAP A 1994 0.374684786
India MEATCONSUMP PIG KG_CAP A 1995 0.37039911
India MEATCONSUMP PIG KG_CAP A 1996 0.447335303
India MEATCONSUMP PIG KG_CAP A 1997 0.365719315
India MEATCONSUMP PIG KG_CAP A 1998 0.358582054
India MEATCONSUMP PIG KG_CAP A 1999 0.353374753
India MEATCONSUMP PIG KG_CAP A 2000 0.348642672
India MEATCONSUMP PIG KG_CAP A 2001 0.343382493
India MEATCONSUMP PIG KG_CAP A 2002 0.338667396
India MEATCONSUMP PIG KG_CAP A 2003 0.334807609
India MEATCONSUMP PIG KG_CAP A 2004 0.311701539
India MEATCONSUMP PIG KG_CAP A 2005 0.29413006
India MEATCONSUMP PIG KG_CAP A 2006 0.275923754
India MEATCONSUMP PIG KG_CAP A 2007 0.258610613
India MEATCONSUMP PIG KG_CAP A 2008 0.242673469
India MEATCONSUMP PIG KG_CAP A 2009 0.230082105
India MEATCONSUMP PIG KG_CAP A 2010 0.214378851
India MEATCONSUMP PIG KG_CAP A 2011 0.210449124
India MEATCONSUMP PIG KG_CAP A 2012 0.20796027
India MEATCONSUMP PIG KG_CAP A 2013 0.204694101
India MEATCONSUMP PIG KG_CAP A 2014 0.201594988
Indonesia MEATCONSUMP PIG KG_CAP A 1983 1.408128825
Indonesia MEATCONSUMP PIG KG_CAP A 1984 1.646911639
Indonesia MEATCONSUMP PIG KG_CAP A 1985 1.769733138
Indonesia MEATCONSUMP PIG KG_CAP A 1986 1.942950407
Indonesia MEATCONSUMP PIG KG_CAP A 1987 1.929071666
Indonesia MEATCONSUMP PIG KG_CAP A 1988 2.092243039
Indonesia MEATCONSUMP PIG KG_CAP A 1989 2.202067989
Indonesia MEATCONSUMP PIG KG_CAP A 1990 2.387915983
Indonesia MEATCONSUMP PIG KG_CAP A 1991 2.466402864
Indonesia MEATCONSUMP PIG KG_CAP A 1992 2.472827587
Indonesia MEATCONSUMP PIG KG_CAP A 1993 2.583115931
Indonesia MEATCONSUMP PIG KG_CAP A 1994 2.696523979
Indonesia MEATCONSUMP PIG KG_CAP A 1995 2.300743264
Indonesia MEATCONSUMP PIG KG_CAP A 1996 2.374433994
Indonesia MEATCONSUMP PIG KG_CAP A 1997 2.471957255
Indonesia MEATCONSUMP PIG KG_CAP A 1998 2.389322389
Indonesia MEATCONSUMP PIG KG_CAP A 1999 2.08329969
Indonesia MEATCONSUMP PIG KG_CAP A 2000 1.576353788
Indonesia MEATCONSUMP PIG KG_CAP A 2001 1.74076099
Indonesia MEATCONSUMP PIG KG_CAP A 2002 1.687722712
Indonesia MEATCONSUMP PIG KG_CAP A 2003 1.741160718
Indonesia MEATCONSUMP PIG KG_CAP A 2004 1.704418482
Indonesia MEATCONSUMP PIG KG_CAP A 2005 1.920998633
Indonesia MEATCONSUMP PIG KG_CAP A 2006 2.028369916
Indonesia MEATCONSUMP PIG KG_CAP A 2007 2.021435747
Indonesia MEATCONSUMP PIG KG_CAP A 2008 2.124573701
Indonesia MEATCONSUMP PIG KG_CAP A 2009 2.132081691
Indonesia MEATCONSUMP PIG KG_CAP A 2010 2.253812132
Indonesia MEATCONSUMP PIG KG_CAP A 2011 2.308848266
Indonesia MEATCONSUMP PIG KG_CAP A 2012 2.305436807
Indonesia MEATCONSUMP PIG KG_CAP A 2013 2.305415117
Indonesia MEATCONSUMP PIG KG_CAP A 2014 2.333511645
Iran MEATCONSUMP PIG KG_CAP A 1983 0.0000016
Iran MEATCONSUMP PIG KG_CAP A 1984 0.00000154
Iran MEATCONSUMP PIG KG_CAP A 1985 0.00000148
Iran MEATCONSUMP PIG KG_CAP A 1986 0.00000142
Iran MEATCONSUMP PIG KG_CAP A 1987 0.00000137
Iran MEATCONSUMP PIG KG_CAP A 1988 0.00000132
Iran MEATCONSUMP PIG KG_CAP A 1989 0.00000128
Iran MEATCONSUMP PIG KG_CAP A 1990 0.00000125
Iran MEATCONSUMP PIG KG_CAP A 1991 0.00000122
Iran MEATCONSUMP PIG KG_CAP A 1992 0.0000012
Iran MEATCONSUMP PIG KG_CAP A 1993 0.00000119
Iran MEATCONSUMP PIG KG_CAP A 1994 0.00000118
Iran MEATCONSUMP PIG KG_CAP A 1995 0.00000116
Iran MEATCONSUMP PIG KG_CAP A 1996 0.00000114
Iran MEATCONSUMP PIG KG_CAP A 1997 0.00000112
Iran MEATCONSUMP PIG KG_CAP A 1998 0.0000011
Iran MEATCONSUMP PIG KG_CAP A 1999 0.00000108
Iran MEATCONSUMP PIG KG_CAP A 2000 0.00000107
Iran MEATCONSUMP PIG KG_CAP A 2001 0.00000105
Iran MEATCONSUMP PIG KG_CAP A 2002 0.0000979
Iran MEATCONSUMP PIG KG_CAP A 2003 0.001036579
Iran MEATCONSUMP PIG KG_CAP A 2004 0.000214736
Iran MEATCONSUMP PIG KG_CAP A 2005 0.001190703
Iran MEATCONSUMP PIG KG_CAP A 2006 0.002120969
Iran MEATCONSUMP PIG KG_CAP A 2007 0.002031222
Iran MEATCONSUMP PIG KG_CAP A 2008 0.002190862
Iran MEATCONSUMP PIG KG_CAP A 2009 0.002525192
Iran MEATCONSUMP PIG KG_CAP A 2010 0.00203312
Iran MEATCONSUMP PIG KG_CAP A 2011 0.00026981
Iran MEATCONSUMP PIG KG_CAP A 2012 0.00064391
Iran MEATCONSUMP PIG KG_CAP A 2013 0.000272835
Iran MEATCONSUMP PIG KG_CAP A 2014 0.000149997
Israel MEATCONSUMP PIG KG_CAP A 1983 1.735746828
Israel MEATCONSUMP PIG KG_CAP A 1984 1.621763022
Israel MEATCONSUMP PIG KG_CAP A 1985 1.671565026
Israel MEATCONSUMP PIG KG_CAP A 1986 1.569473283
Israel MEATCONSUMP PIG KG_CAP A 1987 1.64658437
Israel MEATCONSUMP PIG KG_CAP A 1988 1.69828414
Israel MEATCONSUMP PIG KG_CAP A 1989 1.5221816
Israel MEATCONSUMP PIG KG_CAP A 1990 1.590875836
Israel MEATCONSUMP PIG KG_CAP A 1991 1.568929182
Israel MEATCONSUMP PIG KG_CAP A 1992 1.503319848
Israel MEATCONSUMP PIG KG_CAP A 1993 1.358670442
Israel MEATCONSUMP PIG KG_CAP A 1994 1.312806176
Israel MEATCONSUMP PIG KG_CAP A 1995 1.498075465
Israel MEATCONSUMP PIG KG_CAP A 1996 1.479383848
Israel MEATCONSUMP PIG KG_CAP A 1997 1.637458412
Israel MEATCONSUMP PIG KG_CAP A 1998 1.60048183
Israel MEATCONSUMP PIG KG_CAP A 1999 1.13704301
Israel MEATCONSUMP PIG KG_CAP A 2000 1.91591808
Israel MEATCONSUMP PIG KG_CAP A 2001 1.99473872
Israel MEATCONSUMP PIG KG_CAP A 2002 2.052453896
Israel MEATCONSUMP PIG KG_CAP A 2003 2.135202525
Israel MEATCONSUMP PIG KG_CAP A 2004 2.195046572
Israel MEATCONSUMP PIG KG_CAP A 2005 2.217401595
Israel MEATCONSUMP PIG KG_CAP A 2006 2.047687468
Israel MEATCONSUMP PIG KG_CAP A 2007 2.086190459
Israel MEATCONSUMP PIG KG_CAP A 2008 2.035880034
Israel MEATCONSUMP PIG KG_CAP A 2009 2.110525073
Israel MEATCONSUMP PIG KG_CAP A 2010 1.983323311
Israel MEATCONSUMP PIG KG_CAP A 2011 1.950723895
Israel MEATCONSUMP PIG KG_CAP A 2012 1.998775443
Israel MEATCONSUMP PIG KG_CAP A 2013 1.996217469
Israel MEATCONSUMP PIG KG_CAP A 2014 1.996867771
Kazakhstan MEATCONSUMP PIG KG_CAP A 1992 10.73652384
Kazakhstan MEATCONSUMP PIG KG_CAP A 1993 9.631845133
Kazakhstan MEATCONSUMP PIG KG_CAP A 1994 7.766123531
Kazakhstan MEATCONSUMP PIG KG_CAP A 1995 5.462500844
Kazakhstan MEATCONSUMP PIG KG_CAP A 1996 5.516461474
Kazakhstan MEATCONSUMP PIG KG_CAP A 1997 4.35779661
Kazakhstan MEATCONSUMP PIG KG_CAP A 1998 4.322338086
Kazakhstan MEATCONSUMP PIG KG_CAP A 1999 5.174080737
Kazakhstan MEATCONSUMP PIG KG_CAP A 2000 7.487336754
Kazakhstan MEATCONSUMP PIG KG_CAP A 2001 10.00118662
Kazakhstan MEATCONSUMP PIG KG_CAP A 2002 10.32884983
Kazakhstan MEATCONSUMP PIG KG_CAP A 2003 10.16784115
Kazakhstan MEATCONSUMP PIG KG_CAP A 2004 10.77202899
Kazakhstan MEATCONSUMP PIG KG_CAP A 2005 10.9013593
Kazakhstan MEATCONSUMP PIG KG_CAP A 2006 10.93618721
Kazakhstan MEATCONSUMP PIG KG_CAP A 2007 11.09538958
Kazakhstan MEATCONSUMP PIG KG_CAP A 2008 12.14335962
Kazakhstan MEATCONSUMP PIG KG_CAP A 2009 11.93696307
Kazakhstan MEATCONSUMP PIG KG_CAP A 2010 11.06364369
Kazakhstan MEATCONSUMP PIG KG_CAP A 2011 10.87478848
Kazakhstan MEATCONSUMP PIG KG_CAP A 2012 10.88869676
Kazakhstan MEATCONSUMP PIG KG_CAP A 2013 10.73535346
Kazakhstan MEATCONSUMP PIG KG_CAP A 2014 10.47112086
Malaysia MEATCONSUMP PIG KG_CAP A 1983 7.556766069
Malaysia MEATCONSUMP PIG KG_CAP A 1984 7.289525142
Malaysia MEATCONSUMP PIG KG_CAP A 1985 7.624598602
Malaysia MEATCONSUMP PIG KG_CAP A 1986 7.682394583
Malaysia MEATCONSUMP PIG KG_CAP A 1987 8.189292393
Malaysia MEATCONSUMP PIG KG_CAP A 1988 7.675488741
Malaysia MEATCONSUMP PIG KG_CAP A 1989 8.913714751
Malaysia MEATCONSUMP PIG KG_CAP A 1990 9.963813687
Malaysia MEATCONSUMP PIG KG_CAP A 1991 9.895627567
Malaysia MEATCONSUMP PIG KG_CAP A 1992 10.38433264
Malaysia MEATCONSUMP PIG KG_CAP A 1993 10.57281071
Malaysia MEATCONSUMP PIG KG_CAP A 1994 11.10159985
Malaysia MEATCONSUMP PIG KG_CAP A 1995 10.80061023
Malaysia MEATCONSUMP PIG KG_CAP A 1996 10.30199417
Malaysia MEATCONSUMP PIG KG_CAP A 1997 10.13790508
Malaysia MEATCONSUMP PIG KG_CAP A 1998 9.325160993
Malaysia MEATCONSUMP PIG KG_CAP A 1999 5.756947659
Malaysia MEATCONSUMP PIG KG_CAP A 2000 5.763299589
Malaysia MEATCONSUMP PIG KG_CAP A 2001 6.60031408
Malaysia MEATCONSUMP PIG KG_CAP A 2002 6.745241305
Malaysia MEATCONSUMP PIG KG_CAP A 2003 6.333602201
Malaysia MEATCONSUMP PIG KG_CAP A 2004 6.369584944
Malaysia MEATCONSUMP PIG KG_CAP A 2005 6.149544064
Malaysia MEATCONSUMP PIG KG_CAP A 2006 6.509224077
Malaysia MEATCONSUMP PIG KG_CAP A 2007 5.880921885
Malaysia MEATCONSUMP PIG KG_CAP A 2008 5.670841791
Malaysia MEATCONSUMP PIG KG_CAP A 2009 5.813596426
Malaysia MEATCONSUMP PIG KG_CAP A 2010 6.794959794
Malaysia MEATCONSUMP PIG KG_CAP A 2011 6.620222632
Malaysia MEATCONSUMP PIG KG_CAP A 2012 6.461702537
Malaysia MEATCONSUMP PIG KG_CAP A 2013 6.334307498
Malaysia MEATCONSUMP PIG KG_CAP A 2014 6.247984059
Mozambique MEATCONSUMP PIG KG_CAP A 1983 0.660050026
Mozambique MEATCONSUMP PIG KG_CAP A 1984 0.60563064
Mozambique MEATCONSUMP PIG KG_CAP A 1985 0.615445669
Mozambique MEATCONSUMP PIG KG_CAP A 1986 0.631599033
Mozambique MEATCONSUMP PIG KG_CAP A 1987 0.657215454
Mozambique MEATCONSUMP PIG KG_CAP A 1988 0.678090528
Mozambique MEATCONSUMP PIG KG_CAP A 1989 0.694250079
Mozambique MEATCONSUMP PIG KG_CAP A 1990 0.716441611
Mozambique MEATCONSUMP PIG KG_CAP A 1991 0.658256759
Mozambique MEATCONSUMP PIG KG_CAP A 1992 0.665767246
Mozambique MEATCONSUMP PIG KG_CAP A 1993 0.643496606
Mozambique MEATCONSUMP PIG KG_CAP A 1994 0.626347612
Mozambique MEATCONSUMP PIG KG_CAP A 1995 0.593121636
Mozambique MEATCONSUMP PIG KG_CAP A 1996 0.573376026
Mozambique MEATCONSUMP PIG KG_CAP A 1997 0.561581996
Mozambique MEATCONSUMP PIG KG_CAP A 1998 0.550145237
Mozambique MEATCONSUMP PIG KG_CAP A 1999 0.532975619
Mozambique MEATCONSUMP PIG KG_CAP A 2000 5.235142423
Mozambique MEATCONSUMP PIG KG_CAP A 2001 4.943546477
Mozambique MEATCONSUMP PIG KG_CAP A 2002 4.673927947
Mozambique MEATCONSUMP PIG KG_CAP A 2003 3.864192837
Mozambique MEATCONSUMP PIG KG_CAP A 2004 4.126722503
Mozambique MEATCONSUMP PIG KG_CAP A 2005 4.384777245
Mozambique MEATCONSUMP PIG KG_CAP A 2006 3.11052983
Mozambique MEATCONSUMP PIG KG_CAP A 2007 3.438139305
Mozambique MEATCONSUMP PIG KG_CAP A 2008 3.140114218
Mozambique MEATCONSUMP PIG KG_CAP A 2009 3.142534616
Mozambique MEATCONSUMP PIG KG_CAP A 2010 3.221048701
Mozambique MEATCONSUMP PIG KG_CAP A 2011 3.214370338
Mozambique MEATCONSUMP PIG KG_CAP A 2012 3.234228755
Mozambique MEATCONSUMP PIG KG_CAP A 2013 3.218788028
Mozambique MEATCONSUMP PIG KG_CAP A 2014 3.196839368
Nigeria MEATCONSUMP PIG KG_CAP A 1983 0.37421598
Nigeria MEATCONSUMP PIG KG_CAP A 1984 0.472159778
Nigeria MEATCONSUMP PIG KG_CAP A 1985 0.564776356
Nigeria MEATCONSUMP PIG KG_CAP A 1986 0.69310307
Nigeria MEATCONSUMP PIG KG_CAP A 1987 0.813955973
Nigeria MEATCONSUMP PIG KG_CAP A 1988 0.851806856
Nigeria MEATCONSUMP PIG KG_CAP A 1989 0.961140802
Nigeria MEATCONSUMP PIG KG_CAP A 1990 0.872166007
Nigeria MEATCONSUMP PIG KG_CAP A 1991 0.849377793
Nigeria MEATCONSUMP PIG KG_CAP A 1992 0.872409484
Nigeria MEATCONSUMP PIG KG_CAP A 1993 0.884815171
Nigeria MEATCONSUMP PIG KG_CAP A 1994 0.896170675
Nigeria MEATCONSUMP PIG KG_CAP A 1995 0.962010759
Nigeria MEATCONSUMP PIG KG_CAP A 1996 0.969865036
Nigeria MEATCONSUMP PIG KG_CAP A 1997 0.976723928
Nigeria MEATCONSUMP PIG KG_CAP A 1998 0.982621412
Nigeria MEATCONSUMP PIG KG_CAP A 1999 1.016890451
Nigeria MEATCONSUMP PIG KG_CAP A 2000 1.000048861
Nigeria MEATCONSUMP PIG KG_CAP A 2001 1.145546103
Nigeria MEATCONSUMP PIG KG_CAP A 2002 1.162806076
Nigeria MEATCONSUMP PIG KG_CAP A 2003 1.05446767
Nigeria MEATCONSUMP PIG KG_CAP A 2004 1.069312827
Nigeria MEATCONSUMP PIG KG_CAP A 2005 1.082084203
Nigeria MEATCONSUMP PIG KG_CAP A 2006 1.096331841
Nigeria MEATCONSUMP PIG KG_CAP A 2007 1.108916187
Nigeria MEATCONSUMP PIG KG_CAP A 2008 1.12251598
Nigeria MEATCONSUMP PIG KG_CAP A 2009 1.136147733
Nigeria MEATCONSUMP PIG KG_CAP A 2010 1.144124618
Nigeria MEATCONSUMP PIG KG_CAP A 2011 1.158572668
Nigeria MEATCONSUMP PIG KG_CAP A 2012 1.153007493
Nigeria MEATCONSUMP PIG KG_CAP A 2013 1.126534974
Nigeria MEATCONSUMP PIG KG_CAP A 2014 1.117456201
Pakistan MEATCONSUMP PIG KG_CAP A 1983 0.0000299
Pakistan MEATCONSUMP PIG KG_CAP A 1984 0.000202569
Pakistan MEATCONSUMP PIG KG_CAP A 1985 0.000021
Pakistan MEATCONSUMP PIG KG_CAP A 1986 0.00000677
Pakistan MEATCONSUMP PIG KG_CAP A 1987 0.00000655
Pakistan MEATCONSUMP PIG KG_CAP A 1988 0.00000895
Pakistan MEATCONSUMP PIG KG_CAP A 1989 0.0000246
Pakistan MEATCONSUMP PIG KG_CAP A 2002 0.00000443
Pakistan MEATCONSUMP PIG KG_CAP A 2003 0.000655493
Pakistan MEATCONSUMP PIG KG_CAP A 2004 0.002026026
Pakistan MEATCONSUMP PIG KG_CAP A 2005 0.000291764
Pakistan MEATCONSUMP PIG KG_CAP A 2006 0.000931166
Pakistan MEATCONSUMP PIG KG_CAP A 2007 0.000105108
Pakistan MEATCONSUMP PIG KG_CAP A 2008 0.00000934
Pakistan MEATCONSUMP PIG KG_CAP A 2009 0.0000688
Pakistan MEATCONSUMP PIG KG_CAP A 2010 0.00023015
Pakistan MEATCONSUMP PIG KG_CAP A 2011 0.0000266
Pakistan MEATCONSUMP PIG KG_CAP A 2012 0.0000261
Pakistan MEATCONSUMP PIG KG_CAP A 2013 0.0000263
Paraguay MEATCONSUMP PIG KG_CAP A 1983 22.49044923
Paraguay MEATCONSUMP PIG KG_CAP A 1984 22.48865848
Paraguay MEATCONSUMP PIG KG_CAP A 1985 22.4941582
Paraguay MEATCONSUMP PIG KG_CAP A 1986 21.97066436
Paraguay MEATCONSUMP PIG KG_CAP A 1987 21.46656756
Paraguay MEATCONSUMP PIG KG_CAP A 1988 21.20641826
Paraguay MEATCONSUMP PIG KG_CAP A 1989 21.51710829
Paraguay MEATCONSUMP PIG KG_CAP A 1990 21.6809366
Paraguay MEATCONSUMP PIG KG_CAP A 1991 21.56530223
Paraguay MEATCONSUMP PIG KG_CAP A 1992 22.06627163
Paraguay MEATCONSUMP PIG KG_CAP A 1993 21.5884901
Paraguay MEATCONSUMP PIG KG_CAP A 1994 21.24961512
Paraguay MEATCONSUMP PIG KG_CAP A 1995 21.14201537
Paraguay MEATCONSUMP PIG KG_CAP A 1996 18.43960986
Paraguay MEATCONSUMP PIG KG_CAP A 1997 18.34151307
Paraguay MEATCONSUMP PIG KG_CAP A 1998 18.15772099
Paraguay MEATCONSUMP PIG KG_CAP A 1999 17.96200203
Paraguay MEATCONSUMP PIG KG_CAP A 2000 16.66107822
Paraguay MEATCONSUMP PIG KG_CAP A 2001 16.7833543
Paraguay MEATCONSUMP PIG KG_CAP A 2002 12.6302956
Paraguay MEATCONSUMP PIG KG_CAP A 2003 21.10131946
Paraguay MEATCONSUMP PIG KG_CAP A 2004 19.92063249
Paraguay MEATCONSUMP PIG KG_CAP A 2005 19.94324211
Paraguay MEATCONSUMP PIG KG_CAP A 2006 20.02038909
Paraguay MEATCONSUMP PIG KG_CAP A 2007 18.82786287
Paraguay MEATCONSUMP PIG KG_CAP A 2008 17.94475157
Paraguay MEATCONSUMP PIG KG_CAP A 2009 17.74767296
Paraguay MEATCONSUMP PIG KG_CAP A 2010 19.49637786
Paraguay MEATCONSUMP PIG KG_CAP A 2011 19.71834699
Paraguay MEATCONSUMP PIG KG_CAP A 2012 14.86129179
Paraguay MEATCONSUMP PIG KG_CAP A 2013 14.92194342
Paraguay MEATCONSUMP PIG KG_CAP A 2014 16.48485606
Peru MEATCONSUMP PIG KG_CAP A 1983 2.413966652
Peru MEATCONSUMP PIG KG_CAP A 1984 2.230139875
Peru MEATCONSUMP PIG KG_CAP A 1985 2.156643489
Peru MEATCONSUMP PIG KG_CAP A 1986 2.322823063
Peru MEATCONSUMP PIG KG_CAP A 1987 2.482415927
Peru MEATCONSUMP PIG KG_CAP A 1988 2.74621575
Peru MEATCONSUMP PIG KG_CAP A 1989 2.684610391
Peru MEATCONSUMP PIG KG_CAP A 1990 2.383247612
Peru MEATCONSUMP PIG KG_CAP A 1991 2.418541099
Peru MEATCONSUMP PIG KG_CAP A 1992 2.5171933
Peru MEATCONSUMP PIG KG_CAP A 1993 2.556449408
Peru MEATCONSUMP PIG KG_CAP A 1994 2.591220631
Peru MEATCONSUMP PIG KG_CAP A 1995 2.623029438
Peru MEATCONSUMP PIG KG_CAP A 1996 2.672807928
Peru MEATCONSUMP PIG KG_CAP A 1997 2.736768291
Peru MEATCONSUMP PIG KG_CAP A 1998 2.204749671
Peru MEATCONSUMP PIG KG_CAP A 1999 2.024150758
Peru MEATCONSUMP PIG KG_CAP A 2000 2.171560593
Peru MEATCONSUMP PIG KG_CAP A 2001 2.525496828
Peru MEATCONSUMP PIG KG_CAP A 2002 2.708638338
Peru MEATCONSUMP PIG KG_CAP A 2003 2.684107122
Peru MEATCONSUMP PIG KG_CAP A 2004 2.802226376
Peru MEATCONSUMP PIG KG_CAP A 2005 2.926259185
Peru MEATCONSUMP PIG KG_CAP A 2006 3.057168061
Peru MEATCONSUMP PIG KG_CAP A 2007 3.195857846
Peru MEATCONSUMP PIG KG_CAP A 2008 3.184822976
Peru MEATCONSUMP PIG KG_CAP A 2009 3.150408679
Peru MEATCONSUMP PIG KG_CAP A 2010 3.204815668
Peru MEATCONSUMP PIG KG_CAP A 2011 3.201621627
Peru MEATCONSUMP PIG KG_CAP A 2012 3.295856276
Peru MEATCONSUMP PIG KG_CAP A 2013 3.323987308
Peru MEATCONSUMP PIG KG_CAP A 2014 3.362649572
Philippines MEATCONSUMP PIG KG_CAP A 1983 6.859605126
Philippines MEATCONSUMP PIG KG_CAP A 1984 8.397684318
Philippines MEATCONSUMP PIG KG_CAP A 1985 5.704465886
Philippines MEATCONSUMP PIG KG_CAP A 1986 6.432303751
Philippines MEATCONSUMP PIG KG_CAP A 1987 6.824170871
Philippines MEATCONSUMP PIG KG_CAP A 1988 7.536875905
Philippines MEATCONSUMP PIG KG_CAP A 1989 8.29092039
Philippines MEATCONSUMP PIG KG_CAP A 1990 8.622380453
Philippines MEATCONSUMP PIG KG_CAP A 1991 8.622567659
Philippines MEATCONSUMP PIG KG_CAP A 1992 7.903027597
Philippines MEATCONSUMP PIG KG_CAP A 1993 8.572569552
Philippines MEATCONSUMP PIG KG_CAP A 1994 8.681098752
Philippines MEATCONSUMP PIG KG_CAP A 1995 9.124126857
Philippines MEATCONSUMP PIG KG_CAP A 1996 11.42797754
Philippines MEATCONSUMP PIG KG_CAP A 1997 11.76643063
Philippines MEATCONSUMP PIG KG_CAP A 1998 12.00110325
Philippines MEATCONSUMP PIG KG_CAP A 1999 12.44376393
Philippines MEATCONSUMP PIG KG_CAP A 2000 12.55910667
Philippines MEATCONSUMP PIG KG_CAP A 2001 12.77411147
Philippines MEATCONSUMP PIG KG_CAP A 2002 13.21031447
Philippines MEATCONSUMP PIG KG_CAP A 2003 13.26742225
Philippines MEATCONSUMP PIG KG_CAP A 2004 12.85132712
Philippines MEATCONSUMP PIG KG_CAP A 2005 13.0577593
Philippines MEATCONSUMP PIG KG_CAP A 2006 14.17265871
Philippines MEATCONSUMP PIG KG_CAP A 2007 14.39337625
Philippines MEATCONSUMP PIG KG_CAP A 2008 14.22549023
Philippines MEATCONSUMP PIG KG_CAP A 2009 14.10240889
Philippines MEATCONSUMP PIG KG_CAP A 2010 14.40999179
Philippines MEATCONSUMP PIG KG_CAP A 2011 14.29747849
Philippines MEATCONSUMP PIG KG_CAP A 2012 14.29659144
Philippines MEATCONSUMP PIG KG_CAP A 2013 14.65771139
Philippines MEATCONSUMP PIG KG_CAP A 2014 14.71330545
Russia MEATCONSUMP PIG KG_CAP A 1993 14.63195463
Russia MEATCONSUMP PIG KG_CAP A 1994 13.17956261
Russia MEATCONSUMP PIG KG_CAP A 1995 12.48052071
Russia MEATCONSUMP PIG KG_CAP A 1996 11.64965598
Russia MEATCONSUMP PIG KG_CAP A 1997 11.8013744
Russia MEATCONSUMP PIG KG_CAP A 1998 11.70668897
Russia MEATCONSUMP PIG KG_CAP A 1999 10.68981597
Russia MEATCONSUMP PIG KG_CAP A 2000 9.468560242
Russia MEATCONSUMP PIG KG_CAP A 2001 10.11751728
Russia MEATCONSUMP PIG KG_CAP A 2002 11.93577719
Russia MEATCONSUMP PIG KG_CAP A 2003 11.35492851
Russia MEATCONSUMP PIG KG_CAP A 2004 11.73312642
Russia MEATCONSUMP PIG KG_CAP A 2005 12.90829232
Russia MEATCONSUMP PIG KG_CAP A 2006 13.97231798
Russia MEATCONSUMP PIG KG_CAP A 2007 15.32733009
Russia MEATCONSUMP PIG KG_CAP A 2008 18.01127115
Russia MEATCONSUMP PIG KG_CAP A 2009 17.35305264
Russia MEATCONSUMP PIG KG_CAP A 2010 18.50717285
Russia MEATCONSUMP PIG KG_CAP A 2011 19.30122468
Russia MEATCONSUMP PIG KG_CAP A 2012 19.6635406
Russia MEATCONSUMP PIG KG_CAP A 2013 20.21645678
Russia MEATCONSUMP PIG KG_CAP A 2014 20.16869838
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1983 0.00000591
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1984 0.00000557
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1985 0.00000529
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1986 0.00000504
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1987 0.00000483
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1988 0.00000465
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1989 0.00000448
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1990 0.00000433
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1991 0.00000419
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1992 0.00000407
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1993 0.00000395
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1994 0.00000386
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1995 0.00000378
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1996 0.00000372
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1997 0.00000368
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1998 0.00000364
Saudi Arabia MEATCONSUMP PIG KG_CAP A 1999 0.00000358
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2000 0.081310504
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2001 0.103644951
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2002 0.092920967
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2003 0.077620788
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2004 0.08147448
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2005 0.149779265
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2006 0.127492124
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2007 0.162798666
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2008 0.000680422
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2009 0.001513659
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2010 0.17770196
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2011 0.241765737
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2012 0.253566179
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2013 0.254029621
Saudi Arabia MEATCONSUMP PIG KG_CAP A 2014 0.2538207
South Africa MEATCONSUMP PIG KG_CAP A 1983 2.766886787
South Africa MEATCONSUMP PIG KG_CAP A 1984 2.655157053
South Africa MEATCONSUMP PIG KG_CAP A 1985 2.497383513
South Africa MEATCONSUMP PIG KG_CAP A 1986 2.400071799
South Africa MEATCONSUMP PIG KG_CAP A 1987 2.441976311
South Africa MEATCONSUMP PIG KG_CAP A 1988 2.575331907
South Africa MEATCONSUMP PIG KG_CAP A 1989 2.761232454
South Africa MEATCONSUMP PIG KG_CAP A 1990 2.759127192
South Africa MEATCONSUMP PIG KG_CAP A 1991 2.347208415
South Africa MEATCONSUMP PIG KG_CAP A 1992 2.608319187
South Africa MEATCONSUMP PIG KG_CAP A 1993 2.40405961
South Africa MEATCONSUMP PIG KG_CAP A 1994 2.355113028
South Africa MEATCONSUMP PIG KG_CAP A 1995 2.608481228
South Africa MEATCONSUMP PIG KG_CAP A 1996 2.495319994
South Africa MEATCONSUMP PIG KG_CAP A 1997 2.362330103
South Africa MEATCONSUMP PIG KG_CAP A 1998 2.228467099
South Africa MEATCONSUMP PIG KG_CAP A 1999 2.346307701
South Africa MEATCONSUMP PIG KG_CAP A 2000 1.985578936
South Africa MEATCONSUMP PIG KG_CAP A 2001 2.036175568
South Africa MEATCONSUMP PIG KG_CAP A 2002 1.997383001
South Africa MEATCONSUMP PIG KG_CAP A 2003 2.605392064
South Africa MEATCONSUMP PIG KG_CAP A 2004 2.843515282
South Africa MEATCONSUMP PIG KG_CAP A 2005 2.622908627
South Africa MEATCONSUMP PIG KG_CAP A 2006 2.832867381
South Africa MEATCONSUMP PIG KG_CAP A 2007 3.999349759
South Africa MEATCONSUMP PIG KG_CAP A 2008 4.906953618
South Africa MEATCONSUMP PIG KG_CAP A 2009 5.270356766
South Africa MEATCONSUMP PIG KG_CAP A 2010 3.557919883
South Africa MEATCONSUMP PIG KG_CAP A 2011 3.635996112
South Africa MEATCONSUMP PIG KG_CAP A 2012 3.727564984
South Africa MEATCONSUMP PIG KG_CAP A 2013 3.564107547
South Africa MEATCONSUMP PIG KG_CAP A 2014 3.380655526
Sudan MEATCONSUMP PIG KG_CAP A 1983 0.000119694
Sudan MEATCONSUMP PIG KG_CAP A 1984 0.00000321
Sudan MEATCONSUMP PIG KG_CAP A 1985 0.00000311
Sudan MEATCONSUMP PIG KG_CAP A 1986 0.00000303
Sudan MEATCONSUMP PIG KG_CAP A 1987 0.000557073
Sudan MEATCONSUMP PIG KG_CAP A 1988 0.00000287
Sudan MEATCONSUMP PIG KG_CAP A 1989 0.0000028
Sudan MEATCONSUMP PIG KG_CAP A 1990 0.00000272
Sudan MEATCONSUMP PIG KG_CAP A 1991 0.00000265
Sudan MEATCONSUMP PIG KG_CAP A 1992 0.00000257
Sudan MEATCONSUMP PIG KG_CAP A 1993 0.00000249
Sudan MEATCONSUMP PIG KG_CAP A 1994 0.00000241
Sudan MEATCONSUMP PIG KG_CAP A 1995 0.00000234
Sudan MEATCONSUMP PIG KG_CAP A 1996 0.00000228
Sudan MEATCONSUMP PIG KG_CAP A 1997 0.00022157
Sudan MEATCONSUMP PIG KG_CAP A 1998 0.000311502
Sudan MEATCONSUMP PIG KG_CAP A 1999 0.0000021
Sudan MEATCONSUMP PIG KG_CAP A 2000 0.00000204
Sudan MEATCONSUMP PIG KG_CAP A 2001 0.00000199
Sudan MEATCONSUMP PIG KG_CAP A 2002 0.00000193
Sudan MEATCONSUMP PIG KG_CAP A 2003 0.000141727
Sudan MEATCONSUMP PIG KG_CAP A 2004 0.000222805
Sudan MEATCONSUMP PIG KG_CAP A 2005 0.000295268
Sudan MEATCONSUMP PIG KG_CAP A 2006 0.001166891
Sudan MEATCONSUMP PIG KG_CAP A 2007 0.001467043
Sudan MEATCONSUMP PIG KG_CAP A 2008 0.002564757
Sudan MEATCONSUMP PIG KG_CAP A 2009 0.002162077
Sudan MEATCONSUMP PIG KG_CAP A 2010 0.002566183
Sudan MEATCONSUMP PIG KG_CAP A 2011 0.002832607
Sudan MEATCONSUMP PIG KG_CAP A 2012 0.002728124
Sudan MEATCONSUMP PIG KG_CAP A 2013 0.002713541
Sudan MEATCONSUMP PIG KG_CAP A 2014 0.002996258
Tanzania MEATCONSUMP PIG KG_CAP A 1983 0.19160961
Tanzania MEATCONSUMP PIG KG_CAP A 1984 0.292533508
Tanzania MEATCONSUMP PIG KG_CAP A 1985 0.288168433
Tanzania MEATCONSUMP PIG KG_CAP A 1986 0.284334379
Tanzania MEATCONSUMP PIG KG_CAP A 1987 0.276910754
Tanzania MEATCONSUMP PIG KG_CAP A 1988 0.277949296
Tanzania MEATCONSUMP PIG KG_CAP A 1989 0.274660741
Tanzania MEATCONSUMP PIG KG_CAP A 1990 0.274489315
Tanzania MEATCONSUMP PIG KG_CAP A 1991 0.273977611
Tanzania MEATCONSUMP PIG KG_CAP A 1992 0.264642116
Tanzania MEATCONSUMP PIG KG_CAP A 1993 0.259843026
Tanzania MEATCONSUMP PIG KG_CAP A 1994 0.251708126
Tanzania MEATCONSUMP PIG KG_CAP A 1995 0.255565656
Tanzania MEATCONSUMP PIG KG_CAP A 1996 0.265949846
Tanzania MEATCONSUMP PIG KG_CAP A 1997 0.271635613
Tanzania MEATCONSUMP PIG KG_CAP A 1998 0.28281252
Tanzania MEATCONSUMP PIG KG_CAP A 1999 0.299887828
Tanzania MEATCONSUMP PIG KG_CAP A 2000 0.295952238
Tanzania MEATCONSUMP PIG KG_CAP A 2001 0.293024718
Tanzania MEATCONSUMP PIG KG_CAP A 2002 0.285811208
Tanzania MEATCONSUMP PIG KG_CAP A 2003 0.28268734
Tanzania MEATCONSUMP PIG KG_CAP A 2004 0.305308081
Tanzania MEATCONSUMP PIG KG_CAP A 2005 0.292319188
Tanzania MEATCONSUMP PIG KG_CAP A 2006 0.272906455
Tanzania MEATCONSUMP PIG KG_CAP A 2007 0.260535744
Tanzania MEATCONSUMP PIG KG_CAP A 2008 0.269705332
Tanzania MEATCONSUMP PIG KG_CAP A 2009 0.275430795
Tanzania MEATCONSUMP PIG KG_CAP A 2010 0.265289832
Tanzania MEATCONSUMP PIG KG_CAP A 2011 0.272070305
Tanzania MEATCONSUMP PIG KG_CAP A 2012 0.259744271
Tanzania MEATCONSUMP PIG KG_CAP A 2013 0.247967108
Tanzania MEATCONSUMP PIG KG_CAP A 2014 0.245047581
Thailand MEATCONSUMP PIG KG_CAP A 1983 3.404696758
Thailand MEATCONSUMP PIG KG_CAP A 1984 4.22101529
Thailand MEATCONSUMP PIG KG_CAP A 1985 5.658035771
Thailand MEATCONSUMP PIG KG_CAP A 1986 4.061263026
Thailand MEATCONSUMP PIG KG_CAP A 1987 4.700559927
Thailand MEATCONSUMP PIG KG_CAP A 1988 4.730609099
Thailand MEATCONSUMP PIG KG_CAP A 1989 4.668755573
Thailand MEATCONSUMP PIG KG_CAP A 1990 4.631926683
Thailand MEATCONSUMP PIG KG_CAP A 1991 5.462935426
Thailand MEATCONSUMP PIG KG_CAP A 1992 5.854508277
Thailand MEATCONSUMP PIG KG_CAP A 1993 6.146878145
Thailand MEATCONSUMP PIG KG_CAP A 1994 6.506335854
Thailand MEATCONSUMP PIG KG_CAP A 1995 6.42748986
Thailand MEATCONSUMP PIG KG_CAP A 1996 6.674041087
Thailand MEATCONSUMP PIG KG_CAP A 1997 6.872727992
Thailand MEATCONSUMP PIG KG_CAP A 1998 5.938877944
Thailand MEATCONSUMP PIG KG_CAP A 1999 5.696234633
Thailand MEATCONSUMP PIG KG_CAP A 2000 8.577574054
Thailand MEATCONSUMP PIG KG_CAP A 2001 8.510146904
Thailand MEATCONSUMP PIG KG_CAP A 2002 9.426732188
Thailand MEATCONSUMP PIG KG_CAP A 2003 10.31331359
Thailand MEATCONSUMP PIG KG_CAP A 2004 10.35062972
Thailand MEATCONSUMP PIG KG_CAP A 2005 10.50924452
Thailand MEATCONSUMP PIG KG_CAP A 2006 10.95719817
Thailand MEATCONSUMP PIG KG_CAP A 2007 12.15093976
Thailand MEATCONSUMP PIG KG_CAP A 2008 10.47021969
Thailand MEATCONSUMP PIG KG_CAP A 2009 9.332060321
Thailand MEATCONSUMP PIG KG_CAP A 2010 9.941951358
Thailand MEATCONSUMP PIG KG_CAP A 2011 9.927191483
Thailand MEATCONSUMP PIG KG_CAP A 2012 10.05113254
Thailand MEATCONSUMP PIG KG_CAP A 2013 10.05608764
Thailand MEATCONSUMP PIG KG_CAP A 2014 10.10473779
Ukraine MEATCONSUMP PIG KG_CAP A 1992 17.63717637
Ukraine MEATCONSUMP PIG KG_CAP A 1993 15.25675801
Ukraine MEATCONSUMP PIG KG_CAP A 1994 13.05886219
Ukraine MEATCONSUMP PIG KG_CAP A 1995 12.2794645
Ukraine MEATCONSUMP PIG KG_CAP A 1996 12.08683505
Ukraine MEATCONSUMP PIG KG_CAP A 1997 10.83921536
Ukraine MEATCONSUMP PIG KG_CAP A 1998 10.55892397
Ukraine MEATCONSUMP PIG KG_CAP A 1999 10.06219703
Ukraine MEATCONSUMP PIG KG_CAP A 2000 10.94987104
Ukraine MEATCONSUMP PIG KG_CAP A 2001 9.510704874
Ukraine MEATCONSUMP PIG KG_CAP A 2002 9.748656945
Ukraine MEATCONSUMP PIG KG_CAP A 2003 10.79545468
Ukraine MEATCONSUMP PIG KG_CAP A 2004 9.850142137
Ukraine MEATCONSUMP PIG KG_CAP A 2005 8.998363285
Ukraine MEATCONSUMP PIG KG_CAP A 2006 9.737011282
Ukraine MEATCONSUMP PIG KG_CAP A 2007 11.87454802
Ukraine MEATCONSUMP PIG KG_CAP A 2008 13.42242695
Ukraine MEATCONSUMP PIG KG_CAP A 2009 11.59203731
Ukraine MEATCONSUMP PIG KG_CAP A 2010 12.97003575
Ukraine MEATCONSUMP PIG KG_CAP A 2011 13.66957476
Ukraine MEATCONSUMP PIG KG_CAP A 2012 16.00543539
Ukraine MEATCONSUMP PIG KG_CAP A 2013 16.11152851
Ukraine MEATCONSUMP PIG KG_CAP A 2014 15.47597358
Uruguay MEATCONSUMP PIG KG_CAP A 1983 5.745343998
Uruguay MEATCONSUMP PIG KG_CAP A 1984 4.982644389
Uruguay MEATCONSUMP PIG KG_CAP A 1985 5.064538333
Uruguay MEATCONSUMP PIG KG_CAP A 1986 4.425438529
Uruguay MEATCONSUMP PIG KG_CAP A 1987 4.885216572
Uruguay MEATCONSUMP PIG KG_CAP A 1988 5.043555229
Uruguay MEATCONSUMP PIG KG_CAP A 1989 5.21365229
Uruguay MEATCONSUMP PIG KG_CAP A 1990 5.60451342
Uruguay MEATCONSUMP PIG KG_CAP A 1991 5.496633683
Uruguay MEATCONSUMP PIG KG_CAP A 1992 5.725014579
Uruguay MEATCONSUMP PIG KG_CAP A 1993 6.091549299
Uruguay MEATCONSUMP PIG KG_CAP A 1994 6.359865319
Uruguay MEATCONSUMP PIG KG_CAP A 1995 6.072580737
Uruguay MEATCONSUMP PIG KG_CAP A 1996 6.076927819
Uruguay MEATCONSUMP PIG KG_CAP A 1997 6.326584823
Uruguay MEATCONSUMP PIG KG_CAP A 1998 7.331407844
Uruguay MEATCONSUMP PIG KG_CAP A 1999 8.133191742
Uruguay MEATCONSUMP PIG KG_CAP A 2000 7.815682567
Uruguay MEATCONSUMP PIG KG_CAP A 2001 7.566234358
Uruguay MEATCONSUMP PIG KG_CAP A 2002 6.321471334
Uruguay MEATCONSUMP PIG KG_CAP A 2003 6.302939875
Uruguay MEATCONSUMP PIG KG_CAP A 2004 6.600902778
Uruguay MEATCONSUMP PIG KG_CAP A 2005 6.654983784
Uruguay MEATCONSUMP PIG KG_CAP A 2006 6.588071943
Uruguay MEATCONSUMP PIG KG_CAP A 2007 7.897675333
Uruguay MEATCONSUMP PIG KG_CAP A 2008 7.817934024
Uruguay MEATCONSUMP PIG KG_CAP A 2009 7.513767992
Uruguay MEATCONSUMP PIG KG_CAP A 2010 8.378292097
Uruguay MEATCONSUMP PIG KG_CAP A 2011 9.995897154
Uruguay MEATCONSUMP PIG KG_CAP A 2012 11.6747281
Uruguay MEATCONSUMP PIG KG_CAP A 2013 13.17345973
Uruguay MEATCONSUMP PIG KG_CAP A 2014 13.30264102
Viet Nam MEATCONSUMP PIG KG_CAP A 1983 6.758315699
Viet Nam MEATCONSUMP PIG KG_CAP A 1984 6.849591017
Viet Nam MEATCONSUMP PIG KG_CAP A 1985 7.047161627
Viet Nam MEATCONSUMP PIG KG_CAP A 1986 7.651926542
Viet Nam MEATCONSUMP PIG KG_CAP A 1987 8.003590326
Viet Nam MEATCONSUMP PIG KG_CAP A 1988 7.772842192
Viet Nam MEATCONSUMP PIG KG_CAP A 1989 8.15376698
Viet Nam MEATCONSUMP PIG KG_CAP A 1990 8.063781871
Viet Nam MEATCONSUMP PIG KG_CAP A 1991 7.650355746
Viet Nam MEATCONSUMP PIG KG_CAP A 1992 8.762267201
Viet Nam MEATCONSUMP PIG KG_CAP A 1993 9.125500398
Viet Nam MEATCONSUMP PIG KG_CAP A 1994 9.862575999
Viet Nam MEATCONSUMP PIG KG_CAP A 1995 10.26744233
Viet Nam MEATCONSUMP PIG KG_CAP A 1996 10.58791111
Viet Nam MEATCONSUMP PIG KG_CAP A 1997 10.86725504
Viet Nam MEATCONSUMP PIG KG_CAP A 1998 11.4468079
Viet Nam MEATCONSUMP PIG KG_CAP A 1999 12.17321682
Viet Nam MEATCONSUMP PIG KG_CAP A 2000 12.87160184
Viet Nam MEATCONSUMP PIG KG_CAP A 2001 13.98397316
Viet Nam MEATCONSUMP PIG KG_CAP A 2002 15.4881313
Viet Nam MEATCONSUMP PIG KG_CAP A 2003 16.71398898
Viet Nam MEATCONSUMP PIG KG_CAP A 2004 18.33816212
Viet Nam MEATCONSUMP PIG KG_CAP A 2005 20.89343743
Viet Nam MEATCONSUMP PIG KG_CAP A 2006 23.03033962
Viet Nam MEATCONSUMP PIG KG_CAP A 2007 24.09591962
Viet Nam MEATCONSUMP PIG KG_CAP A 2008 24.98556986
Viet Nam MEATCONSUMP PIG KG_CAP A 2009 27.04519126
Viet Nam MEATCONSUMP PIG KG_CAP A 2010 26.63961781
Viet Nam MEATCONSUMP PIG KG_CAP A 2011 27.02605471
Viet Nam MEATCONSUMP PIG KG_CAP A 2012 27.2523138
Viet Nam MEATCONSUMP PIG KG_CAP A 2013 28.17542447
Viet Nam MEATCONSUMP PIG KG_CAP A 2014 28.77443854
Zambia MEATCONSUMP PIG KG_CAP A 1983 0.774933382
Zambia MEATCONSUMP PIG KG_CAP A 1984 0.644825038
Zambia MEATCONSUMP PIG KG_CAP A 1985 0.668532295
Zambia MEATCONSUMP PIG KG_CAP A 1986 0.681915645
Zambia MEATCONSUMP PIG KG_CAP A 1987 0.697059864
Zambia MEATCONSUMP PIG KG_CAP A 1988 0.71391687
Zambia MEATCONSUMP PIG KG_CAP A 1989 0.960439425
Zambia MEATCONSUMP PIG KG_CAP A 1990 0.940573618
Zambia MEATCONSUMP PIG KG_CAP A 1991 0.922259333
Zambia MEATCONSUMP PIG KG_CAP A 1992 0.897598086
Zambia MEATCONSUMP PIG KG_CAP A 1993 0.8986308
Zambia MEATCONSUMP PIG KG_CAP A 1994 0.91609168
Zambia MEATCONSUMP PIG KG_CAP A 1995 0.853959308
Zambia MEATCONSUMP PIG KG_CAP A 1996 0.901982782
Zambia MEATCONSUMP PIG KG_CAP A 1997 0.869520093
Zambia MEATCONSUMP PIG KG_CAP A 1998 0.875860971
Zambia MEATCONSUMP PIG KG_CAP A 1999 0.851939357
Zambia MEATCONSUMP PIG KG_CAP A 2000 0.795440895
Zambia MEATCONSUMP PIG KG_CAP A 2001 0.798081822
Zambia MEATCONSUMP PIG KG_CAP A 2002 0.663620367
Zambia MEATCONSUMP PIG KG_CAP A 2003 0.632340556
Zambia MEATCONSUMP PIG KG_CAP A 2004 0.651095863
Zambia MEATCONSUMP PIG KG_CAP A 2005 0.676294661
Zambia MEATCONSUMP PIG KG_CAP A 2006 0.860430244
Zambia MEATCONSUMP PIG KG_CAP A 2007 1.142175049
Zambia MEATCONSUMP PIG KG_CAP A 2008 1.453366007
Zambia MEATCONSUMP PIG KG_CAP A 2009 1.398830409
Zambia MEATCONSUMP PIG KG_CAP A 2010 1.359703466
Zambia MEATCONSUMP PIG KG_CAP A 2011 1.318802995
Zambia MEATCONSUMP PIG KG_CAP A 2012 1.29671191
Zambia MEATCONSUMP PIG KG_CAP A 2013 1.269706297
Zambia MEATCONSUMP PIG KG_CAP A 2014 1.254200113
World MEATCONSUMP PIG KG_CAP A 1995 10.61424673
World MEATCONSUMP PIG KG_CAP A 1996 10.47007127
World MEATCONSUMP PIG KG_CAP A 1997 10.85320202
World MEATCONSUMP PIG KG_CAP A 1998 11.42037652
World MEATCONSUMP PIG KG_CAP A 1999 11.33148703
World MEATCONSUMP PIG KG_CAP A 2000 11.42511173
World MEATCONSUMP PIG KG_CAP A 2001 11.52359767
World MEATCONSUMP PIG KG_CAP A 2002 11.78761622
World MEATCONSUMP PIG KG_CAP A 2003 11.64459962
World MEATCONSUMP PIG KG_CAP A 2004 11.61511795
World MEATCONSUMP PIG KG_CAP A 2005 11.79233697
World MEATCONSUMP PIG KG_CAP A 2006 11.93760359
World MEATCONSUMP PIG KG_CAP A 2007 11.66175936
World MEATCONSUMP PIG KG_CAP A 2008 12.01766418
World MEATCONSUMP PIG KG_CAP A 2009 12.10038928
World MEATCONSUMP PIG KG_CAP A 2010 12.30626782
World MEATCONSUMP PIG KG_CAP A 2011 12.07165189
World MEATCONSUMP PIG KG_CAP A 2012 12.37653352
World MEATCONSUMP PIG KG_CAP A 2013 12.50159881
World MEATCONSUMP PIG KG_CAP A 2014 12.57783357
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1983 0.643845493
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1984 0.681409999
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1985 0.710118368
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1986 0.755178872
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1987 0.812073675
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1988 0.820769999
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1989 0.883739413
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1990 0.878126637
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1991 0.859815492
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1992 0.872269621
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1993 0.76518648
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1994 0.760657419
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1995 0.789942748
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1996 0.769911097
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1997 0.783070656
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1998 0.761289236
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 1999 0.745773311
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2000 0.88167494
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2001 0.908350345
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2002 0.899516005
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2003 0.870249266
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2004 0.89582545
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2005 0.942551235
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2006 0.951736418
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2007 1.001863538
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2008 1.01500522
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2009 1.042862663
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2010 1.044444914
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2011 1.096588793
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2012 1.114657411
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2013 1.119358187
Sub-Saharan Africa MEATCONSUMP PIG KG_CAP A 2014 1.13102396
Location IndiaICATOR SUBJECT MEASURE FREQUENCY Year number
Australia MEATCONSUMP POULTRY KG_CAP A 1983 16.96060358
Australia MEATCONSUMP POULTRY KG_CAP A 1984 17.55969477
Australia MEATCONSUMP POULTRY KG_CAP A 1985 20.00473336
Australia MEATCONSUMP POULTRY KG_CAP A 1986 19.7955826
Australia MEATCONSUMP POULTRY KG_CAP A 1987 20.79394376
Australia MEATCONSUMP POULTRY KG_CAP A 1988 20.87972653
Australia MEATCONSUMP POULTRY KG_CAP A 1989 21.07569758
Australia MEATCONSUMP POULTRY KG_CAP A 1990 21.76757838
Australia MEATCONSUMP POULTRY KG_CAP A 1991 22.06203845
Australia MEATCONSUMP POULTRY KG_CAP A 1992 22.08448727
Australia MEATCONSUMP POULTRY KG_CAP A 1993 23.26942636
Australia MEATCONSUMP POULTRY KG_CAP A 1994 24.00886615
Australia MEATCONSUMP POULTRY KG_CAP A 1995 23.57919518
Australia MEATCONSUMP POULTRY KG_CAP A 1996 23.9964458
Australia MEATCONSUMP POULTRY KG_CAP A 1997 25.17827881
Australia MEATCONSUMP POULTRY KG_CAP A 1998 27.04727305
Australia MEATCONSUMP POULTRY KG_CAP A 1999 27.27693377
Australia MEATCONSUMP POULTRY KG_CAP A 2000 28.9619066
Australia MEATCONSUMP POULTRY KG_CAP A 2001 28.50987291
Australia MEATCONSUMP POULTRY KG_CAP A 2002 31.62468212
Australia MEATCONSUMP POULTRY KG_CAP A 2003 30.53036336
Australia MEATCONSUMP POULTRY KG_CAP A 2004 31.94308655
Australia MEATCONSUMP POULTRY KG_CAP A 2005 33.17728052
Australia MEATCONSUMP POULTRY KG_CAP A 2006 34.30249686
Australia MEATCONSUMP POULTRY KG_CAP A 2007 33.90210993
Australia MEATCONSUMP POULTRY KG_CAP A 2008 32.46606716
Australia MEATCONSUMP POULTRY KG_CAP A 2009 32.91928368
Australia MEATCONSUMP POULTRY KG_CAP A 2010 35.3147667
Australia MEATCONSUMP POULTRY KG_CAP A 2011 37.44729007
Australia MEATCONSUMP POULTRY KG_CAP A 2012 38.19191183
Australia MEATCONSUMP POULTRY KG_CAP A 2013 38.51687943
Australia MEATCONSUMP POULTRY KG_CAP A 2014 39.57125874
Canada MEATCONSUMP POULTRY KG_CAP A 1983 21.48335654
Canada MEATCONSUMP POULTRY KG_CAP A 1984 22.12948821
Canada MEATCONSUMP POULTRY KG_CAP A 1985 23.24083469
Canada MEATCONSUMP POULTRY KG_CAP A 1986 23.52118591
Canada MEATCONSUMP POULTRY KG_CAP A 1987 24.80348913
Canada MEATCONSUMP POULTRY KG_CAP A 1988 25.59877469
Canada MEATCONSUMP POULTRY KG_CAP A 1989 25.35109473
Canada MEATCONSUMP POULTRY KG_CAP A 1990 25.86955591
Canada MEATCONSUMP POULTRY KG_CAP A 1991 25.83596613
Canada MEATCONSUMP POULTRY KG_CAP A 1992 25.86241338
Canada MEATCONSUMP POULTRY KG_CAP A 1993 26.40291468
Canada MEATCONSUMP POULTRY KG_CAP A 1994 28.03812263
Canada MEATCONSUMP POULTRY KG_CAP A 1995 27.79291443
Canada MEATCONSUMP POULTRY KG_CAP A 1996 27.62036273
Canada MEATCONSUMP POULTRY KG_CAP A 1997 28.05261626
Canada MEATCONSUMP POULTRY KG_CAP A 1998 28.61078797
Canada MEATCONSUMP POULTRY KG_CAP A 1999 29.80447859
Canada MEATCONSUMP POULTRY KG_CAP A 2000 31.22102846
Canada MEATCONSUMP POULTRY KG_CAP A 2001 32.32978157
Canada MEATCONSUMP POULTRY KG_CAP A 2002 32.62014938
Canada MEATCONSUMP POULTRY KG_CAP A 2003 32.75643511
Canada MEATCONSUMP POULTRY KG_CAP A 2004 32.92383265
Canada MEATCONSUMP POULTRY KG_CAP A 2005 33.13249729
Canada MEATCONSUMP POULTRY KG_CAP A 2006 33.46203531
Canada MEATCONSUMP POULTRY KG_CAP A 2007 33.58903509
Canada MEATCONSUMP POULTRY KG_CAP A 2008 33.75087687
Canada MEATCONSUMP POULTRY KG_CAP A 2009 33.24508302
Canada MEATCONSUMP POULTRY KG_CAP A 2010 32.85533753
Canada MEATCONSUMP POULTRY KG_CAP A 2011 32.63964906
Canada MEATCONSUMP POULTRY KG_CAP A 2012 31.92557866
Canada MEATCONSUMP POULTRY KG_CAP A 2013 32.33742166
Canada MEATCONSUMP POULTRY KG_CAP A 2014 33.06221864
Japan MEATCONSUMP POULTRY KG_CAP A 1983 9.983558874
Japan MEATCONSUMP POULTRY KG_CAP A 1984 10.35479226
Japan MEATCONSUMP POULTRY KG_CAP A 1985 10.67439646
Japan MEATCONSUMP POULTRY KG_CAP A 1986 11.2861138
Japan MEATCONSUMP POULTRY KG_CAP A 1987 11.80460484
Japan MEATCONSUMP POULTRY KG_CAP A 1988 12.34192745
Japan MEATCONSUMP POULTRY KG_CAP A 1989 12.19078573
Japan MEATCONSUMP POULTRY KG_CAP A 1990 12.84486466
Japan MEATCONSUMP POULTRY KG_CAP A 1991 12.05542181
Japan MEATCONSUMP POULTRY KG_CAP A 1992 12.40775686
Japan MEATCONSUMP POULTRY KG_CAP A 1993 12.15125736
Japan MEATCONSUMP POULTRY KG_CAP A 1994 12.16287378
Japan MEATCONSUMP POULTRY KG_CAP A 1995 12.43652713
Japan MEATCONSUMP POULTRY KG_CAP A 1996 12.54852245
Japan MEATCONSUMP POULTRY KG_CAP A 1997 12.30716427
Japan MEATCONSUMP POULTRY KG_CAP A 1998 12.13302274
Japan MEATCONSUMP POULTRY KG_CAP A 1999 12.18499922
Japan MEATCONSUMP POULTRY KG_CAP A 2000 12.20101832
Japan MEATCONSUMP POULTRY KG_CAP A 2001 12.14671575
Japan MEATCONSUMP POULTRY KG_CAP A 2002 12.02446243
Japan MEATCONSUMP POULTRY KG_CAP A 2003 12.00038409
Japan MEATCONSUMP POULTRY KG_CAP A 2004 11.09416043
Japan MEATCONSUMP POULTRY KG_CAP A 2005 11.49007967
Japan MEATCONSUMP POULTRY KG_CAP A 2006 12.00011767
Japan MEATCONSUMP POULTRY KG_CAP A 2007 11.87101291
Japan MEATCONSUMP POULTRY KG_CAP A 2008 11.95725705
Japan MEATCONSUMP POULTRY KG_CAP A 2009 12.27798616
Japan MEATCONSUMP POULTRY KG_CAP A 2010 12.65900382
Japan MEATCONSUMP POULTRY KG_CAP A 2011 12.3276383
Japan MEATCONSUMP POULTRY KG_CAP A 2012 13.11199592
Japan MEATCONSUMP POULTRY KG_CAP A 2013 13.08791871
Japan MEATCONSUMP POULTRY KG_CAP A 2014 13.62024372
Korea MEATCONSUMP POULTRY KG_CAP A 1983 2.738000281
Korea MEATCONSUMP POULTRY KG_CAP A 1984 2.6411718
Korea MEATCONSUMP POULTRY KG_CAP A 1985 2.824443598
Korea MEATCONSUMP POULTRY KG_CAP A 1986 4.369793426
Korea MEATCONSUMP POULTRY KG_CAP A 1987 4.7277135
Korea MEATCONSUMP POULTRY KG_CAP A 1988 4.931696103
Korea MEATCONSUMP POULTRY KG_CAP A 1989 5.047920545
Korea MEATCONSUMP POULTRY KG_CAP A 1990 5.556614827
Korea MEATCONSUMP POULTRY KG_CAP A 1991 6.740091826
Korea MEATCONSUMP POULTRY KG_CAP A 1992 7.540652785
Korea MEATCONSUMP POULTRY KG_CAP A 1993 7.863692103
Korea MEATCONSUMP POULTRY KG_CAP A 1994 7.891381723
Korea MEATCONSUMP POULTRY KG_CAP A 1995 8.619459474
Korea MEATCONSUMP POULTRY KG_CAP A 1996 9.251583764
Korea MEATCONSUMP POULTRY KG_CAP A 1997 8.677773901
Korea MEATCONSUMP POULTRY KG_CAP A 1998 7.676874562
Korea MEATCONSUMP POULTRY KG_CAP A 1999 9.51200844
Korea MEATCONSUMP POULTRY KG_CAP A 2000 9.918660601
Korea MEATCONSUMP POULTRY KG_CAP A 2001 10.85456991
Korea MEATCONSUMP POULTRY KG_CAP A 2002 11.23151823
Korea MEATCONSUMP POULTRY KG_CAP A 2003 9.890229216
Korea MEATCONSUMP POULTRY KG_CAP A 2004 8.742480022
Korea MEATCONSUMP POULTRY KG_CAP A 2005 11.2293961
Korea MEATCONSUMP POULTRY KG_CAP A 2006 12.00658783
Korea MEATCONSUMP POULTRY KG_CAP A 2007 11.79274643
Korea MEATCONSUMP POULTRY KG_CAP A 2008 11.67594594
Korea MEATCONSUMP POULTRY KG_CAP A 2009 12.38395439
Korea MEATCONSUMP POULTRY KG_CAP A 2010 13.55967271
Korea MEATCONSUMP POULTRY KG_CAP A 2011 14.52237391
Korea MEATCONSUMP POULTRY KG_CAP A 2012 14.52119877
Korea MEATCONSUMP POULTRY KG_CAP A 2013 14.79803465
Korea MEATCONSUMP POULTRY KG_CAP A 2014 15.39298897
Mexico MEATCONSUMP POULTRY KG_CAP A 1983 5.554587997
Mexico MEATCONSUMP POULTRY KG_CAP A 1984 5.784945145
Mexico MEATCONSUMP POULTRY KG_CAP A 1985 6.867041675
Mexico MEATCONSUMP POULTRY KG_CAP A 1986 7.323627798
Mexico MEATCONSUMP POULTRY KG_CAP A 1987 7.218528831
Mexico MEATCONSUMP POULTRY KG_CAP A 1988 7.235586831
Mexico MEATCONSUMP POULTRY KG_CAP A 1989 6.877378578
Mexico MEATCONSUMP POULTRY KG_CAP A 1990 8.234205735
Mexico MEATCONSUMP POULTRY KG_CAP A 1991 9.381396725
Mexico MEATCONSUMP POULTRY KG_CAP A 1992 9.620115512
Mexico MEATCONSUMP POULTRY KG_CAP A 1993 10.98176873
Mexico MEATCONSUMP POULTRY KG_CAP A 1994 11.73798043
Mexico MEATCONSUMP POULTRY KG_CAP A 1995 12.88011559
Mexico MEATCONSUMP POULTRY KG_CAP A 1996 12.62216965
Mexico MEATCONSUMP POULTRY KG_CAP A 1997 14.31177203
Mexico MEATCONSUMP POULTRY KG_CAP A 1998 15.92805688
Mexico MEATCONSUMP POULTRY KG_CAP A 1999 16.80792675
Mexico MEATCONSUMP POULTRY KG_CAP A 2000 17.60475998
Mexico MEATCONSUMP POULTRY KG_CAP A 2001 18.52787445
Mexico MEATCONSUMP POULTRY KG_CAP A 2002 19.88332928
Mexico MEATCONSUMP POULTRY KG_CAP A 2003 21.34029082
Mexico MEATCONSUMP POULTRY KG_CAP A 2004 21.54205444
Mexico MEATCONSUMP POULTRY KG_CAP A 2005 22.97438351
Mexico MEATCONSUMP POULTRY KG_CAP A 2006 23.25891918
Mexico MEATCONSUMP POULTRY KG_CAP A 2007 23.35713595
Mexico MEATCONSUMP POULTRY KG_CAP A 2008 23.81222373
Mexico MEATCONSUMP POULTRY KG_CAP A 2009 24.12697668
Mexico MEATCONSUMP POULTRY KG_CAP A 2010 24.5155132
Mexico MEATCONSUMP POULTRY KG_CAP A 2011 24.99218302
Mexico MEATCONSUMP POULTRY KG_CAP A 2012 25.27681959
Mexico MEATCONSUMP POULTRY KG_CAP A 2013 24.89862498
Mexico MEATCONSUMP POULTRY KG_CAP A 2014 24.93121764
New Zealand MEATCONSUMP POULTRY KG_CAP A 1983 9.028957958
New Zealand MEATCONSUMP POULTRY KG_CAP A 1984 12.4800144
New Zealand MEATCONSUMP POULTRY KG_CAP A 1985 12.92253302
New Zealand MEATCONSUMP POULTRY KG_CAP A 1986 12.30151724
New Zealand MEATCONSUMP POULTRY KG_CAP A 1987 13.02356262
New Zealand MEATCONSUMP POULTRY KG_CAP A 1988 13.99424748
New Zealand MEATCONSUMP POULTRY KG_CAP A 1989 15.44856939
New Zealand MEATCONSUMP POULTRY KG_CAP A 1990 14.58041432
New Zealand MEATCONSUMP POULTRY KG_CAP A 1991 14.88796447
New Zealand MEATCONSUMP POULTRY KG_CAP A 1992 15.29834077
New Zealand MEATCONSUMP POULTRY KG_CAP A 1993 16.83699763
New Zealand MEATCONSUMP POULTRY KG_CAP A 1994 18.30286903
New Zealand MEATCONSUMP POULTRY KG_CAP A 1995 22.26705349
New Zealand MEATCONSUMP POULTRY KG_CAP A 1996 21.56067183
New Zealand MEATCONSUMP POULTRY KG_CAP A 1997 20.90208471
New Zealand MEATCONSUMP POULTRY KG_CAP A 1998 22.65678153
New Zealand MEATCONSUMP POULTRY KG_CAP A 1999 23.19714784
New Zealand MEATCONSUMP POULTRY KG_CAP A 2000 24.56073451
New Zealand MEATCONSUMP POULTRY KG_CAP A 2001 26.46631274
New Zealand MEATCONSUMP POULTRY KG_CAP A 2002 28.71113678
New Zealand MEATCONSUMP POULTRY KG_CAP A 2003 31.08826824
New Zealand MEATCONSUMP POULTRY KG_CAP A 2004 32.64255085
New Zealand MEATCONSUMP POULTRY KG_CAP A 2005 34.6636501
New Zealand MEATCONSUMP POULTRY KG_CAP A 2006 33.08990697
New Zealand MEATCONSUMP POULTRY KG_CAP A 2007 31.21906017
New Zealand MEATCONSUMP POULTRY KG_CAP A 2008 31.21197637
New Zealand MEATCONSUMP POULTRY KG_CAP A 2009 29.38212756
New Zealand MEATCONSUMP POULTRY KG_CAP A 2010 29.95694273
New Zealand MEATCONSUMP POULTRY KG_CAP A 2011 30.72504201
New Zealand MEATCONSUMP POULTRY KG_CAP A 2012 33.99683986
New Zealand MEATCONSUMP POULTRY KG_CAP A 2013 34.40507454
New Zealand MEATCONSUMP POULTRY KG_CAP A 2014 36.29251416
Turkey MEATCONSUMP POULTRY KG_CAP A 1983 4.571971119
Turkey MEATCONSUMP POULTRY KG_CAP A 1984 5.119771016
Turkey MEATCONSUMP POULTRY KG_CAP A 1985 5.008463009
Turkey MEATCONSUMP POULTRY KG_CAP A 1986 5.447701961
Turkey MEATCONSUMP POULTRY KG_CAP A 1987 5.940122336
Turkey MEATCONSUMP POULTRY KG_CAP A 1988 6.38814146
Turkey MEATCONSUMP POULTRY KG_CAP A 1989 6.45109139
Turkey MEATCONSUMP POULTRY KG_CAP A 1990 6.757069204
Turkey MEATCONSUMP POULTRY KG_CAP A 1991 6.639735999
Turkey MEATCONSUMP POULTRY KG_CAP A 1992 6.941987831
Turkey MEATCONSUMP POULTRY KG_CAP A 1993 7.122901079
Turkey MEATCONSUMP POULTRY KG_CAP A 1994 7.289997238
Turkey MEATCONSUMP POULTRY KG_CAP A 1995 7.538086679
Turkey MEATCONSUMP POULTRY KG_CAP A 1996 6.321669728
Turkey MEATCONSUMP POULTRY KG_CAP A 1997 6.93417082
Turkey MEATCONSUMP POULTRY KG_CAP A 1998 7.137968777
Turkey MEATCONSUMP POULTRY KG_CAP A 1999 8.551647784
Turkey MEATCONSUMP POULTRY KG_CAP A 2000 9.174161236
Turkey MEATCONSUMP POULTRY KG_CAP A 2001 8.3732754
Turkey MEATCONSUMP POULTRY KG_CAP A 2002 9.348685139
Turkey MEATCONSUMP POULTRY KG_CAP A 2003 11.49591475
Turkey MEATCONSUMP POULTRY KG_CAP A 2004 11.37965355
Turkey MEATCONSUMP POULTRY KG_CAP A 2005 11.77520115
Turkey MEATCONSUMP POULTRY KG_CAP A 2006 11.43843547
Turkey MEATCONSUMP POULTRY KG_CAP A 2007 13.0522934
Turkey MEATCONSUMP POULTRY KG_CAP A 2008 12.77637056
Turkey MEATCONSUMP POULTRY KG_CAP A 2009 14.73609906
Turkey MEATCONSUMP POULTRY KG_CAP A 2010 16.03887755
Turkey MEATCONSUMP POULTRY KG_CAP A 2011 16.68716541
Turkey MEATCONSUMP POULTRY KG_CAP A 2012 16.96059402
Turkey MEATCONSUMP POULTRY KG_CAP A 2013 16.43089063
Turkey MEATCONSUMP POULTRY KG_CAP A 2014 16.14805876
USA MEATCONSUMP POULTRY KG_CAP A 1983 25.34578478
USA MEATCONSUMP POULTRY KG_CAP A 1984 26.06784429
USA MEATCONSUMP POULTRY KG_CAP A 1985 26.96615169
USA MEATCONSUMP POULTRY KG_CAP A 1986 28.16184089
USA MEATCONSUMP POULTRY KG_CAP A 1987 30.3552564
USA MEATCONSUMP POULTRY KG_CAP A 1988 31.42920533
USA MEATCONSUMP POULTRY KG_CAP A 1989 33.26302583
USA MEATCONSUMP POULTRY KG_CAP A 1990 34.74263411
USA MEATCONSUMP POULTRY KG_CAP A 1991 36.16378357
USA MEATCONSUMP POULTRY KG_CAP A 1992 37.54839253
USA MEATCONSUMP POULTRY KG_CAP A 1993 38.19340598
USA MEATCONSUMP POULTRY KG_CAP A 1994 38.78224429
USA MEATCONSUMP POULTRY KG_CAP A 1995 38.63552483
USA MEATCONSUMP POULTRY KG_CAP A 1996 39.38320607
USA MEATCONSUMP POULTRY KG_CAP A 1997 39.62742653
USA MEATCONSUMP POULTRY KG_CAP A 1998 39.93719158
USA MEATCONSUMP POULTRY KG_CAP A 1999 42.36302023
USA MEATCONSUMP POULTRY KG_CAP A 2000 42.78941257
USA MEATCONSUMP POULTRY KG_CAP A 2001 42.78944827
USA MEATCONSUMP POULTRY KG_CAP A 2002 44.79514232
USA MEATCONSUMP POULTRY KG_CAP A 2003 45.15412845
USA MEATCONSUMP POULTRY KG_CAP A 2004 46.11668412
USA MEATCONSUMP POULTRY KG_CAP A 2005 46.78439372
USA MEATCONSUMP POULTRY KG_CAP A 2006 47.02513417
USA MEATCONSUMP POULTRY KG_CAP A 2007 46.28008112
USA MEATCONSUMP POULTRY KG_CAP A 2008 46.12934506
USA MEATCONSUMP POULTRY KG_CAP A 2009 44.0650014
USA MEATCONSUMP POULTRY KG_CAP A 2010 45.06446865
USA MEATCONSUMP POULTRY KG_CAP A 2011 46.02800915
USA MEATCONSUMP POULTRY KG_CAP A 2012 44.03655509
USA MEATCONSUMP POULTRY KG_CAP A 2013 43.82475773
USA MEATCONSUMP POULTRY KG_CAP A 2014 44.4867316
Algeria MEATCONSUMP POULTRY KG_CAP A 1983 4.108837272
Algeria MEATCONSUMP POULTRY KG_CAP A 1984 5.968144168
Algeria MEATCONSUMP POULTRY KG_CAP A 1985 6.171208521
Algeria MEATCONSUMP POULTRY KG_CAP A 1986 6.364008507
Algeria MEATCONSUMP POULTRY KG_CAP A 1987 6.256187412
Algeria MEATCONSUMP POULTRY KG_CAP A 1988 6.191977169
Algeria MEATCONSUMP POULTRY KG_CAP A 1989 6.201665559
Algeria MEATCONSUMP POULTRY KG_CAP A 1990 6.212987621
Algeria MEATCONSUMP POULTRY KG_CAP A 1991 6.193247653
Algeria MEATCONSUMP POULTRY KG_CAP A 1992 6.177258152
Algeria MEATCONSUMP POULTRY KG_CAP A 1993 6.19696856
Algeria MEATCONSUMP POULTRY KG_CAP A 1994 6.193448963
Algeria MEATCONSUMP POULTRY KG_CAP A 1995 6.077535948
Algeria MEATCONSUMP POULTRY KG_CAP A 1996 6.352581273
Algeria MEATCONSUMP POULTRY KG_CAP A 1997 6.389182402
Algeria MEATCONSUMP POULTRY KG_CAP A 1998 7.079057559
Algeria MEATCONSUMP POULTRY KG_CAP A 1999 6.635466323
Algeria MEATCONSUMP POULTRY KG_CAP A 2000 6.801579897
Algeria MEATCONSUMP POULTRY KG_CAP A 2001 6.660186739
Algeria MEATCONSUMP POULTRY KG_CAP A 2002 6.649677233
Algeria MEATCONSUMP POULTRY KG_CAP A 2003 6.912869279
Algeria MEATCONSUMP POULTRY KG_CAP A 2004 7.084075535
Algeria MEATCONSUMP POULTRY KG_CAP A 2005 7.064743799
Algeria MEATCONSUMP POULTRY KG_CAP A 2006 6.687357267
Algeria MEATCONSUMP POULTRY KG_CAP A 2007 6.68272978
Algeria MEATCONSUMP POULTRY KG_CAP A 2008 6.607254171
Algeria MEATCONSUMP POULTRY KG_CAP A 2009 6.498136202
Algeria MEATCONSUMP POULTRY KG_CAP A 2010 6.642916087
Algeria MEATCONSUMP POULTRY KG_CAP A 2011 6.459446059
Algeria MEATCONSUMP POULTRY KG_CAP A 2012 6.480286301
Algeria MEATCONSUMP POULTRY KG_CAP A 2013 6.354054729
Algeria MEATCONSUMP POULTRY KG_CAP A 2014 6.236806477
Argentina MEATCONSUMP POULTRY KG_CAP A 1983 8.294824242
Argentina MEATCONSUMP POULTRY KG_CAP A 1984 8.94735076
Argentina MEATCONSUMP POULTRY KG_CAP A 1985 9.985774308
Argentina MEATCONSUMP POULTRY KG_CAP A 1986 10.81814328
Argentina MEATCONSUMP POULTRY KG_CAP A 1987 11.82119099
Argentina MEATCONSUMP POULTRY KG_CAP A 1988 10.39556611
Argentina MEATCONSUMP POULTRY KG_CAP A 1989 8.899709711
Argentina MEATCONSUMP POULTRY KG_CAP A 1990 9.112114885
Argentina MEATCONSUMP POULTRY KG_CAP A 1991 10.45723874
Argentina MEATCONSUMP POULTRY KG_CAP A 1992 15.38650491
Argentina MEATCONSUMP POULTRY KG_CAP A 1993 18.5007061
Argentina MEATCONSUMP POULTRY KG_CAP A 1994 18.58766896
Argentina MEATCONSUMP POULTRY KG_CAP A 1995 20.29194473
Argentina MEATCONSUMP POULTRY KG_CAP A 1996 19.21717147
Argentina MEATCONSUMP POULTRY KG_CAP A 1997 20.00993534
Argentina MEATCONSUMP POULTRY KG_CAP A 1998 22.31937461
Argentina MEATCONSUMP POULTRY KG_CAP A 1999 23.01120005
Argentina MEATCONSUMP POULTRY KG_CAP A 2000 22.8823506
Argentina MEATCONSUMP POULTRY KG_CAP A 2001 22.02487563
Argentina MEATCONSUMP POULTRY KG_CAP A 2002 15.44615355
Argentina MEATCONSUMP POULTRY KG_CAP A 2003 16.17088819
Argentina MEATCONSUMP POULTRY KG_CAP A 2004 18.97864198
Argentina MEATCONSUMP POULTRY KG_CAP A 2005 21.28063203
Argentina MEATCONSUMP POULTRY KG_CAP A 2006 24.41647104
Argentina MEATCONSUMP POULTRY KG_CAP A 2007 25.46878834
Argentina MEATCONSUMP POULTRY KG_CAP A 2008 27.82232005
Argentina MEATCONSUMP POULTRY KG_CAP A 2009 29.43567453
Argentina MEATCONSUMP POULTRY KG_CAP A 2010 30.4798626
Argentina MEATCONSUMP POULTRY KG_CAP A 2011 34.15359763
Argentina MEATCONSUMP POULTRY KG_CAP A 2012 35.29241698
Argentina MEATCONSUMP POULTRY KG_CAP A 2013 34.61916618
Argentina MEATCONSUMP POULTRY KG_CAP A 2014 35.11320148
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1983 0.621709171
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1984 0.511748518
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1985 0.576888689
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1986 0.590900794
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1987 0.604951107
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1988 0.620824231
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1989 0.621498583
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1990 0.658299598
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1991 0.662407414
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1992 0.682500718
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1993 0.719789752
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1994 0.735241477
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1995 0.756012979
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1996 0.846712717
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1997 0.874604401
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1998 0.759616884
Bangladesh MEATCONSUMP POULTRY KG_CAP A 1999 0.758346349
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2000 0.74450647
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2001 0.731537148
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2002 0.738948689
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2003 0.857345973
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2004 0.88619282
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2005 0.92860586
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2006 1.087648524
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2007 1.13638
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2008 1.133526467
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2009 1.165849477
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2010 1.183709362
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2011 1.196521269
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2012 1.18933487
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2013 1.191813959
Bangladesh MEATCONSUMP POULTRY KG_CAP A 2014 1.194019896
Brazil MEATCONSUMP POULTRY KG_CAP A 1983 8.35539438
Brazil MEATCONSUMP POULTRY KG_CAP A 1984 7.276137972
Brazil MEATCONSUMP POULTRY KG_CAP A 1985 8.029152014
Brazil MEATCONSUMP POULTRY KG_CAP A 1986 9.073900181
Brazil MEATCONSUMP POULTRY KG_CAP A 1987 10.32530967
Brazil MEATCONSUMP POULTRY KG_CAP A 1988 10.52752701
Brazil MEATCONSUMP POULTRY KG_CAP A 1989 11.00608349
Brazil MEATCONSUMP POULTRY KG_CAP A 1990 12.09583847
Brazil MEATCONSUMP POULTRY KG_CAP A 1991 13.33748221
Brazil MEATCONSUMP POULTRY KG_CAP A 1992 14.23785698
Brazil MEATCONSUMP POULTRY KG_CAP A 1993 15.28071637
Brazil MEATCONSUMP POULTRY KG_CAP A 1994 16.25522921
Brazil MEATCONSUMP POULTRY KG_CAP A 1995 19.66535965
Brazil MEATCONSUMP POULTRY KG_CAP A 1996 18.64831106
Brazil MEATCONSUMP POULTRY KG_CAP A 1997 21.37915923
Brazil MEATCONSUMP POULTRY KG_CAP A 1998 22.46112197
Brazil MEATCONSUMP POULTRY KG_CAP A 1999 24.75654583
Brazil MEATCONSUMP POULTRY KG_CAP A 2000 25.99276613
Brazil MEATCONSUMP POULTRY KG_CAP A 2001 27.67726344
Brazil MEATCONSUMP POULTRY KG_CAP A 2002 29.54366726
Brazil MEATCONSUMP POULTRY KG_CAP A 2003 28.30266371
Brazil MEATCONSUMP POULTRY KG_CAP A 2004 29.25444981
Brazil MEATCONSUMP POULTRY KG_CAP A 2005 31.68016817
Brazil MEATCONSUMP POULTRY KG_CAP A 2006 31.98681941
Brazil MEATCONSUMP POULTRY KG_CAP A 2007 34.38709265
Brazil MEATCONSUMP POULTRY KG_CAP A 2008 36.26737286
Brazil MEATCONSUMP POULTRY KG_CAP A 2009 35.86864403
Brazil MEATCONSUMP POULTRY KG_CAP A 2010 39.95405062
Brazil MEATCONSUMP POULTRY KG_CAP A 2011 41.46533508
Brazil MEATCONSUMP POULTRY KG_CAP A 2012 40.65987483
Brazil MEATCONSUMP POULTRY KG_CAP A 2013 38.53677062
Brazil MEATCONSUMP POULTRY KG_CAP A 2014 38.71460391
Chile MEATCONSUMP POULTRY KG_CAP A 1983 6.573815643
Chile MEATCONSUMP POULTRY KG_CAP A 1984 5.497060241
Chile MEATCONSUMP POULTRY KG_CAP A 1985 5.2872565
Chile MEATCONSUMP POULTRY KG_CAP A 1986 5.203224204
Chile MEATCONSUMP POULTRY KG_CAP A 1987 6.94344654
Chile MEATCONSUMP POULTRY KG_CAP A 1988 7.431960465
Chile MEATCONSUMP POULTRY KG_CAP A 1989 7.274219339
Chile MEATCONSUMP POULTRY KG_CAP A 1990 7.846354419
Chile MEATCONSUMP POULTRY KG_CAP A 1991 8.647605633
Chile MEATCONSUMP POULTRY KG_CAP A 1992 12.84232395
Chile MEATCONSUMP POULTRY KG_CAP A 1993 15.09103509
Chile MEATCONSUMP POULTRY KG_CAP A 1994 16.55072385
Chile MEATCONSUMP POULTRY KG_CAP A 1995 18.98118866
Chile MEATCONSUMP POULTRY KG_CAP A 1996 19.83217205
Chile MEATCONSUMP POULTRY KG_CAP A 1997 19.64246219
Chile MEATCONSUMP POULTRY KG_CAP A 1998 21.13037531
Chile MEATCONSUMP POULTRY KG_CAP A 1999 21.39731374
Chile MEATCONSUMP POULTRY KG_CAP A 2000 23.56002956
Chile MEATCONSUMP POULTRY KG_CAP A 2001 24.20610524
Chile MEATCONSUMP POULTRY KG_CAP A 2002 23.22542251
Chile MEATCONSUMP POULTRY KG_CAP A 2003 23.29381341
Chile MEATCONSUMP POULTRY KG_CAP A 2004 25.61176555
Chile MEATCONSUMP POULTRY KG_CAP A 2005 25.42412552
Chile MEATCONSUMP POULTRY KG_CAP A 2006 29.07284369
Chile MEATCONSUMP POULTRY KG_CAP A 2007 30.05108425
Chile MEATCONSUMP POULTRY KG_CAP A 2008 28.36071849
Chile MEATCONSUMP POULTRY KG_CAP A 2009 27.20340449
Chile MEATCONSUMP POULTRY KG_CAP A 2010 28.7715002
Chile MEATCONSUMP POULTRY KG_CAP A 2011 31.57094026
Chile MEATCONSUMP POULTRY KG_CAP A 2012 31.28204959
Chile MEATCONSUMP POULTRY KG_CAP A 2013 32.08733778
Chile MEATCONSUMP POULTRY KG_CAP A 2014 32.47429222
China MEATCONSUMP POULTRY KG_CAP A 1983 1.248522159
China MEATCONSUMP POULTRY KG_CAP A 1984 1.27014799
China MEATCONSUMP POULTRY KG_CAP A 1985 1.322172802
China MEATCONSUMP POULTRY KG_CAP A 1986 1.522470743
China MEATCONSUMP POULTRY KG_CAP A 1987 1.764229421
China MEATCONSUMP POULTRY KG_CAP A 1988 2.173823473
China MEATCONSUMP POULTRY KG_CAP A 1989 2.211163978
China MEATCONSUMP POULTRY KG_CAP A 1990 2.446893317
China MEATCONSUMP POULTRY KG_CAP A 1991 2.952264871
China MEATCONSUMP POULTRY KG_CAP A 1992 3.311368647
China MEATCONSUMP POULTRY KG_CAP A 1993 4.143705746
China MEATCONSUMP POULTRY KG_CAP A 1994 5.461330698
China MEATCONSUMP POULTRY KG_CAP A 1995 6.909842218
China MEATCONSUMP POULTRY KG_CAP A 1996 6.11256928
China MEATCONSUMP POULTRY KG_CAP A 1997 7.025381082
China MEATCONSUMP POULTRY KG_CAP A 1998 7.563967746
China MEATCONSUMP POULTRY KG_CAP A 1999 7.95976056
China MEATCONSUMP POULTRY KG_CAP A 2000 8.386598943
China MEATCONSUMP POULTRY KG_CAP A 2001 8.116864367
China MEATCONSUMP POULTRY KG_CAP A 2002 8.13668664
China MEATCONSUMP POULTRY KG_CAP A 2003 8.457315593
China MEATCONSUMP POULTRY KG_CAP A 2004 8.346768935
China MEATCONSUMP POULTRY KG_CAP A 2005 8.916090774
China MEATCONSUMP POULTRY KG_CAP A 2006 9.119161372
China MEATCONSUMP POULTRY KG_CAP A 2007 9.73925095
China MEATCONSUMP POULTRY KG_CAP A 2008 10.33108535
China MEATCONSUMP POULTRY KG_CAP A 2009 10.60217049
China MEATCONSUMP POULTRY KG_CAP A 2010 10.7209795
China MEATCONSUMP POULTRY KG_CAP A 2011 10.86976799
China MEATCONSUMP POULTRY KG_CAP A 2012 11.59069862
China MEATCONSUMP POULTRY KG_CAP A 2013 11.3981285
China MEATCONSUMP POULTRY KG_CAP A 2014 11.41987059
Colombia MEATCONSUMP POULTRY KG_CAP A 1983 3.866094512
Colombia MEATCONSUMP POULTRY KG_CAP A 1984 4.120972957
Colombia MEATCONSUMP POULTRY KG_CAP A 1985 4.438998619
Colombia MEATCONSUMP POULTRY KG_CAP A 1986 5.348203043
Colombia MEATCONSUMP POULTRY KG_CAP A 1987 6.040698496
Colombia MEATCONSUMP POULTRY KG_CAP A 1988 7.630252063
Colombia MEATCONSUMP POULTRY KG_CAP A 1989 7.580403207
Colombia MEATCONSUMP POULTRY KG_CAP A 1990 7.888259972
Colombia MEATCONSUMP POULTRY KG_CAP A 1991 10.06375099
Colombia MEATCONSUMP POULTRY KG_CAP A 1992 10.57715999
Colombia MEATCONSUMP POULTRY KG_CAP A 1993 11.38026841
Colombia MEATCONSUMP POULTRY KG_CAP A 1994 12.53868937
Colombia MEATCONSUMP POULTRY KG_CAP A 1995 13.71514531
Colombia MEATCONSUMP POULTRY KG_CAP A 1996 11.55801793
Colombia MEATCONSUMP POULTRY KG_CAP A 1997 10.67301205
Colombia MEATCONSUMP POULTRY KG_CAP A 1998 12.11840633
Colombia MEATCONSUMP POULTRY KG_CAP A 1999 11.71338705
Colombia MEATCONSUMP POULTRY KG_CAP A 2000 11.84527564
Colombia MEATCONSUMP POULTRY KG_CAP A 2001 13.75358082
Colombia MEATCONSUMP POULTRY KG_CAP A 2002 14.60786334
Colombia MEATCONSUMP POULTRY KG_CAP A 2003 14.92038329
Colombia MEATCONSUMP POULTRY KG_CAP A 2004 15.08164807
Colombia MEATCONSUMP POULTRY KG_CAP A 2005 16.18864621
Colombia MEATCONSUMP POULTRY KG_CAP A 2006 17.77886672
Colombia MEATCONSUMP POULTRY KG_CAP A 2007 19.07961377
Colombia MEATCONSUMP POULTRY KG_CAP A 2008 20.48394768
Colombia MEATCONSUMP POULTRY KG_CAP A 2009 20.40668989
Colombia MEATCONSUMP POULTRY KG_CAP A 2010 20.61060693
Colombia MEATCONSUMP POULTRY KG_CAP A 2011 21.06495075
Colombia MEATCONSUMP POULTRY KG_CAP A 2012 21.57763504
Colombia MEATCONSUMP POULTRY KG_CAP A 2013 21.90065505
Colombia MEATCONSUMP POULTRY KG_CAP A 2014 22.015627
Egypt MEATCONSUMP POULTRY KG_CAP A 1983 4.778107548
Egypt MEATCONSUMP POULTRY KG_CAP A 1984 5.706994026
Egypt MEATCONSUMP POULTRY KG_CAP A 1985 5.291867797
Egypt MEATCONSUMP POULTRY KG_CAP A 1986 5.007438036
Egypt MEATCONSUMP POULTRY KG_CAP A 1987 5.609993796
Egypt MEATCONSUMP POULTRY KG_CAP A 1988 4.641021883
Egypt MEATCONSUMP POULTRY KG_CAP A 1989 4.324481062
Egypt MEATCONSUMP POULTRY KG_CAP A 1990 4.249311499
Egypt MEATCONSUMP POULTRY KG_CAP A 1991 4.666239711
Egypt MEATCONSUMP POULTRY KG_CAP A 1992 4.78693129
Egypt MEATCONSUMP POULTRY KG_CAP A 1993 4.902007392
Egypt MEATCONSUMP POULTRY KG_CAP A 1994 5.239208483
Egypt MEATCONSUMP POULTRY KG_CAP A 1995 5.854188808
Egypt MEATCONSUMP POULTRY KG_CAP A 1996 5.988217499
Egypt MEATCONSUMP POULTRY KG_CAP A 1997 7.549742482
Egypt MEATCONSUMP POULTRY KG_CAP A 1998 7.341081764
Egypt MEATCONSUMP POULTRY KG_CAP A 1999 7.976490883
Egypt MEATCONSUMP POULTRY KG_CAP A 2000 8.110797414
Egypt MEATCONSUMP POULTRY KG_CAP A 2001 8.301338526
Egypt MEATCONSUMP POULTRY KG_CAP A 2002 8.293921664
Egypt MEATCONSUMP POULTRY KG_CAP A 2003 8.435530475
Egypt MEATCONSUMP POULTRY KG_CAP A 2004 8.319440814
Egypt MEATCONSUMP POULTRY KG_CAP A 2005 8.144272409
Egypt MEATCONSUMP POULTRY KG_CAP A 2006 8.791596925
Egypt MEATCONSUMP POULTRY KG_CAP A 2007 9.761064573
Egypt MEATCONSUMP POULTRY KG_CAP A 2008 8.837372345
Egypt MEATCONSUMP POULTRY KG_CAP A 2009 9.585415161
Egypt MEATCONSUMP POULTRY KG_CAP A 2010 9.93348622
Egypt MEATCONSUMP POULTRY KG_CAP A 2011 10.35236984
Egypt MEATCONSUMP POULTRY KG_CAP A 2012 11.68034768
Egypt MEATCONSUMP POULTRY KG_CAP A 2013 9.752228863
Egypt MEATCONSUMP POULTRY KG_CAP A 2014 10.7892898
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1993 0.593723955
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1994 0.573449337
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1995 0.555092611
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1996 0.541181644
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1997 0.527267914
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1998 0.521642253
Ethiopia MEATCONSUMP POULTRY KG_CAP A 1999 0.510793504
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2000 0.502906724
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2001 0.645446988
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2002 0.680104102
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2003 0.614137688
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2004 0.559727818
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2005 0.491961093
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2006 0.508153416
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2007 0.505981756
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2008 0.517671778
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2009 0.522959986
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2010 0.59845367
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2011 0.531013397
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2012 0.580404446
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2013 0.561290135
Ethiopia MEATCONSUMP POULTRY KG_CAP A 2014 0.547325158
Ghana MEATCONSUMP POULTRY KG_CAP A 1983 0.485783544
Ghana MEATCONSUMP POULTRY KG_CAP A 1984 0.462794072
Ghana MEATCONSUMP POULTRY KG_CAP A 1985 0.42210589
Ghana MEATCONSUMP POULTRY KG_CAP A 1986 0.393492622
Ghana MEATCONSUMP POULTRY KG_CAP A 1987 0.524168895
Ghana MEATCONSUMP POULTRY KG_CAP A 1988 0.507552221
Ghana MEATCONSUMP POULTRY KG_CAP A 1989 0.691851384
Ghana MEATCONSUMP POULTRY KG_CAP A 1990 0.96246641
Ghana MEATCONSUMP POULTRY KG_CAP A 1991 1.115921113
Ghana MEATCONSUMP POULTRY KG_CAP A 1992 1.085946321
Ghana MEATCONSUMP POULTRY KG_CAP A 1993 0.917226444
Ghana MEATCONSUMP POULTRY KG_CAP A 1994 0.924267121
Ghana MEATCONSUMP POULTRY KG_CAP A 1995 1.048371803
Ghana MEATCONSUMP POULTRY KG_CAP A 1996 1.118895256
Ghana MEATCONSUMP POULTRY KG_CAP A 1997 1.173869786
Ghana MEATCONSUMP POULTRY KG_CAP A 1998 1.21700248
Ghana MEATCONSUMP POULTRY KG_CAP A 1999 1.73756245
Ghana MEATCONSUMP POULTRY KG_CAP A 2000 1.654735728
Ghana MEATCONSUMP POULTRY KG_CAP A 2001 1.515456377
Ghana MEATCONSUMP POULTRY KG_CAP A 2002 2.2199297
Ghana MEATCONSUMP POULTRY KG_CAP A 2003 3.023910966
Ghana MEATCONSUMP POULTRY KG_CAP A 2004 3.214770775
Ghana MEATCONSUMP POULTRY KG_CAP A 2005 3.418724154
Ghana MEATCONSUMP POULTRY KG_CAP A 2006 3.682664441
Ghana MEATCONSUMP POULTRY KG_CAP A 2007 4.747882292
Ghana MEATCONSUMP POULTRY KG_CAP A 2008 4.595458192
Ghana MEATCONSUMP POULTRY KG_CAP A 2009 4.228926425
Ghana MEATCONSUMP POULTRY KG_CAP A 2010 5.419995984
Ghana MEATCONSUMP POULTRY KG_CAP A 2011 7.049395006
Ghana MEATCONSUMP POULTRY KG_CAP A 2012 7.095715936
Ghana MEATCONSUMP POULTRY KG_CAP A 2013 7.564602927
Ghana MEATCONSUMP POULTRY KG_CAP A 2014 6.694316687
Haiti MEATCONSUMP POULTRY KG_CAP A 1983 1.138679055
Haiti MEATCONSUMP POULTRY KG_CAP A 1984 1.251926456
Haiti MEATCONSUMP POULTRY KG_CAP A 1985 1.141067519
Haiti MEATCONSUMP POULTRY KG_CAP A 1986 1.124095596
Haiti MEATCONSUMP POULTRY KG_CAP A 1987 1.12657789
Haiti MEATCONSUMP POULTRY KG_CAP A 1988 1.028869756
Haiti MEATCONSUMP POULTRY KG_CAP A 1989 0.914860136
Haiti MEATCONSUMP POULTRY KG_CAP A 1990 0.835431884
Haiti MEATCONSUMP POULTRY KG_CAP A 1991 0.775068308
Haiti MEATCONSUMP POULTRY KG_CAP A 1992 0.745016294
Haiti MEATCONSUMP POULTRY KG_CAP A 1993 0.716713053
Haiti MEATCONSUMP POULTRY KG_CAP A 1994 1.001731943
Haiti MEATCONSUMP POULTRY KG_CAP A 1995 1.42417972
Haiti MEATCONSUMP POULTRY KG_CAP A 1996 1.666733396
Haiti MEATCONSUMP POULTRY KG_CAP A 1997 2.149370807
Haiti MEATCONSUMP POULTRY KG_CAP A 1998 2.90464898
Haiti MEATCONSUMP POULTRY KG_CAP A 1999 4.294647394
Haiti MEATCONSUMP POULTRY KG_CAP A 2000 2.463599872
Haiti MEATCONSUMP POULTRY KG_CAP A 2001 2.551990964
Haiti MEATCONSUMP POULTRY KG_CAP A 2002 3.278611711
Haiti MEATCONSUMP POULTRY KG_CAP A 2003 3.637430472
Haiti MEATCONSUMP POULTRY KG_CAP A 2004 2.673437096
Haiti MEATCONSUMP POULTRY KG_CAP A 2005 3.307806949
Haiti MEATCONSUMP POULTRY KG_CAP A 2006 3.269366574
Haiti MEATCONSUMP POULTRY KG_CAP A 2007 3.535068425
Haiti MEATCONSUMP POULTRY KG_CAP A 2008 3.247080223
Haiti MEATCONSUMP POULTRY KG_CAP A 2009 4.398279834
Haiti MEATCONSUMP POULTRY KG_CAP A 2010 6.323169101
Haiti MEATCONSUMP POULTRY KG_CAP A 2011 6.778877872
Haiti MEATCONSUMP POULTRY KG_CAP A 2012 6.517735686
Haiti MEATCONSUMP POULTRY KG_CAP A 2013 6.247761985
Haiti MEATCONSUMP POULTRY KG_CAP A 2014 5.76487127
India MEATCONSUMP POULTRY KG_CAP A 1983 0.189973074
India MEATCONSUMP POULTRY KG_CAP A 1984 0.202846161
India MEATCONSUMP POULTRY KG_CAP A 1985 0.212661284
India MEATCONSUMP POULTRY KG_CAP A 1986 0.230604365
India MEATCONSUMP POULTRY KG_CAP A 1987 0.331650395
India MEATCONSUMP POULTRY KG_CAP A 1988 0.330476338
India MEATCONSUMP POULTRY KG_CAP A 1989 0.356765002
India MEATCONSUMP POULTRY KG_CAP A 1990 0.396345854
India MEATCONSUMP POULTRY KG_CAP A 1991 0.518623423
India MEATCONSUMP POULTRY KG_CAP A 1992 0.525985758
India MEATCONSUMP POULTRY KG_CAP A 1993 0.581006941
India MEATCONSUMP POULTRY KG_CAP A 1994 0.586071021
India MEATCONSUMP POULTRY KG_CAP A 1995 0.590920283
India MEATCONSUMP POULTRY KG_CAP A 1996 0.596709624
India MEATCONSUMP POULTRY KG_CAP A 1997 0.590442341
India MEATCONSUMP POULTRY KG_CAP A 1998 0.644401203
India MEATCONSUMP POULTRY KG_CAP A 1999 0.69543633
India MEATCONSUMP POULTRY KG_CAP A 2000 0.763080007
India MEATCONSUMP POULTRY KG_CAP A 2001 0.799779939
India MEATCONSUMP POULTRY KG_CAP A 2002 0.92090251
India MEATCONSUMP POULTRY KG_CAP A 2003 0.999321212
India MEATCONSUMP POULTRY KG_CAP A 2004 1.061899807
India MEATCONSUMP POULTRY KG_CAP A 2005 1.124091953
India MEATCONSUMP POULTRY KG_CAP A 2006 1.196280119
India MEATCONSUMP POULTRY KG_CAP A 2007 1.358821474
India MEATCONSUMP POULTRY KG_CAP A 2008 1.437077637
India MEATCONSUMP POULTRY KG_CAP A 2009 1.570198149
India MEATCONSUMP POULTRY KG_CAP A 2010 1.625189443
India MEATCONSUMP POULTRY KG_CAP A 2011 1.610312105
India MEATCONSUMP POULTRY KG_CAP A 2012 1.602654566
India MEATCONSUMP POULTRY KG_CAP A 2013 1.720469073
India MEATCONSUMP POULTRY KG_CAP A 2014 1.835440296
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1983 1.495795346
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1984 1.549004255
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1985 1.723983923
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1986 1.822752813
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1987 1.99108837
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1988 2.064722457
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1989 2.219340217
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1990 2.507012348
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1991 2.825962156
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1992 2.606128511
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1993 3.270601558
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1994 3.759731052
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1995 3.974984579
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1996 4.238007924
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1997 3.956680849
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1998 2.680632239
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 1999 2.676230063
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2000 3.925067263
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2001 4.30067736
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2002 4.512975114
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2003 4.581288431
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2004 4.829151473
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2005 4.51317493
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2006 4.980256635
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2007 5.129476037
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2008 5.210172578
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2009 5.312948873
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2010 5.726336314
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2011 6.117083203
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2012 6.35044154
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2013 6.312222805
Indiaonesia MEATCONSUMP POULTRY KG_CAP A 2014 6.302530195
Iran MEATCONSUMP POULTRY KG_CAP A 1983 5.67529916
Iran MEATCONSUMP POULTRY KG_CAP A 1984 5.253736316
Iran MEATCONSUMP POULTRY KG_CAP A 1985 4.923569839
Iran MEATCONSUMP POULTRY KG_CAP A 1986 5.640144363
Iran MEATCONSUMP POULTRY KG_CAP A 1987 5.878313884
Iran MEATCONSUMP POULTRY KG_CAP A 1988 5.684882629
Iran MEATCONSUMP POULTRY KG_CAP A 1989 6.302624797
Iran MEATCONSUMP POULTRY KG_CAP A 1990 6.171022877
Iran MEATCONSUMP POULTRY KG_CAP A 1991 6.690263047
Iran MEATCONSUMP POULTRY KG_CAP A 1992 8.549236071
Iran MEATCONSUMP POULTRY KG_CAP A 1993 9.383213907
Iran MEATCONSUMP POULTRY KG_CAP A 1994 9.377929868
Iran MEATCONSUMP POULTRY KG_CAP A 1995 9.583541992
Iran MEATCONSUMP POULTRY KG_CAP A 1996 9.768356915
Iran MEATCONSUMP POULTRY KG_CAP A 1997 10.23845735
Iran MEATCONSUMP POULTRY KG_CAP A 1998 10.32453402
Iran MEATCONSUMP POULTRY KG_CAP A 1999 10.24292645
Iran MEATCONSUMP POULTRY KG_CAP A 2000 11.22773565
Iran MEATCONSUMP POULTRY KG_CAP A 2001 11.7969955
Iran MEATCONSUMP POULTRY KG_CAP A 2002 12.38489109
Iran MEATCONSUMP POULTRY KG_CAP A 2003 14.20806826
Iran MEATCONSUMP POULTRY KG_CAP A 2004 14.86068289
Iran MEATCONSUMP POULTRY KG_CAP A 2005 15.49382919
Iran MEATCONSUMP POULTRY KG_CAP A 2006 16.82201409
Iran MEATCONSUMP POULTRY KG_CAP A 2007 18.45026988
Iran MEATCONSUMP POULTRY KG_CAP A 2008 18.98927979
Iran MEATCONSUMP POULTRY KG_CAP A 2009 23.91949188
Iran MEATCONSUMP POULTRY KG_CAP A 2010 22.18905425
Iran MEATCONSUMP POULTRY KG_CAP A 2011 22.80630896
Iran MEATCONSUMP POULTRY KG_CAP A 2012 22.74545052
Iran MEATCONSUMP POULTRY KG_CAP A 2013 22.50574902
Iran MEATCONSUMP POULTRY KG_CAP A 2014 22.37379992
Israel MEATCONSUMP POULTRY KG_CAP A 1983 37.48200436
Israel MEATCONSUMP POULTRY KG_CAP A 1984 36.49121562
Israel MEATCONSUMP POULTRY KG_CAP A 1985 34.79111835
Israel MEATCONSUMP POULTRY KG_CAP A 1986 29.54045573
Israel MEATCONSUMP POULTRY KG_CAP A 1987 29.82438987
Israel MEATCONSUMP POULTRY KG_CAP A 1988 33.66560819
Israel MEATCONSUMP POULTRY KG_CAP A 1989 32.8402311
Israel MEATCONSUMP POULTRY KG_CAP A 1990 34.28030448
Israel MEATCONSUMP POULTRY KG_CAP A 1991 35.91903036
Israel MEATCONSUMP POULTRY KG_CAP A 1992 38.35226308
Israel MEATCONSUMP POULTRY KG_CAP A 1993 39.83775298
Israel MEATCONSUMP POULTRY KG_CAP A 1994 42.24379276
Israel MEATCONSUMP POULTRY KG_CAP A 1995 40.70579145
Israel MEATCONSUMP POULTRY KG_CAP A 1996 40.8492607
Israel MEATCONSUMP POULTRY KG_CAP A 1997 40.48626958
Israel MEATCONSUMP POULTRY KG_CAP A 1998 40.24656805
Israel MEATCONSUMP POULTRY KG_CAP A 1999 41.01056191
Israel MEATCONSUMP POULTRY KG_CAP A 2000 58.99653494
Israel MEATCONSUMP POULTRY KG_CAP A 2001 63.55273517
Israel MEATCONSUMP POULTRY KG_CAP A 2002 63.09164011
Israel MEATCONSUMP POULTRY KG_CAP A 2003 61.24335718
Israel MEATCONSUMP POULTRY KG_CAP A 2004 62.45333509
Israel MEATCONSUMP POULTRY KG_CAP A 2005 63.73297226
Israel MEATCONSUMP POULTRY KG_CAP A 2006 66.05715816
Israel MEATCONSUMP POULTRY KG_CAP A 2007 64.82057214
Israel MEATCONSUMP POULTRY KG_CAP A 2008 63.47973801
Israel MEATCONSUMP POULTRY KG_CAP A 2009 63.36532714
Israel MEATCONSUMP POULTRY KG_CAP A 2010 63.64404428
Israel MEATCONSUMP POULTRY KG_CAP A 2011 65.90245148
Israel MEATCONSUMP POULTRY KG_CAP A 2012 65.68456277
Israel MEATCONSUMP POULTRY KG_CAP A 2013 62.96922231
Israel MEATCONSUMP POULTRY KG_CAP A 2014 62.96804024
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1992 7.713005935
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1993 6.396434451
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1994 4.534924664
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1995 3.193992355
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1996 3.127806996
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1997 3.276296649
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1998 3.220904806
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 1999 2.581693914
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2000 3.23530417
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2001 4.026321693
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2002 5.0729233
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2003 5.743449795
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2004 7.199973338
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2005 9.107450869
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2006 12.42581745
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2007 11.91423788
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2008 11.04612541
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2009 10.58459328
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2010 12.51472687
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2011 13.39350942
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2012 14.42884208
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2013 13.04627679
Kazakhstan MEATCONSUMP POULTRY KG_CAP A 2014 10.88853582
Malaysia MEATCONSUMP POULTRY KG_CAP A 1983 11.42879837
Malaysia MEATCONSUMP POULTRY KG_CAP A 1984 12.26966607
Malaysia MEATCONSUMP POULTRY KG_CAP A 1985 14.25321976
Malaysia MEATCONSUMP POULTRY KG_CAP A 1986 14.8170041
Malaysia MEATCONSUMP POULTRY KG_CAP A 1987 16.48071918
Malaysia MEATCONSUMP POULTRY KG_CAP A 1988 16.67796424
Malaysia MEATCONSUMP POULTRY KG_CAP A 1989 16.79372394
Malaysia MEATCONSUMP POULTRY KG_CAP A 1990 18.63335679
Malaysia MEATCONSUMP POULTRY KG_CAP A 1991 22.17355723
Malaysia MEATCONSUMP POULTRY KG_CAP A 1992 25.48509732
Malaysia MEATCONSUMP POULTRY KG_CAP A 1993 28.61892743
Malaysia MEATCONSUMP POULTRY KG_CAP A 1994 29.65242455
Malaysia MEATCONSUMP POULTRY KG_CAP A 1995 29.93927218
Malaysia MEATCONSUMP POULTRY KG_CAP A 1996 29.54158911
Malaysia MEATCONSUMP POULTRY KG_CAP A 1997 29.19174674
Malaysia MEATCONSUMP POULTRY KG_CAP A 1998 28.92417957
Malaysia MEATCONSUMP POULTRY KG_CAP A 1999 29.12417174
Malaysia MEATCONSUMP POULTRY KG_CAP A 2000 27.77094429
Malaysia MEATCONSUMP POULTRY KG_CAP A 2001 28.67456253
Malaysia MEATCONSUMP POULTRY KG_CAP A 2002 30.6268262
Malaysia MEATCONSUMP POULTRY KG_CAP A 2003 30.77088842
Malaysia MEATCONSUMP POULTRY KG_CAP A 2004 32.36960109
Malaysia MEATCONSUMP POULTRY KG_CAP A 2005 33.35974003
Malaysia MEATCONSUMP POULTRY KG_CAP A 2006 34.75483448
Malaysia MEATCONSUMP POULTRY KG_CAP A 2007 34.97598
Malaysia MEATCONSUMP POULTRY KG_CAP A 2008 33.99313337
Malaysia MEATCONSUMP POULTRY KG_CAP A 2009 36.00919634
Malaysia MEATCONSUMP POULTRY KG_CAP A 2010 39.41059224
Malaysia MEATCONSUMP POULTRY KG_CAP A 2011 39.92753322
Malaysia MEATCONSUMP POULTRY KG_CAP A 2012 40.26231391
Malaysia MEATCONSUMP POULTRY KG_CAP A 2013 40.72004076
Malaysia MEATCONSUMP POULTRY KG_CAP A 2014 40.84525709
Mozambique MEATCONSUMP POULTRY KG_CAP A 1983 1.493419482
Mozambique MEATCONSUMP POULTRY KG_CAP A 1984 1.537344243
Mozambique MEATCONSUMP POULTRY KG_CAP A 1985 1.551264708
Mozambique MEATCONSUMP POULTRY KG_CAP A 1986 1.607139165
Mozambique MEATCONSUMP POULTRY KG_CAP A 1987 1.668342536
Mozambique MEATCONSUMP POULTRY KG_CAP A 1988 1.739558135
Mozambique MEATCONSUMP POULTRY KG_CAP A 1989 1.745803702
Mozambique MEATCONSUMP POULTRY KG_CAP A 1990 1.805654449
Mozambique MEATCONSUMP POULTRY KG_CAP A 1991 1.797868436
Mozambique MEATCONSUMP POULTRY KG_CAP A 1992 1.782561682
Mozambique MEATCONSUMP POULTRY KG_CAP A 1993 1.694287414
Mozambique MEATCONSUMP POULTRY KG_CAP A 1994 1.835278587
Mozambique MEATCONSUMP POULTRY KG_CAP A 1995 1.719249171
Mozambique MEATCONSUMP POULTRY KG_CAP A 1996 1.709963003
Mozambique MEATCONSUMP POULTRY KG_CAP A 1997 1.765509912
Mozambique MEATCONSUMP POULTRY KG_CAP A 1998 1.858894771
Mozambique MEATCONSUMP POULTRY KG_CAP A 1999 1.666151313
Mozambique MEATCONSUMP POULTRY KG_CAP A 2000 1.673131998
Mozambique MEATCONSUMP POULTRY KG_CAP A 2001 1.606630455
Mozambique MEATCONSUMP POULTRY KG_CAP A 2002 1.893043486
Mozambique MEATCONSUMP POULTRY KG_CAP A 2003 1.19678762
Mozambique MEATCONSUMP POULTRY KG_CAP A 2004 1.286736182
Mozambique MEATCONSUMP POULTRY KG_CAP A 2005 1.439078606
Mozambique MEATCONSUMP POULTRY KG_CAP A 2006 1.480061245
Mozambique MEATCONSUMP POULTRY KG_CAP A 2007 1.37161875
Mozambique MEATCONSUMP POULTRY KG_CAP A 2008 1.439515005
Mozambique MEATCONSUMP POULTRY KG_CAP A 2009 1.749034826
Mozambique MEATCONSUMP POULTRY KG_CAP A 2010 1.604426151
Mozambique MEATCONSUMP POULTRY KG_CAP A 2011 1.688181979
Mozambique MEATCONSUMP POULTRY KG_CAP A 2012 1.466523918
Mozambique MEATCONSUMP POULTRY KG_CAP A 2013 1.555581119
Mozambique MEATCONSUMP POULTRY KG_CAP A 2014 1.461156671
Nigeria MEATCONSUMP POULTRY KG_CAP A 1983 1.622494185
Nigeria MEATCONSUMP POULTRY KG_CAP A 1984 1.467013683
Nigeria MEATCONSUMP POULTRY KG_CAP A 1985 1.436913535
Nigeria MEATCONSUMP POULTRY KG_CAP A 1986 1.440812832
Nigeria MEATCONSUMP POULTRY KG_CAP A 1987 1.512899687
Nigeria MEATCONSUMP POULTRY KG_CAP A 1988 1.552412746
Nigeria MEATCONSUMP POULTRY KG_CAP A 1989 1.597276703
Nigeria MEATCONSUMP POULTRY KG_CAP A 1990 1.602354348
Nigeria MEATCONSUMP POULTRY KG_CAP A 1991 1.480347719
Nigeria MEATCONSUMP POULTRY KG_CAP A 1992 1.417210116
Nigeria MEATCONSUMP POULTRY KG_CAP A 1993 1.407726205
Nigeria MEATCONSUMP POULTRY KG_CAP A 1994 1.398389853
Nigeria MEATCONSUMP POULTRY KG_CAP A 1995 1.371639382
Nigeria MEATCONSUMP POULTRY KG_CAP A 1996 1.345735207
Nigeria MEATCONSUMP POULTRY KG_CAP A 1997 1.320551391
Nigeria MEATCONSUMP POULTRY KG_CAP A 1998 1.295448047
Nigeria MEATCONSUMP POULTRY KG_CAP A 1999 1.277788344
Nigeria MEATCONSUMP POULTRY KG_CAP A 2000 1.174507186
Nigeria MEATCONSUMP POULTRY KG_CAP A 2001 1.379309812
Nigeria MEATCONSUMP POULTRY KG_CAP A 2002 1.450492702
Nigeria MEATCONSUMP POULTRY KG_CAP A 2003 1.337984432
Nigeria MEATCONSUMP POULTRY KG_CAP A 2004 1.365304157
Nigeria MEATCONSUMP POULTRY KG_CAP A 2005 1.379078131
Nigeria MEATCONSUMP POULTRY KG_CAP A 2006 1.425173901
Nigeria MEATCONSUMP POULTRY KG_CAP A 2007 1.454639355
Nigeria MEATCONSUMP POULTRY KG_CAP A 2008 1.514602402
Nigeria MEATCONSUMP POULTRY KG_CAP A 2009 1.549056781
Nigeria MEATCONSUMP POULTRY KG_CAP A 2010 1.575930624
Nigeria MEATCONSUMP POULTRY KG_CAP A 2011 1.60789074
Nigeria MEATCONSUMP POULTRY KG_CAP A 2012 1.511574742
Nigeria MEATCONSUMP POULTRY KG_CAP A 2013 1.449674337
Nigeria MEATCONSUMP POULTRY KG_CAP A 2014 1.401999376
Pakistan MEATCONSUMP POULTRY KG_CAP A 1983 0.752585499
Pakistan MEATCONSUMP POULTRY KG_CAP A 1984 0.827868111
Pakistan MEATCONSUMP POULTRY KG_CAP A 1985 0.963457969
Pakistan MEATCONSUMP POULTRY KG_CAP A 1986 1.146043797
Pakistan MEATCONSUMP POULTRY KG_CAP A 1987 1.18074211
Pakistan MEATCONSUMP POULTRY KG_CAP A 1988 1.32370655
Pakistan MEATCONSUMP POULTRY KG_CAP A 1989 1.4318714
Pakistan MEATCONSUMP POULTRY KG_CAP A 1990 1.27301403
Pakistan MEATCONSUMP POULTRY KG_CAP A 1991 1.193322139
Pakistan MEATCONSUMP POULTRY KG_CAP A 1992 1.299168762
Pakistan MEATCONSUMP POULTRY KG_CAP A 1993 1.969263049
Pakistan MEATCONSUMP POULTRY KG_CAP A 1994 2.141494292
Pakistan MEATCONSUMP POULTRY KG_CAP A 1995 2.170999994
Pakistan MEATCONSUMP POULTRY KG_CAP A 1996 2.433326285
Pakistan MEATCONSUMP POULTRY KG_CAP A 1997 2.579938991
Pakistan MEATCONSUMP POULTRY KG_CAP A 1998 1.852470609
Pakistan MEATCONSUMP POULTRY KG_CAP A 1999 1.970399191
Pakistan MEATCONSUMP POULTRY KG_CAP A 2000 2.000490067
Pakistan MEATCONSUMP POULTRY KG_CAP A 2001 2.061042431
Pakistan MEATCONSUMP POULTRY KG_CAP A 2002 2.115220421
Pakistan MEATCONSUMP POULTRY KG_CAP A 2003 2.178683643
Pakistan MEATCONSUMP POULTRY KG_CAP A 2004 2.175216635
Pakistan MEATCONSUMP POULTRY KG_CAP A 2005 2.168779322
Pakistan MEATCONSUMP POULTRY KG_CAP A 2006 2.831350443
Pakistan MEATCONSUMP POULTRY KG_CAP A 2007 3.000577342
Pakistan MEATCONSUMP POULTRY KG_CAP A 2008 3.191786161
Pakistan MEATCONSUMP POULTRY KG_CAP A 2009 3.42192391
Pakistan MEATCONSUMP POULTRY KG_CAP A 2010 3.618312564
Pakistan MEATCONSUMP POULTRY KG_CAP A 2011 3.856063044
Pakistan MEATCONSUMP POULTRY KG_CAP A 2012 4.123740269
Pakistan MEATCONSUMP POULTRY KG_CAP A 2013 4.131288859
Pakistan MEATCONSUMP POULTRY KG_CAP A 2014 4.201357943
Paraguay MEATCONSUMP POULTRY KG_CAP A 1983 3.972577623
Paraguay MEATCONSUMP POULTRY KG_CAP A 1984 3.98231203
Paraguay MEATCONSUMP POULTRY KG_CAP A 1985 3.989317711
Paraguay MEATCONSUMP POULTRY KG_CAP A 1986 4.924674433
Paraguay MEATCONSUMP POULTRY KG_CAP A 1987 5.059059493
Paraguay MEATCONSUMP POULTRY KG_CAP A 1988 5.175085989
Paraguay MEATCONSUMP POULTRY KG_CAP A 1989 5.212657271
Paraguay MEATCONSUMP POULTRY KG_CAP A 1990 5.119159043
Paraguay MEATCONSUMP POULTRY KG_CAP A 1991 3.755785811
Paraguay MEATCONSUMP POULTRY KG_CAP A 1992 3.96922334
Paraguay MEATCONSUMP POULTRY KG_CAP A 1993 4.246880798
Paraguay MEATCONSUMP POULTRY KG_CAP A 1994 5.787014746
Paraguay MEATCONSUMP POULTRY KG_CAP A 1995 6.192365247
Paraguay MEATCONSUMP POULTRY KG_CAP A 1996 6.178158813
Paraguay MEATCONSUMP POULTRY KG_CAP A 1997 6.42005694
Paraguay MEATCONSUMP POULTRY KG_CAP A 1998 6.525643378
Paraguay MEATCONSUMP POULTRY KG_CAP A 1999 7.047708468
Paraguay MEATCONSUMP POULTRY KG_CAP A 2000 5.738809119
Paraguay MEATCONSUMP POULTRY KG_CAP A 2001 6.152063666
Paraguay MEATCONSUMP POULTRY KG_CAP A 2002 5.830763469
Paraguay MEATCONSUMP POULTRY KG_CAP A 2003 6.032537872
Paraguay MEATCONSUMP POULTRY KG_CAP A 2004 6.537489968
Paraguay MEATCONSUMP POULTRY KG_CAP A 2005 6.411300804
Paraguay MEATCONSUMP POULTRY KG_CAP A 2006 6.814988743
Paraguay MEATCONSUMP POULTRY KG_CAP A 2007 4.470818145
Paraguay MEATCONSUMP POULTRY KG_CAP A 2008 5.353521527
Paraguay MEATCONSUMP POULTRY KG_CAP A 2009 5.145788342
Paraguay MEATCONSUMP POULTRY KG_CAP A 2010 4.911108106
Paraguay MEATCONSUMP POULTRY KG_CAP A 2011 5.444272144
Paraguay MEATCONSUMP POULTRY KG_CAP A 2012 5.495151698
Paraguay MEATCONSUMP POULTRY KG_CAP A 2013 5.45541931
Paraguay MEATCONSUMP POULTRY KG_CAP A 2014 5.384932003
Peru MEATCONSUMP POULTRY KG_CAP A 1983 9.738348922
Peru MEATCONSUMP POULTRY KG_CAP A 1984 8.375242669
Peru MEATCONSUMP POULTRY KG_CAP A 1985 9.090285266
Peru MEATCONSUMP POULTRY KG_CAP A 1986 10.65217267
Peru MEATCONSUMP POULTRY KG_CAP A 1987 12.27966703
Peru MEATCONSUMP POULTRY KG_CAP A 1988 12.50678322
Peru MEATCONSUMP POULTRY KG_CAP A 1989 8.475498921
Peru MEATCONSUMP POULTRY KG_CAP A 1990 10.06910905
Peru MEATCONSUMP POULTRY KG_CAP A 1991 11.70862288
Peru MEATCONSUMP POULTRY KG_CAP A 1992 12.54439932
Peru MEATCONSUMP POULTRY KG_CAP A 1993 11.67321781
Peru MEATCONSUMP POULTRY KG_CAP A 1994 11.9955101
Peru MEATCONSUMP POULTRY KG_CAP A 1995 13.14470024
Peru MEATCONSUMP POULTRY KG_CAP A 1996 14.13795935
Peru MEATCONSUMP POULTRY KG_CAP A 1997 15.68835385
Peru MEATCONSUMP POULTRY KG_CAP A 1998 16.51841667
Peru MEATCONSUMP POULTRY KG_CAP A 1999 17.34600085
Peru MEATCONSUMP POULTRY KG_CAP A 2000 18.68909875
Peru MEATCONSUMP POULTRY KG_CAP A 2001 19.2920494
Peru MEATCONSUMP POULTRY KG_CAP A 2002 20.30711283
Peru MEATCONSUMP POULTRY KG_CAP A 2003 19.01457655
Peru MEATCONSUMP POULTRY KG_CAP A 2004 18.76300385
Peru MEATCONSUMP POULTRY KG_CAP A 2005 21.0587367
Peru MEATCONSUMP POULTRY KG_CAP A 2006 22.53479354
Peru MEATCONSUMP POULTRY KG_CAP A 2007 24.21727161
Peru MEATCONSUMP POULTRY KG_CAP A 2008 27.25949598
Peru MEATCONSUMP POULTRY KG_CAP A 2009 29.80676912
Peru MEATCONSUMP POULTRY KG_CAP A 2010 31.31877185
Peru MEATCONSUMP POULTRY KG_CAP A 2011 32.72319144
Peru MEATCONSUMP POULTRY KG_CAP A 2012 35.07135081
Peru MEATCONSUMP POULTRY KG_CAP A 2013 35.88103163
Peru MEATCONSUMP POULTRY KG_CAP A 2014 36.2683328
Philippines MEATCONSUMP POULTRY KG_CAP A 1983 4.841289472
Philippines MEATCONSUMP POULTRY KG_CAP A 1984 3.075063677
Philippines MEATCONSUMP POULTRY KG_CAP A 1985 3.082193374
Philippines MEATCONSUMP POULTRY KG_CAP A 1986 3.132062108
Philippines MEATCONSUMP POULTRY KG_CAP A 1987 3.207012069
Philippines MEATCONSUMP POULTRY KG_CAP A 1988 3.061349851
Philippines MEATCONSUMP POULTRY KG_CAP A 1989 3.212536882
Philippines MEATCONSUMP POULTRY KG_CAP A 1990 3.437173784
Philippines MEATCONSUMP POULTRY KG_CAP A 1991 3.981803862
Philippines MEATCONSUMP POULTRY KG_CAP A 1992 4.164237155
Philippines MEATCONSUMP POULTRY KG_CAP A 1993 4.815811301
Philippines MEATCONSUMP POULTRY KG_CAP A 1994 4.932203306
Philippines MEATCONSUMP POULTRY KG_CAP A 1995 5.31044932
Philippines MEATCONSUMP POULTRY KG_CAP A 1996 5.883229444
Philippines MEATCONSUMP POULTRY KG_CAP A 1997 6.270690885
Philippines MEATCONSUMP POULTRY KG_CAP A 1998 6.133580696
Philippines MEATCONSUMP POULTRY KG_CAP A 1999 6.348686793
Philippines MEATCONSUMP POULTRY KG_CAP A 2000 6.531132275
Philippines MEATCONSUMP POULTRY KG_CAP A 2001 6.94639129
Philippines MEATCONSUMP POULTRY KG_CAP A 2002 7.266184068
Philippines MEATCONSUMP POULTRY KG_CAP A 2003 7.235926706
Philippines MEATCONSUMP POULTRY KG_CAP A 2004 7.364498953
Philippines MEATCONSUMP POULTRY KG_CAP A 2005 7.213074556
Philippines MEATCONSUMP POULTRY KG_CAP A 2006 7.258532132
Philippines MEATCONSUMP POULTRY KG_CAP A 2007 8.096027598
Philippines MEATCONSUMP POULTRY KG_CAP A 2008 8.664325284
Philippines MEATCONSUMP POULTRY KG_CAP A 2009 8.798438556
Philippines MEATCONSUMP POULTRY KG_CAP A 2010 9.39503874
Philippines MEATCONSUMP POULTRY KG_CAP A 2011 9.684017671
Philippines MEATCONSUMP POULTRY KG_CAP A 2012 9.87606996
Philippines MEATCONSUMP POULTRY KG_CAP A 2013 10.02352518
Philippines MEATCONSUMP POULTRY KG_CAP A 2014 10.45114307
Russia MEATCONSUMP POULTRY KG_CAP A 1992 8.776643014
Russia MEATCONSUMP POULTRY KG_CAP A 1993 8.609596234
Russia MEATCONSUMP POULTRY KG_CAP A 1994 10.1856647
Russia MEATCONSUMP POULTRY KG_CAP A 1995 9.949665667
Russia MEATCONSUMP POULTRY KG_CAP A 1996 8.449967789
Russia MEATCONSUMP POULTRY KG_CAP A 1997 10.54055009
Russia MEATCONSUMP POULTRY KG_CAP A 1998 9.109439496
Russia MEATCONSUMP POULTRY KG_CAP A 1999 5.908603781
Russia MEATCONSUMP POULTRY KG_CAP A 2000 8.736223571
Russia MEATCONSUMP POULTRY KG_CAP A 2001 12.99929476
Russia MEATCONSUMP POULTRY KG_CAP A 2002 14.07314842
Russia MEATCONSUMP POULTRY KG_CAP A 2003 13.92466149
Russia MEATCONSUMP POULTRY KG_CAP A 2004 14.12205991
Russia MEATCONSUMP POULTRY KG_CAP A 2005 16.73695795
Russia MEATCONSUMP POULTRY KG_CAP A 2006 17.88227804
Russia MEATCONSUMP POULTRY KG_CAP A 2007 19.78849261
Russia MEATCONSUMP POULTRY KG_CAP A 2008 21.06274007
Russia MEATCONSUMP POULTRY KG_CAP A 2009 21.64877317
Russia MEATCONSUMP POULTRY KG_CAP A 2010 21.5389893
Russia MEATCONSUMP POULTRY KG_CAP A 2011 22.48459634
Russia MEATCONSUMP POULTRY KG_CAP A 2012 25.65169005
Russia MEATCONSUMP POULTRY KG_CAP A 2013 26.80291349
Russia MEATCONSUMP POULTRY KG_CAP A 2014 26.5748358
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1983 26.05852
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1984 20.80676331
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1985 21.67660181
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1986 25.43791177
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1987 26.65084738
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1988 26.5775214
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1989 24.33581718
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1990 25.80326333
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1991 27.60167217
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1992 24.14388931
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1993 22.31660719
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1994 20.89391331
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1995 26.81663846
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1996 25.61972963
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1997 28.51639658
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1998 31.98278676
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 1999 34.99839015
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2000 37.65603307
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2001 39.62058055
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2002 34.79421356
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2003 33.91115204
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2004 30.63853788
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2005 34.80041717
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2006 32.85026944
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2007 34.05959228
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2008 35.95253623
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2009 38.7753321
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2010 39.94576098
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2011 42.43788968
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2012 42.38698657
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2013 44.76513484
Saudi Arabia MEATCONSUMP POULTRY KG_CAP A 2014 43.50467063
South Africa MEATCONSUMP POULTRY KG_CAP A 1983 8.016362552
South Africa MEATCONSUMP POULTRY KG_CAP A 1984 8.130128962
South Africa MEATCONSUMP POULTRY KG_CAP A 1985 8.535450924
South Africa MEATCONSUMP POULTRY KG_CAP A 1986 8.924453686
South Africa MEATCONSUMP POULTRY KG_CAP A 1987 9.323767873
South Africa MEATCONSUMP POULTRY KG_CAP A 1988 9.460509014
South Africa MEATCONSUMP POULTRY KG_CAP A 1989 9.4133462
South Africa MEATCONSUMP POULTRY KG_CAP A 1990 13.29956124
South Africa MEATCONSUMP POULTRY KG_CAP A 1991 12.2643655
South Africa MEATCONSUMP POULTRY KG_CAP A 1992 12.18840973
South Africa MEATCONSUMP POULTRY KG_CAP A 1993 12.14115253
South Africa MEATCONSUMP POULTRY KG_CAP A 1994 13.6440996
South Africa MEATCONSUMP POULTRY KG_CAP A 1995 15.06967723
South Africa MEATCONSUMP POULTRY KG_CAP A 1996 14.80965708
South Africa MEATCONSUMP POULTRY KG_CAP A 1997 16.01432654
South Africa MEATCONSUMP POULTRY KG_CAP A 1998 14.64718277
South Africa MEATCONSUMP POULTRY KG_CAP A 1999 15.92980048
South Africa MEATCONSUMP POULTRY KG_CAP A 2000 17.65346149
South Africa MEATCONSUMP POULTRY KG_CAP A 2001 18.56589899
South Africa MEATCONSUMP POULTRY KG_CAP A 2002 19.23151933
South Africa MEATCONSUMP POULTRY KG_CAP A 2003 19.75452045
South Africa MEATCONSUMP POULTRY KG_CAP A 2004 20.13403507
South Africa MEATCONSUMP POULTRY KG_CAP A 2005 21.25112021
South Africa MEATCONSUMP POULTRY KG_CAP A 2006 22.77920836
South Africa MEATCONSUMP POULTRY KG_CAP A 2007 24.93252991
South Africa MEATCONSUMP POULTRY KG_CAP A 2008 27.19054157
South Africa MEATCONSUMP POULTRY KG_CAP A 2009 27.7764071
South Africa MEATCONSUMP POULTRY KG_CAP A 2010 29.52949719
South Africa MEATCONSUMP POULTRY KG_CAP A 2011 31.02929526
South Africa MEATCONSUMP POULTRY KG_CAP A 2012 31.74720986
South Africa MEATCONSUMP POULTRY KG_CAP A 2013 31.36258946
South Africa MEATCONSUMP POULTRY KG_CAP A 2014 30.77285991
Sudan MEATCONSUMP POULTRY KG_CAP A 1983 0.789461259
Sudan MEATCONSUMP POULTRY KG_CAP A 1984 0.764447696
Sudan MEATCONSUMP POULTRY KG_CAP A 1985 0.761178141
Sudan MEATCONSUMP POULTRY KG_CAP A 1986 0.759111495
Sudan MEATCONSUMP POULTRY KG_CAP A 1987 0.757887661
Sudan MEATCONSUMP POULTRY KG_CAP A 1988 0.737195044
Sudan MEATCONSUMP POULTRY KG_CAP A 1989 0.738154012
Sudan MEATCONSUMP POULTRY KG_CAP A 1990 0.738062287
Sudan MEATCONSUMP POULTRY KG_CAP A 1991 0.743419122
Sudan MEATCONSUMP POULTRY KG_CAP A 1992 0.742955314
Sudan MEATCONSUMP POULTRY KG_CAP A 1993 0.735931975
Sudan MEATCONSUMP POULTRY KG_CAP A 1994 0.725922871
Sudan MEATCONSUMP POULTRY KG_CAP A 1995 0.734214391
Sudan MEATCONSUMP POULTRY KG_CAP A 1996 0.765118068
Sudan MEATCONSUMP POULTRY KG_CAP A 1997 0.697095397
Sudan MEATCONSUMP POULTRY KG_CAP A 1998 0.675760622
Sudan MEATCONSUMP POULTRY KG_CAP A 1999 0.671015064
Sudan MEATCONSUMP POULTRY KG_CAP A 2000 0.665445133
Sudan MEATCONSUMP POULTRY KG_CAP A 2001 0.672048298
Sudan MEATCONSUMP POULTRY KG_CAP A 2002 0.655439692
Sudan MEATCONSUMP POULTRY KG_CAP A 2003 0.682633935
Sudan MEATCONSUMP POULTRY KG_CAP A 2004 0.845834551
Sudan MEATCONSUMP POULTRY KG_CAP A 2005 0.682522674
Sudan MEATCONSUMP POULTRY KG_CAP A 2006 0.541011898
Sudan MEATCONSUMP POULTRY KG_CAP A 2007 0.568983001
Sudan MEATCONSUMP POULTRY KG_CAP A 2008 0.56568333
Sudan MEATCONSUMP POULTRY KG_CAP A 2009 0.573721542
Sudan MEATCONSUMP POULTRY KG_CAP A 2010 0.766236935
Sudan MEATCONSUMP POULTRY KG_CAP A 2011 0.822173862
Sudan MEATCONSUMP POULTRY KG_CAP A 2012 0.903522175
Sudan MEATCONSUMP POULTRY KG_CAP A 2013 0.925945596
Sudan MEATCONSUMP POULTRY KG_CAP A 2014 0.943738039
Tanzania MEATCONSUMP POULTRY KG_CAP A 1983 0.771441095
Tanzania MEATCONSUMP POULTRY KG_CAP A 1984 0.73830441
Tanzania MEATCONSUMP POULTRY KG_CAP A 1985 0.733762924
Tanzania MEATCONSUMP POULTRY KG_CAP A 1986 0.743281245
Tanzania MEATCONSUMP POULTRY KG_CAP A 1987 0.772814173
Tanzania MEATCONSUMP POULTRY KG_CAP A 1988 0.796055641
Tanzania MEATCONSUMP POULTRY KG_CAP A 1989 0.859110441
Tanzania MEATCONSUMP POULTRY KG_CAP A 1990 0.870158877
Tanzania MEATCONSUMP POULTRY KG_CAP A 1991 0.975661642
Tanzania MEATCONSUMP POULTRY KG_CAP A 1992 0.97576733
Tanzania MEATCONSUMP POULTRY KG_CAP A 1993 1.100117224
Tanzania MEATCONSUMP POULTRY KG_CAP A 1994 0.944576289
Tanzania MEATCONSUMP POULTRY KG_CAP A 1995 1.034549894
Tanzania MEATCONSUMP POULTRY KG_CAP A 1996 0.93498224
Tanzania MEATCONSUMP POULTRY KG_CAP A 1997 1.007616788
Tanzania MEATCONSUMP POULTRY KG_CAP A 1998 1.067496174
Tanzania MEATCONSUMP POULTRY KG_CAP A 1999 1.091561744
Tanzania MEATCONSUMP POULTRY KG_CAP A 2000 1.111981268
Tanzania MEATCONSUMP POULTRY KG_CAP A 2001 1.119641491
Tanzania MEATCONSUMP POULTRY KG_CAP A 2002 1.12172987
Tanzania MEATCONSUMP POULTRY KG_CAP A 2003 1.190565022
Tanzania MEATCONSUMP POULTRY KG_CAP A 2004 1.261290663
Tanzania MEATCONSUMP POULTRY KG_CAP A 2005 1.244314828
Tanzania MEATCONSUMP POULTRY KG_CAP A 2006 1.193975351
Tanzania MEATCONSUMP POULTRY KG_CAP A 2007 1.081807445
Tanzania MEATCONSUMP POULTRY KG_CAP A 2008 1.182703884
Tanzania MEATCONSUMP POULTRY KG_CAP A 2009 1.100786449
Tanzania MEATCONSUMP POULTRY KG_CAP A 2010 1.103652399
Tanzania MEATCONSUMP POULTRY KG_CAP A 2011 1.093910853
Tanzania MEATCONSUMP POULTRY KG_CAP A 2012 1.06667062
Tanzania MEATCONSUMP POULTRY KG_CAP A 2013 1.047037559
Tanzania MEATCONSUMP POULTRY KG_CAP A 2014 1.035968212
Thailand MEATCONSUMP POULTRY KG_CAP A 1983 7.510110824
Thailand MEATCONSUMP POULTRY KG_CAP A 1984 6.884772363
Thailand MEATCONSUMP POULTRY KG_CAP A 1985 7.239755816
Thailand MEATCONSUMP POULTRY KG_CAP A 1986 7.267575343
Thailand MEATCONSUMP POULTRY KG_CAP A 1987 7.380147224
Thailand MEATCONSUMP POULTRY KG_CAP A 1988 7.734244527
Thailand MEATCONSUMP POULTRY KG_CAP A 1989 8.049617116
Thailand MEATCONSUMP POULTRY KG_CAP A 1990 8.152098259
Thailand MEATCONSUMP POULTRY KG_CAP A 1991 10.76904109
Thailand MEATCONSUMP POULTRY KG_CAP A 1992 12.96924505
Thailand MEATCONSUMP POULTRY KG_CAP A 1993 13.30931873
Thailand MEATCONSUMP POULTRY KG_CAP A 1994 12.25569709
Thailand MEATCONSUMP POULTRY KG_CAP A 1995 12.12136225
Thailand MEATCONSUMP POULTRY KG_CAP A 1996 12.66951579
Thailand MEATCONSUMP POULTRY KG_CAP A 1997 12.28182967
Thailand MEATCONSUMP POULTRY KG_CAP A 1998 13.00694005
Thailand MEATCONSUMP POULTRY KG_CAP A 1999 11.40273537
Thailand MEATCONSUMP POULTRY KG_CAP A 2000 11.18708289
Thailand MEATCONSUMP POULTRY KG_CAP A 2001 11.81014087
Thailand MEATCONSUMP POULTRY KG_CAP A 2002 11.37637276
Thailand MEATCONSUMP POULTRY KG_CAP A 2003 9.35583431
Thailand MEATCONSUMP POULTRY KG_CAP A 2004 8.088950369
Thailand MEATCONSUMP POULTRY KG_CAP A 2005 9.433646705
Thailand MEATCONSUMP POULTRY KG_CAP A 2006 9.04488307
Thailand MEATCONSUMP POULTRY KG_CAP A 2007 10.12196464
Thailand MEATCONSUMP POULTRY KG_CAP A 2008 8.472331713
Thailand MEATCONSUMP POULTRY KG_CAP A 2009 8.458022444
Thailand MEATCONSUMP POULTRY KG_CAP A 2010 8.534829097
Thailand MEATCONSUMP POULTRY KG_CAP A 2011 8.561837752
Thailand MEATCONSUMP POULTRY KG_CAP A 2012 7.647362236
Thailand MEATCONSUMP POULTRY KG_CAP A 2013 7.661046758
Thailand MEATCONSUMP POULTRY KG_CAP A 2014 7.856484028
Ukraine MEATCONSUMP POULTRY KG_CAP A 1992 8.505574856
Ukraine MEATCONSUMP POULTRY KG_CAP A 1993 6.208474926
Ukraine MEATCONSUMP POULTRY KG_CAP A 1994 4.535032683
Ukraine MEATCONSUMP POULTRY KG_CAP A 1995 4.044824662
Ukraine MEATCONSUMP POULTRY KG_CAP A 1996 5.346420179
Ukraine MEATCONSUMP POULTRY KG_CAP A 1997 4.216900328
Ukraine MEATCONSUMP POULTRY KG_CAP A 1998 4.422878706
Ukraine MEATCONSUMP POULTRY KG_CAP A 1999 5.184974086
Ukraine MEATCONSUMP POULTRY KG_CAP A 2000 3.923405959
Ukraine MEATCONSUMP POULTRY KG_CAP A 2001 5.557291335
Ukraine MEATCONSUMP POULTRY KG_CAP A 2002 6.73112899
Ukraine MEATCONSUMP POULTRY KG_CAP A 2003 7.702325613
Ukraine MEATCONSUMP POULTRY KG_CAP A 2004 12.25720382
Ukraine MEATCONSUMP POULTRY KG_CAP A 2005 11.96785797
Ukraine MEATCONSUMP POULTRY KG_CAP A 2006 14.01203434
Ukraine MEATCONSUMP POULTRY KG_CAP A 2007 15.64028238
Ukraine MEATCONSUMP POULTRY KG_CAP A 2008 19.82048389
Ukraine MEATCONSUMP POULTRY KG_CAP A 2009 20.3561934
Ukraine MEATCONSUMP POULTRY KG_CAP A 2010 20.58290369
Ukraine MEATCONSUMP POULTRY KG_CAP A 2011 19.37615709
Ukraine MEATCONSUMP POULTRY KG_CAP A 2012 21.48419569
Ukraine MEATCONSUMP POULTRY KG_CAP A 2013 22.11587714
Ukraine MEATCONSUMP POULTRY KG_CAP A 2014 23.37211588
Uruguay MEATCONSUMP POULTRY KG_CAP A 1983 5.27973107
Uruguay MEATCONSUMP POULTRY KG_CAP A 1984 5.436150742
Uruguay MEATCONSUMP POULTRY KG_CAP A 1985 5.276812621
Uruguay MEATCONSUMP POULTRY KG_CAP A 1986 5.458871306
Uruguay MEATCONSUMP POULTRY KG_CAP A 1987 5.715409476
Uruguay MEATCONSUMP POULTRY KG_CAP A 1988 6.73034832
Uruguay MEATCONSUMP POULTRY KG_CAP A 1989 7.044013836
Uruguay MEATCONSUMP POULTRY KG_CAP A 1990 6.815639484
Uruguay MEATCONSUMP POULTRY KG_CAP A 1991 7.49913134
Uruguay MEATCONSUMP POULTRY KG_CAP A 1992 7.730636621
Uruguay MEATCONSUMP POULTRY KG_CAP A 1993 9.612507517
Uruguay MEATCONSUMP POULTRY KG_CAP A 1994 9.567011148
Uruguay MEATCONSUMP POULTRY KG_CAP A 1995 10.6724572
Uruguay MEATCONSUMP POULTRY KG_CAP A 1996 10.97583235
Uruguay MEATCONSUMP POULTRY KG_CAP A 1997 11.01752687
Uruguay MEATCONSUMP POULTRY KG_CAP A 1998 13.77405836
Uruguay MEATCONSUMP POULTRY KG_CAP A 1999 15.40483942
Uruguay MEATCONSUMP POULTRY KG_CAP A 2000 15.2319573
Uruguay MEATCONSUMP POULTRY KG_CAP A 2001 14.66909956
Uruguay MEATCONSUMP POULTRY KG_CAP A 2002 12.00361784
Uruguay MEATCONSUMP POULTRY KG_CAP A 2003 8.426218317
Uruguay MEATCONSUMP POULTRY KG_CAP A 2004 11.17658218
Uruguay MEATCONSUMP POULTRY KG_CAP A 2005 14.02336242
Uruguay MEATCONSUMP POULTRY KG_CAP A 2006 15.89153109
Uruguay MEATCONSUMP POULTRY KG_CAP A 2007 13.1380475
Uruguay MEATCONSUMP POULTRY KG_CAP A 2008 18.79558045
Uruguay MEATCONSUMP POULTRY KG_CAP A 2009 17.63378634
Uruguay MEATCONSUMP POULTRY KG_CAP A 2010 16.46137495
Uruguay MEATCONSUMP POULTRY KG_CAP A 2011 19.68515385
Uruguay MEATCONSUMP POULTRY KG_CAP A 2012 19.51655931
Uruguay MEATCONSUMP POULTRY KG_CAP A 2013 21.43769914
Uruguay MEATCONSUMP POULTRY KG_CAP A 2014 21.37172185
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1983 2.254876685
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1984 2.287459629
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1985 2.086606723
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1986 1.853879601
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1987 2.264033973
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1988 2.147642868
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1989 2.171518316
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1990 2.165329828
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1991 2.05828841
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1992 2.148258959
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1993 2.016025429
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1994 2.00198092
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1995 2.028330461
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1996 2.241960251
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1997 3.20670692
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1998 3.332883085
Viet Nam MEATCONSUMP POULTRY KG_CAP A 1999 3.578587521
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2000 3.974642576
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2001 4.149402072
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2002 4.586589251
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2003 4.819576379
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2004 4.470095981
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2005 4.15205059
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2006 4.857949408
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2007 6.321006552
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2008 7.876135506
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2009 9.076412196
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2010 10.6264599
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2011 15.06394848
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2012 11.82173972
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2013 12.26392475
Viet Nam MEATCONSUMP POULTRY KG_CAP A 2014 12.70853896
Zambia MEATCONSUMP POULTRY KG_CAP A 1983 2.321093959
Zambia MEATCONSUMP POULTRY KG_CAP A 1984 1.853873658
Zambia MEATCONSUMP POULTRY KG_CAP A 1985 2.059210225
Zambia MEATCONSUMP POULTRY KG_CAP A 1986 1.99760255
Zambia MEATCONSUMP POULTRY KG_CAP A 1987 1.966405412
Zambia MEATCONSUMP POULTRY KG_CAP A 1988 2.076626126
Zambia MEATCONSUMP POULTRY KG_CAP A 1989 2.094415979
Zambia MEATCONSUMP POULTRY KG_CAP A 1990 2.122319958
Zambia MEATCONSUMP POULTRY KG_CAP A 1991 2.278497169
Zambia MEATCONSUMP POULTRY KG_CAP A 1992 2.448655222
Zambia MEATCONSUMP POULTRY KG_CAP A 1993 2.630188756
Zambia MEATCONSUMP POULTRY KG_CAP A 1994 2.487457435
Zambia MEATCONSUMP POULTRY KG_CAP A 1995 2.486822747
Zambia MEATCONSUMP POULTRY KG_CAP A 1996 2.669185662
Zambia MEATCONSUMP POULTRY KG_CAP A 1997 2.830144268
Zambia MEATCONSUMP POULTRY KG_CAP A 1998 2.969285404
Zambia MEATCONSUMP POULTRY KG_CAP A 1999 2.996333282
Zambia MEATCONSUMP POULTRY KG_CAP A 2000 3.047643725
Zambia MEATCONSUMP POULTRY KG_CAP A 2001 3.14930359
Zambia MEATCONSUMP POULTRY KG_CAP A 2002 3.140929056
Zambia MEATCONSUMP POULTRY KG_CAP A 2003 3.138377035
Zambia MEATCONSUMP POULTRY KG_CAP A 2004 3.046650494
Zambia MEATCONSUMP POULTRY KG_CAP A 2005 3.003347808
Zambia MEATCONSUMP POULTRY KG_CAP A 2006 2.726491379
Zambia MEATCONSUMP POULTRY KG_CAP A 2007 2.652862095
Zambia MEATCONSUMP POULTRY KG_CAP A 2008 2.706404489
Zambia MEATCONSUMP POULTRY KG_CAP A 2009 2.743610178
Zambia MEATCONSUMP POULTRY KG_CAP A 2010 2.867573596
Zambia MEATCONSUMP POULTRY KG_CAP A 2011 2.842282484
Zambia MEATCONSUMP POULTRY KG_CAP A 2012 2.822689836
Zambia MEATCONSUMP POULTRY KG_CAP A 2013 2.780906509
Zambia MEATCONSUMP POULTRY KG_CAP A 2014 2.724420349
World MEATCONSUMP POULTRY KG_CAP A 1990 6.747217901
World MEATCONSUMP POULTRY KG_CAP A 1991 7.053615448
World MEATCONSUMP POULTRY KG_CAP A 1992 7.218582289
World MEATCONSUMP POULTRY KG_CAP A 1993 7.499808812
World MEATCONSUMP POULTRY KG_CAP A 1994 8.017778007
World MEATCONSUMP POULTRY KG_CAP A 1995 8.532711969
World MEATCONSUMP POULTRY KG_CAP A 1996 8.403584504
World MEATCONSUMP POULTRY KG_CAP A 1997 8.851718623
World MEATCONSUMP POULTRY KG_CAP A 1998 9.035735368
World MEATCONSUMP POULTRY KG_CAP A 1999 9.334275562
World MEATCONSUMP POULTRY KG_CAP A 2000 9.71832645
World MEATCONSUMP POULTRY KG_CAP A 2001 10.06286893
World MEATCONSUMP POULTRY KG_CAP A 2002 10.37698999
World MEATCONSUMP POULTRY KG_CAP A 2003 10.41682269
World MEATCONSUMP POULTRY KG_CAP A 2004 10.55541432
World MEATCONSUMP POULTRY KG_CAP A 2005 11.03920185
World MEATCONSUMP POULTRY KG_CAP A 2006 11.18082653
World MEATCONSUMP POULTRY KG_CAP A 2007 11.71604214
World MEATCONSUMP POULTRY KG_CAP A 2008 12.20469763
World MEATCONSUMP POULTRY KG_CAP A 2009 12.44851859
World MEATCONSUMP POULTRY KG_CAP A 2010 12.76163552
World MEATCONSUMP POULTRY KG_CAP A 2011 13.11505159
World MEATCONSUMP POULTRY KG_CAP A 2012 13.20374114
World MEATCONSUMP POULTRY KG_CAP A 2013 13.07785022
World MEATCONSUMP POULTRY KG_CAP A 2014 13.192303
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1983 1.490073341
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1984 1.411474513
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1985 1.475366587
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1986 1.526564474
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1987 1.56718234
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1988 1.598189006
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1989 1.684087596
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1990 1.559826783
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1991 1.528992294
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1992 1.563502175
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1993 1.354194556
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1994 1.336667002
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1995 1.355279237
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1996 1.328323882
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1997 1.392790322
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1998 1.402209302
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 1999 1.413680063
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2000 1.519718253
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2001 1.631774586
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2002 1.724531397
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2003 1.770023462
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2004 1.825186152
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2005 1.815916211
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2006 1.784322239
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2007 1.922239415
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2008 2.044189041
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2009 2.076871393
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2010 2.417117555
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2011 2.556524151
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2012 2.58581898
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2013 2.544249265
Sub-Saharan Africa MEATCONSUMP POULTRY KG_CAP A 2014 2.573800962
Location IndiaICATOR SUBJECT MEASURE FREQUENCY Year number
Australia MEATCONSUMP SHEEP KG_CAP A 1983 18.26978033
Australia MEATCONSUMP SHEEP KG_CAP A 1984 19.65300644
Australia MEATCONSUMP SHEEP KG_CAP A 1985 21.60259085
Australia MEATCONSUMP SHEEP KG_CAP A 1986 19.9515849
Australia MEATCONSUMP SHEEP KG_CAP A 1987 20.2956802
Australia MEATCONSUMP SHEEP KG_CAP A 1988 18.87788006
Australia MEATCONSUMP SHEEP KG_CAP A 1989 20.32953044
Australia MEATCONSUMP SHEEP KG_CAP A 1990 18.86177628
Australia MEATCONSUMP SHEEP KG_CAP A 1991 19.26701602
Australia MEATCONSUMP SHEEP KG_CAP A 1992 17.83158107
Australia MEATCONSUMP SHEEP KG_CAP A 1993 17.37023077
Australia MEATCONSUMP SHEEP KG_CAP A 1994 18.37848198
Australia MEATCONSUMP SHEEP KG_CAP A 1995 15.00589899
Australia MEATCONSUMP SHEEP KG_CAP A 1996 14.67454648
Australia MEATCONSUMP SHEEP KG_CAP A 1997 14.9195214
Australia MEATCONSUMP SHEEP KG_CAP A 1998 15.30549464
Australia MEATCONSUMP SHEEP KG_CAP A 1999 15.05838759
Australia MEATCONSUMP SHEEP KG_CAP A 2000 16.14026508
Australia MEATCONSUMP SHEEP KG_CAP A 2001 14.75252508
Australia MEATCONSUMP SHEEP KG_CAP A 2002 13.56018654
Australia MEATCONSUMP SHEEP KG_CAP A 2003 11.95253126
Australia MEATCONSUMP SHEEP KG_CAP A 2004 11.78357015
Australia MEATCONSUMP SHEEP KG_CAP A 2005 11.79212417
Australia MEATCONSUMP SHEEP KG_CAP A 2006 12.16911553
Australia MEATCONSUMP SHEEP KG_CAP A 2007 12.39118365
Australia MEATCONSUMP SHEEP KG_CAP A 2008 10.8330575
Australia MEATCONSUMP SHEEP KG_CAP A 2009 10.19931389
Australia MEATCONSUMP SHEEP KG_CAP A 2010 8.873124456
Australia MEATCONSUMP SHEEP KG_CAP A 2011 7.974360939
Australia MEATCONSUMP SHEEP KG_CAP A 2012 8.667484323
Australia MEATCONSUMP SHEEP KG_CAP A 2013 8.68998106
Australia MEATCONSUMP SHEEP KG_CAP A 2014 8.969426888
Canada MEATCONSUMP SHEEP KG_CAP A 1983 0.684345351
Canada MEATCONSUMP SHEEP KG_CAP A 1984 0.742806994
Canada MEATCONSUMP SHEEP KG_CAP A 1985 0.648333839
Canada MEATCONSUMP SHEEP KG_CAP A 1986 0.792706386
Canada MEATCONSUMP SHEEP KG_CAP A 1987 0.776627585
Canada MEATCONSUMP SHEEP KG_CAP A 1988 0.742859807
Canada MEATCONSUMP SHEEP KG_CAP A 1989 0.693247099
Canada MEATCONSUMP SHEEP KG_CAP A 1990 0.730528361
Canada MEATCONSUMP SHEEP KG_CAP A 1991 0.764398694
Canada MEATCONSUMP SHEEP KG_CAP A 1992 0.741268863
Canada MEATCONSUMP SHEEP KG_CAP A 1993 0.752453461
Canada MEATCONSUMP SHEEP KG_CAP A 1994 0.723335739
Canada MEATCONSUMP SHEEP KG_CAP A 1995 0.713434786
Canada MEATCONSUMP SHEEP KG_CAP A 1996 0.664170742
Canada MEATCONSUMP SHEEP KG_CAP A 1997 0.652048238
Canada MEATCONSUMP SHEEP KG_CAP A 1998 0.730205362
Canada MEATCONSUMP SHEEP KG_CAP A 1999 0.753979923
Canada MEATCONSUMP SHEEP KG_CAP A 2000 0.829906743
Canada MEATCONSUMP SHEEP KG_CAP A 2001 0.911330339
Canada MEATCONSUMP SHEEP KG_CAP A 2002 0.910555916
Canada MEATCONSUMP SHEEP KG_CAP A 2003 0.952657367
Canada MEATCONSUMP SHEEP KG_CAP A 2004 0.973914962
Canada MEATCONSUMP SHEEP KG_CAP A 2005 0.983049935
Canada MEATCONSUMP SHEEP KG_CAP A 2006 1.066438228
Canada MEATCONSUMP SHEEP KG_CAP A 2007 1.0708606
Canada MEATCONSUMP SHEEP KG_CAP A 2008 1.024516167
Canada MEATCONSUMP SHEEP KG_CAP A 2009 1.013159927
Canada MEATCONSUMP SHEEP KG_CAP A 2010 0.954362391
Canada MEATCONSUMP SHEEP KG_CAP A 2011 0.925485454
Canada MEATCONSUMP SHEEP KG_CAP A 2012 0.856306873
Canada MEATCONSUMP SHEEP KG_CAP A 2013 0.865449837
Canada MEATCONSUMP SHEEP KG_CAP A 2014 0.8668
Japan MEATCONSUMP SHEEP KG_CAP A 1983 1.225356984
Japan MEATCONSUMP SHEEP KG_CAP A 1984 1.101883246
Japan MEATCONSUMP SHEEP KG_CAP A 1985 1.165662793
Japan MEATCONSUMP SHEEP KG_CAP A 1986 1.157775491
Japan MEATCONSUMP SHEEP KG_CAP A 1987 1.116002295
Japan MEATCONSUMP SHEEP KG_CAP A 1988 0.92411168
Japan MEATCONSUMP SHEEP KG_CAP A 1989 0.849986936
Japan MEATCONSUMP SHEEP KG_CAP A 1990 0.75669645
Japan MEATCONSUMP SHEEP KG_CAP A 1991 0.772784737
Japan MEATCONSUMP SHEEP KG_CAP A 1992 0.811072174
Japan MEATCONSUMP SHEEP KG_CAP A 1993 0.683020401
Japan MEATCONSUMP SHEEP KG_CAP A 1994 0.571794327
Japan MEATCONSUMP SHEEP KG_CAP A 1995 0.585048734
Japan MEATCONSUMP SHEEP KG_CAP A 1996 0.504680856
Japan MEATCONSUMP SHEEP KG_CAP A 1997 0.444473191
Japan MEATCONSUMP SHEEP KG_CAP A 1998 0.425855666
Japan MEATCONSUMP SHEEP KG_CAP A 1999 0.357452078
Japan MEATCONSUMP SHEEP KG_CAP A 2000 0.324378998
Japan MEATCONSUMP SHEEP KG_CAP A 2001 0.31099768
Japan MEATCONSUMP SHEEP KG_CAP A 2002 0.297424718
Japan MEATCONSUMP SHEEP KG_CAP A 2003 0.255048076
Japan MEATCONSUMP SHEEP KG_CAP A 2004 0.32250426
Japan MEATCONSUMP SHEEP KG_CAP A 2005 0.367721359
Japan MEATCONSUMP SHEEP KG_CAP A 2006 0.370242831
Japan MEATCONSUMP SHEEP KG_CAP A 2007 0.266872342
Japan MEATCONSUMP SHEEP KG_CAP A 2008 0.269903807
Japan MEATCONSUMP SHEEP KG_CAP A 2009 0.272527815
Japan MEATCONSUMP SHEEP KG_CAP A 2010 0.218492195
Japan MEATCONSUMP SHEEP KG_CAP A 2011 0.220208725
Japan MEATCONSUMP SHEEP KG_CAP A 2012 0.189870563
Japan MEATCONSUMP SHEEP KG_CAP A 2013 0.125746344
Japan MEATCONSUMP SHEEP KG_CAP A 2014 0.141899896
Korea MEATCONSUMP SHEEP KG_CAP A 1983 0.138252429
Korea MEATCONSUMP SHEEP KG_CAP A 1984 0.087551658
Korea MEATCONSUMP SHEEP KG_CAP A 1985 0.161908458
Korea MEATCONSUMP SHEEP KG_CAP A 1986 0.10551786
Korea MEATCONSUMP SHEEP KG_CAP A 1987 0.13724285
Korea MEATCONSUMP SHEEP KG_CAP A 1988 0.261810728
Korea MEATCONSUMP SHEEP KG_CAP A 1989 0.255144046
Korea MEATCONSUMP SHEEP KG_CAP A 1990 0.195824386
Korea MEATCONSUMP SHEEP KG_CAP A 1991 0.16024107
Korea MEATCONSUMP SHEEP KG_CAP A 1992 0.311317018
Korea MEATCONSUMP SHEEP KG_CAP A 1993 0.230068791
Korea MEATCONSUMP SHEEP KG_CAP A 1994 0.281456873
Korea MEATCONSUMP SHEEP KG_CAP A 1995 0.250725996
Korea MEATCONSUMP SHEEP KG_CAP A 1996 0.213165087
Korea MEATCONSUMP SHEEP KG_CAP A 1997 0.186941021
Korea MEATCONSUMP SHEEP KG_CAP A 1998 0.156064569
Korea MEATCONSUMP SHEEP KG_CAP A 1999 0.131082159
Korea MEATCONSUMP SHEEP KG_CAP A 2000 0.109112651
Korea MEATCONSUMP SHEEP KG_CAP A 2001 0.093144672
Korea MEATCONSUMP SHEEP KG_CAP A 2002 0.108106116
Korea MEATCONSUMP SHEEP KG_CAP A 2003 0.104097669
Korea MEATCONSUMP SHEEP KG_CAP A 2004 0.112403691
Korea MEATCONSUMP SHEEP KG_CAP A 2005 0.113720807
Korea MEATCONSUMP SHEEP KG_CAP A 2006 0.108618488
Korea MEATCONSUMP SHEEP KG_CAP A 2007 0.107621646
Korea MEATCONSUMP SHEEP KG_CAP A 2008 0.105338788
Korea MEATCONSUMP SHEEP KG_CAP A 2009 0.097327101
Korea MEATCONSUMP SHEEP KG_CAP A 2010 0.102885223
Korea MEATCONSUMP SHEEP KG_CAP A 2011 0.117176497
Korea MEATCONSUMP SHEEP KG_CAP A 2012 0.1203379
Korea MEATCONSUMP SHEEP KG_CAP A 2013 0.118112849
Korea MEATCONSUMP SHEEP KG_CAP A 2014 0.143236312
Mexico MEATCONSUMP SHEEP KG_CAP A 1983 0.334204165
Mexico MEATCONSUMP SHEEP KG_CAP A 1984 0.327346498
Mexico MEATCONSUMP SHEEP KG_CAP A 1985 0.377542395
Mexico MEATCONSUMP SHEEP KG_CAP A 1986 0.351024731
Mexico MEATCONSUMP SHEEP KG_CAP A 1987 0.296471109
Mexico MEATCONSUMP SHEEP KG_CAP A 1988 0.37928247
Mexico MEATCONSUMP SHEEP KG_CAP A 1989 0.45431364
Mexico MEATCONSUMP SHEEP KG_CAP A 1990 0.457281009
Mexico MEATCONSUMP SHEEP KG_CAP A 1991 0.591932283
Mexico MEATCONSUMP SHEEP KG_CAP A 1992 0.632318602
Mexico MEATCONSUMP SHEEP KG_CAP A 1993 0.639271949
Mexico MEATCONSUMP SHEEP KG_CAP A 1994 0.662717072
Mexico MEATCONSUMP SHEEP KG_CAP A 1995 0.407521729
Mexico MEATCONSUMP SHEEP KG_CAP A 1996 0.397084467
Mexico MEATCONSUMP SHEEP KG_CAP A 1997 0.486413443
Mexico MEATCONSUMP SHEEP KG_CAP A 1998 0.506899663
Mexico MEATCONSUMP SHEEP KG_CAP A 1999 0.5744749
Mexico MEATCONSUMP SHEEP KG_CAP A 2000 0.680223775
Mexico MEATCONSUMP SHEEP KG_CAP A 2001 0.720052863
Mexico MEATCONSUMP SHEEP KG_CAP A 2002 0.724820745
Mexico MEATCONSUMP SHEEP KG_CAP A 2003 0.967290881
Mexico MEATCONSUMP SHEEP KG_CAP A 2004 0.83072591
Mexico MEATCONSUMP SHEEP KG_CAP A 2005 0.683778822
Mexico MEATCONSUMP SHEEP KG_CAP A 2006 0.656975636
Mexico MEATCONSUMP SHEEP KG_CAP A 2007 0.669340855
Mexico MEATCONSUMP SHEEP KG_CAP A 2008 0.656213059
Mexico MEATCONSUMP SHEEP KG_CAP A 2009 0.583990722
Mexico MEATCONSUMP SHEEP KG_CAP A 2010 0.543925366
Mexico MEATCONSUMP SHEEP KG_CAP A 2011 0.519398403
Mexico MEATCONSUMP SHEEP KG_CAP A 2012 0.479871692
Mexico MEATCONSUMP SHEEP KG_CAP A 2013 0.487241246
Mexico MEATCONSUMP SHEEP KG_CAP A 2014 0.500153302
New Zealand MEATCONSUMP SHEEP KG_CAP A 1983 26.11718244
New Zealand MEATCONSUMP SHEEP KG_CAP A 1984 33.60208086
New Zealand MEATCONSUMP SHEEP KG_CAP A 1985 47.47464007
New Zealand MEATCONSUMP SHEEP KG_CAP A 1986 44.72164814
New Zealand MEATCONSUMP SHEEP KG_CAP A 1987 27.61349394
New Zealand MEATCONSUMP SHEEP KG_CAP A 1988 39.84136287
New Zealand MEATCONSUMP SHEEP KG_CAP A 1989 33.16806273
New Zealand MEATCONSUMP SHEEP KG_CAP A 1990 27.82721967
New Zealand MEATCONSUMP SHEEP KG_CAP A 1991 29.77201989
New Zealand MEATCONSUMP SHEEP KG_CAP A 1992 29.9187477
New Zealand MEATCONSUMP SHEEP KG_CAP A 1993 21.45013775
New Zealand MEATCONSUMP SHEEP KG_CAP A 1994 38.5613287
New Zealand MEATCONSUMP SHEEP KG_CAP A 1995 30.02676933
New Zealand MEATCONSUMP SHEEP KG_CAP A 1996 15.18694873
New Zealand MEATCONSUMP SHEEP KG_CAP A 1997 26.15858544
New Zealand MEATCONSUMP SHEEP KG_CAP A 1998 26.38806771
New Zealand MEATCONSUMP SHEEP KG_CAP A 1999 22.73496972
New Zealand MEATCONSUMP SHEEP KG_CAP A 2000 25.48998194
New Zealand MEATCONSUMP SHEEP KG_CAP A 2001 27.06827415
New Zealand MEATCONSUMP SHEEP KG_CAP A 2002 20.61375144
New Zealand MEATCONSUMP SHEEP KG_CAP A 2003 24.34375648
New Zealand MEATCONSUMP SHEEP KG_CAP A 2004 13.73586741
New Zealand MEATCONSUMP SHEEP KG_CAP A 2005 21.04981347
New Zealand MEATCONSUMP SHEEP KG_CAP A 2006 19.38372344
New Zealand MEATCONSUMP SHEEP KG_CAP A 2007 18.55620909
New Zealand MEATCONSUMP SHEEP KG_CAP A 2008 17.69457264
New Zealand MEATCONSUMP SHEEP KG_CAP A 2009 8.998896557
New Zealand MEATCONSUMP SHEEP KG_CAP A 2010 2.66412511
New Zealand MEATCONSUMP SHEEP KG_CAP A 2011 7.756460531
New Zealand MEATCONSUMP SHEEP KG_CAP A 2012 7.519261339
New Zealand MEATCONSUMP SHEEP KG_CAP A 2013 6.7138445
New Zealand MEATCONSUMP SHEEP KG_CAP A 2014 5.536493733
Turkey MEATCONSUMP SHEEP KG_CAP A 1983 6.080531564
Turkey MEATCONSUMP SHEEP KG_CAP A 1984 5.911856714
Turkey MEATCONSUMP SHEEP KG_CAP A 1985 6.185105845
Turkey MEATCONSUMP SHEEP KG_CAP A 1986 6.149760005
Turkey MEATCONSUMP SHEEP KG_CAP A 1987 6.183286933
Turkey MEATCONSUMP SHEEP KG_CAP A 1988 6.068854223
Turkey MEATCONSUMP SHEEP KG_CAP A 1989 5.956592665
Turkey MEATCONSUMP SHEEP KG_CAP A 1990 5.914277997
Turkey MEATCONSUMP SHEEP KG_CAP A 1991 5.825699502
Turkey MEATCONSUMP SHEEP KG_CAP A 1992 5.680087293
Turkey MEATCONSUMP SHEEP KG_CAP A 1993 5.576293056
Turkey MEATCONSUMP SHEEP KG_CAP A 1994 4.957500513
Turkey MEATCONSUMP SHEEP KG_CAP A 1995 6.142705948
Turkey MEATCONSUMP SHEEP KG_CAP A 1996 5.401156894
Turkey MEATCONSUMP SHEEP KG_CAP A 1997 5.482101425
Turkey MEATCONSUMP SHEEP KG_CAP A 1998 5.342382736
Turkey MEATCONSUMP SHEEP KG_CAP A 1999 5.183566694
Turkey MEATCONSUMP SHEEP KG_CAP A 2000 5.195626458
Turkey MEATCONSUMP SHEEP KG_CAP A 2001 4.812460199
Turkey MEATCONSUMP SHEEP KG_CAP A 2002 4.499852649
Turkey MEATCONSUMP SHEEP KG_CAP A 2003 4.163859014
Turkey MEATCONSUMP SHEEP KG_CAP A 2004 4.186444008
Turkey MEATCONSUMP SHEEP KG_CAP A 2005 4.092611218
Turkey MEATCONSUMP SHEEP KG_CAP A 2006 4.041144615
Turkey MEATCONSUMP SHEEP KG_CAP A 2007 4.088973012
Turkey MEATCONSUMP SHEEP KG_CAP A 2008 4.004034975
Turkey MEATCONSUMP SHEEP KG_CAP A 2009 3.700790351
Turkey MEATCONSUMP SHEEP KG_CAP A 2010 3.349764988
Turkey MEATCONSUMP SHEEP KG_CAP A 2011 3.558050578
Turkey MEATCONSUMP SHEEP KG_CAP A 2012 3.830212553
Turkey MEATCONSUMP SHEEP KG_CAP A 2013 3.82591101
Turkey MEATCONSUMP SHEEP KG_CAP A 2014 3.844651952
USA MEATCONSUMP SHEEP KG_CAP A 1983 0.656626549
USA MEATCONSUMP SHEEP KG_CAP A 1984 0.668449006
USA MEATCONSUMP SHEEP KG_CAP A 1985 0.641972644
USA MEATCONSUMP SHEEP KG_CAP A 1986 0.617541238
USA MEATCONSUMP SHEEP KG_CAP A 1987 0.585403165
USA MEATCONSUMP SHEEP KG_CAP A 1988 0.619460273
USA MEATCONSUMP SHEEP KG_CAP A 1989 0.611580831
USA MEATCONSUMP SHEEP KG_CAP A 1990 0.622644715
USA MEATCONSUMP SHEEP KG_CAP A 1991 0.616419307
USA MEATCONSUMP SHEEP KG_CAP A 1992 0.596469859
USA MEATCONSUMP SHEEP KG_CAP A 1993 0.579817814
USA MEATCONSUMP SHEEP KG_CAP A 1994 0.519526065
USA MEATCONSUMP SHEEP KG_CAP A 1995 0.518237845
USA MEATCONSUMP SHEEP KG_CAP A 1996 0.491535848
USA MEATCONSUMP SHEEP KG_CAP A 1997 0.484041267
USA MEATCONSUMP SHEEP KG_CAP A 1998 0.516800466
USA MEATCONSUMP SHEEP KG_CAP A 1999 0.507783214
USA MEATCONSUMP SHEEP KG_CAP A 2000 0.496507541
USA MEATCONSUMP SHEEP KG_CAP A 2001 0.510869058
USA MEATCONSUMP SHEEP KG_CAP A 2002 0.523927835
USA MEATCONSUMP SHEEP KG_CAP A 2003 0.500173657
USA MEATCONSUMP SHEEP KG_CAP A 2004 0.482256816
USA MEATCONSUMP SHEEP KG_CAP A 2005 0.469892185
USA MEATCONSUMP SHEEP KG_CAP A 2006 0.465555991
USA MEATCONSUMP SHEEP KG_CAP A 2007 0.499302448
USA MEATCONSUMP SHEEP KG_CAP A 2008 0.438657673
USA MEATCONSUMP SHEEP KG_CAP A 2009 0.428191198
USA MEATCONSUMP SHEEP KG_CAP A 2010 0.401402563
USA MEATCONSUMP SHEEP KG_CAP A 2011 0.370113089
USA MEATCONSUMP SHEEP KG_CAP A 2012 0.37615566
USA MEATCONSUMP SHEEP KG_CAP A 2013 0.380077947
USA MEATCONSUMP SHEEP KG_CAP A 2014 0.379569104
Algeria MEATCONSUMP SHEEP KG_CAP A 1983 3.92256556
Algeria MEATCONSUMP SHEEP KG_CAP A 1984 4.073740912
Algeria MEATCONSUMP SHEEP KG_CAP A 1985 3.818619443
Algeria MEATCONSUMP SHEEP KG_CAP A 1986 3.800980652
Algeria MEATCONSUMP SHEEP KG_CAP A 1987 4.219245391
Algeria MEATCONSUMP SHEEP KG_CAP A 1988 4.207675323
Algeria MEATCONSUMP SHEEP KG_CAP A 1989 4.721348274
Algeria MEATCONSUMP SHEEP KG_CAP A 1990 4.981118877
Algeria MEATCONSUMP SHEEP KG_CAP A 1991 5.028404927
Algeria MEATCONSUMP SHEEP KG_CAP A 1992 5.263282234
Algeria MEATCONSUMP SHEEP KG_CAP A 1993 5.550516474
Algeria MEATCONSUMP SHEEP KG_CAP A 1994 5.451143184
Algeria MEATCONSUMP SHEEP KG_CAP A 1995 5.418834006
Algeria MEATCONSUMP SHEEP KG_CAP A 1996 5.646182563
Algeria MEATCONSUMP SHEEP KG_CAP A 1997 5.191982951
Algeria MEATCONSUMP SHEEP KG_CAP A 1998 5.200734489
Algeria MEATCONSUMP SHEEP KG_CAP A 1999 5.033914908
Algeria MEATCONSUMP SHEEP KG_CAP A 2000 5.061544235
Algeria MEATCONSUMP SHEEP KG_CAP A 2001 4.872515081
Algeria MEATCONSUMP SHEEP KG_CAP A 2002 4.860005892
Algeria MEATCONSUMP SHEEP KG_CAP A 2003 4.809936268
Algeria MEATCONSUMP SHEEP KG_CAP A 2004 5.155233921
Algeria MEATCONSUMP SHEEP KG_CAP A 2005 5.355168357
Algeria MEATCONSUMP SHEEP KG_CAP A 2006 5.277398851
Algeria MEATCONSUMP SHEEP KG_CAP A 2007 5.248106615
Algeria MEATCONSUMP SHEEP KG_CAP A 2008 4.867007769
Algeria MEATCONSUMP SHEEP KG_CAP A 2009 5.133157899
Algeria MEATCONSUMP SHEEP KG_CAP A 2010 5.273515789
Algeria MEATCONSUMP SHEEP KG_CAP A 2011 6.29662709
Algeria MEATCONSUMP SHEEP KG_CAP A 2012 6.443079313
Algeria MEATCONSUMP SHEEP KG_CAP A 2013 6.477833179
Algeria MEATCONSUMP SHEEP KG_CAP A 2014 6.682831631
Argentina MEATCONSUMP SHEEP KG_CAP A 1983 3.057197105
Argentina MEATCONSUMP SHEEP KG_CAP A 1984 3.104022028
Argentina MEATCONSUMP SHEEP KG_CAP A 1985 2.816774305
Argentina MEATCONSUMP SHEEP KG_CAP A 1986 2.81248779
Argentina MEATCONSUMP SHEEP KG_CAP A 1987 2.528632029
Argentina MEATCONSUMP SHEEP KG_CAP A 1988 2.340786089
Argentina MEATCONSUMP SHEEP KG_CAP A 1989 2.30722235
Argentina MEATCONSUMP SHEEP KG_CAP A 1990 2.271204452
Argentina MEATCONSUMP SHEEP KG_CAP A 1991 2.334759922
Argentina MEATCONSUMP SHEEP KG_CAP A 1992 1.885706559
Argentina MEATCONSUMP SHEEP KG_CAP A 1993 1.87369654
Argentina MEATCONSUMP SHEEP KG_CAP A 1994 2.386303803
Argentina MEATCONSUMP SHEEP KG_CAP A 1995 2.239261174
Argentina MEATCONSUMP SHEEP KG_CAP A 1996 1.792961473
Argentina MEATCONSUMP SHEEP KG_CAP A 1997 1.629924714
Argentina MEATCONSUMP SHEEP KG_CAP A 1998 1.417135329
Argentina MEATCONSUMP SHEEP KG_CAP A 1999 1.334184324
Argentina MEATCONSUMP SHEEP KG_CAP A 2000 1.410944836
Argentina MEATCONSUMP SHEEP KG_CAP A 2001 1.395242055
Argentina MEATCONSUMP SHEEP KG_CAP A 2002 1.354582094
Argentina MEATCONSUMP SHEEP KG_CAP A 2003 1.319499023
Argentina MEATCONSUMP SHEEP KG_CAP A 2004 1.270929609
Argentina MEATCONSUMP SHEEP KG_CAP A 2005 1.279606512
Argentina MEATCONSUMP SHEEP KG_CAP A 2006 1.229450454
Argentina MEATCONSUMP SHEEP KG_CAP A 2007 1.230767916
Argentina MEATCONSUMP SHEEP KG_CAP A 2008 1.157750391
Argentina MEATCONSUMP SHEEP KG_CAP A 2009 1.108593256
Argentina MEATCONSUMP SHEEP KG_CAP A 2010 1.103666961
Argentina MEATCONSUMP SHEEP KG_CAP A 2011 1.139355513
Argentina MEATCONSUMP SHEEP KG_CAP A 2012 1.220980718
Argentina MEATCONSUMP SHEEP KG_CAP A 2013 1.212519331
Argentina MEATCONSUMP SHEEP KG_CAP A 2014 1.223365579
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1983 0.322922593
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1984 0.381700141
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1985 0.495046664
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1986 0.516867813
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1987 0.539233
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1988 0.563070499
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1989 0.591430705
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1990 0.615998346
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1991 0.64558876
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1992 0.674219022
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1993 0.715745117
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1994 0.751945746
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1995 0.788717807
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1996 0.850306801
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1997 0.889789256
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1998 0.899673266
Bangladesh MEATCONSUMP SHEEP KG_CAP A 1999 0.877588974
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2000 0.874993947
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2001 0.863801179
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2002 0.898241002
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2003 0.95002142
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2004 1.019107757
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2005 1.060241561
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2006 1.007678384
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2007 1.03532749
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2008 1.067513141
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2009 1.103067681
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2010 1.137230254
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2011 1.170707697
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2012 1.162922696
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2013 1.153723251
Bangladesh MEATCONSUMP SHEEP KG_CAP A 2014 1.145937556
Brazil MEATCONSUMP SHEEP KG_CAP A 1985 0.505169505
Brazil MEATCONSUMP SHEEP KG_CAP A 1986 0.665255252
Brazil MEATCONSUMP SHEEP KG_CAP A 1987 0.595195186
Brazil MEATCONSUMP SHEEP KG_CAP A 1988 0.630306404
Brazil MEATCONSUMP SHEEP KG_CAP A 1989 0.655337485
Brazil MEATCONSUMP SHEEP KG_CAP A 1990 0.672055515
Brazil MEATCONSUMP SHEEP KG_CAP A 1991 0.669944571
Brazil MEATCONSUMP SHEEP KG_CAP A 1992 0.665843362
Brazil MEATCONSUMP SHEEP KG_CAP A 1993 0.679505362
Brazil MEATCONSUMP SHEEP KG_CAP A 1994 0.652302788
Brazil MEATCONSUMP SHEEP KG_CAP A 1995 0.697276017
Brazil MEATCONSUMP SHEEP KG_CAP A 1996 0.543706702
Brazil MEATCONSUMP SHEEP KG_CAP A 1997 0.565827092
Brazil MEATCONSUMP SHEEP KG_CAP A 1998 0.393078857
Brazil MEATCONSUMP SHEEP KG_CAP A 1999 0.393379217
Brazil MEATCONSUMP SHEEP KG_CAP A 2000 0.409688547
Brazil MEATCONSUMP SHEEP KG_CAP A 2001 0.377334312
Brazil MEATCONSUMP SHEEP KG_CAP A 2002 0.35158144
Brazil MEATCONSUMP SHEEP KG_CAP A 2003 0.348002089
Brazil MEATCONSUMP SHEEP KG_CAP A 2004 0.378126351
Brazil MEATCONSUMP SHEEP KG_CAP A 2005 0.380656417
Brazil MEATCONSUMP SHEEP KG_CAP A 2006 0.393034516
Brazil MEATCONSUMP SHEEP KG_CAP A 2007 0.420383751
Brazil MEATCONSUMP SHEEP KG_CAP A 2008 0.393158865
Brazil MEATCONSUMP SHEEP KG_CAP A 2009 0.418526761
Brazil MEATCONSUMP SHEEP KG_CAP A 2010 0.40815585
Brazil MEATCONSUMP SHEEP KG_CAP A 2011 0.402066925
Brazil MEATCONSUMP SHEEP KG_CAP A 2012 0.408121091
Brazil MEATCONSUMP SHEEP KG_CAP A 2013 0.41546214
Brazil MEATCONSUMP SHEEP KG_CAP A 2014 0.415025889
Chile MEATCONSUMP SHEEP KG_CAP A 1983 1.163689028
Chile MEATCONSUMP SHEEP KG_CAP A 1984 1.057452729
Chile MEATCONSUMP SHEEP KG_CAP A 1985 1.120771879
Chile MEATCONSUMP SHEEP KG_CAP A 1986 1.097936961
Chile MEATCONSUMP SHEEP KG_CAP A 1987 1.152195116
Chile MEATCONSUMP SHEEP KG_CAP A 1988 1.010105779
Chile MEATCONSUMP SHEEP KG_CAP A 1989 0.924877939
Chile MEATCONSUMP SHEEP KG_CAP A 1990 0.815607651
Chile MEATCONSUMP SHEEP KG_CAP A 1991 0.877193804
Chile MEATCONSUMP SHEEP KG_CAP A 1992 0.952108454
Chile MEATCONSUMP SHEEP KG_CAP A 1993 0.896649938
Chile MEATCONSUMP SHEEP KG_CAP A 1994 0.780136597
Chile MEATCONSUMP SHEEP KG_CAP A 1995 0.719545639
Chile MEATCONSUMP SHEEP KG_CAP A 1996 0.700362823
Chile MEATCONSUMP SHEEP KG_CAP A 1997 0.731360926
Chile MEATCONSUMP SHEEP KG_CAP A 1998 0.758030774
Chile MEATCONSUMP SHEEP KG_CAP A 1999 0.759050986
Chile MEATCONSUMP SHEEP KG_CAP A 2000 0.720848922
Chile MEATCONSUMP SHEEP KG_CAP A 2001 0.615312952
Chile MEATCONSUMP SHEEP KG_CAP A 2002 0.604712967
Chile MEATCONSUMP SHEEP KG_CAP A 2003 0.5308327
Chile MEATCONSUMP SHEEP KG_CAP A 2004 0.511246888
Chile MEATCONSUMP SHEEP KG_CAP A 2005 0.484867173
Chile MEATCONSUMP SHEEP KG_CAP A 2006 0.58035748
Chile MEATCONSUMP SHEEP KG_CAP A 2007 0.585258837
Chile MEATCONSUMP SHEEP KG_CAP A 2008 0.645660982
Chile MEATCONSUMP SHEEP KG_CAP A 2009 0.553526286
Chile MEATCONSUMP SHEEP KG_CAP A 2010 0.484767116
Chile MEATCONSUMP SHEEP KG_CAP A 2011 0.532133033
Chile MEATCONSUMP SHEEP KG_CAP A 2012 0.622579999
Chile MEATCONSUMP SHEEP KG_CAP A 2013 0.572004481
Chile MEATCONSUMP SHEEP KG_CAP A 2014 0.572576277
China MEATCONSUMP SHEEP KG_CAP A 1983 0.466906513
China MEATCONSUMP SHEEP KG_CAP A 1984 0.494698056
China MEATCONSUMP SHEEP KG_CAP A 1985 0.494552435
China MEATCONSUMP SHEEP KG_CAP A 1986 0.509416275
China MEATCONSUMP SHEEP KG_CAP A 1987 0.578183948
China MEATCONSUMP SHEEP KG_CAP A 1988 0.634809864
China MEATCONSUMP SHEEP KG_CAP A 1989 0.750334568
China MEATCONSUMP SHEEP KG_CAP A 1990 0.80417949
China MEATCONSUMP SHEEP KG_CAP A 1991 0.876089991
China MEATCONSUMP SHEEP KG_CAP A 1992 0.916352294
China MEATCONSUMP SHEEP KG_CAP A 1993 0.994676972
China MEATCONSUMP SHEEP KG_CAP A 1994 1.061738364
China MEATCONSUMP SHEEP KG_CAP A 1995 1.240964056
China MEATCONSUMP SHEEP KG_CAP A 1996 1.278004959
China MEATCONSUMP SHEEP KG_CAP A 1997 1.491664558
China MEATCONSUMP SHEEP KG_CAP A 1998 1.63613439
China MEATCONSUMP SHEEP KG_CAP A 1999 1.742130847
China MEATCONSUMP SHEEP KG_CAP A 2000 1.892484533
China MEATCONSUMP SHEEP KG_CAP A 2001 2.015357752
China MEATCONSUMP SHEEP KG_CAP A 2002 2.171857907
China MEATCONSUMP SHEEP KG_CAP A 2003 2.099727228
China MEATCONSUMP SHEEP KG_CAP A 2004 2.241614812
China MEATCONSUMP SHEEP KG_CAP A 2005 2.312973291
China MEATCONSUMP SHEEP KG_CAP A 2006 2.385241371
China MEATCONSUMP SHEEP KG_CAP A 2007 2.507053033
China MEATCONSUMP SHEEP KG_CAP A 2008 2.485316058
China MEATCONSUMP SHEEP KG_CAP A 2009 2.538949726
China MEATCONSUMP SHEEP KG_CAP A 2010 2.611445703
China MEATCONSUMP SHEEP KG_CAP A 2011 2.581388915
China MEATCONSUMP SHEEP KG_CAP A 2012 2.638533581
China MEATCONSUMP SHEEP KG_CAP A 2013 2.754201099
China MEATCONSUMP SHEEP KG_CAP A 2014 2.809543387
Colombia MEATCONSUMP SHEEP KG_CAP A 1983 0.397514177
Colombia MEATCONSUMP SHEEP KG_CAP A 1984 0.36995722
Colombia MEATCONSUMP SHEEP KG_CAP A 1985 0.368129785
Colombia MEATCONSUMP SHEEP KG_CAP A 1986 0.351309308
Colombia MEATCONSUMP SHEEP KG_CAP A 1987 0.347799225
Colombia MEATCONSUMP SHEEP KG_CAP A 1988 0.359518841
Colombia MEATCONSUMP SHEEP KG_CAP A 1989 0.327836581
Colombia MEATCONSUMP SHEEP KG_CAP A 1990 0.322204926
Colombia MEATCONSUMP SHEEP KG_CAP A 1991 0.298907395
Colombia MEATCONSUMP SHEEP KG_CAP A 1992 0.312988905
Colombia MEATCONSUMP SHEEP KG_CAP A 1993 0.327593853
Colombia MEATCONSUMP SHEEP KG_CAP A 1994 0.321398818
Colombia MEATCONSUMP SHEEP KG_CAP A 1995 0.319503479
Colombia MEATCONSUMP SHEEP KG_CAP A 1996 0.284801796
Colombia MEATCONSUMP SHEEP KG_CAP A 1997 0.302999925
Colombia MEATCONSUMP SHEEP KG_CAP A 1998 0.276152265
Colombia MEATCONSUMP SHEEP KG_CAP A 1999 0.264197386
Colombia MEATCONSUMP SHEEP KG_CAP A 2000 0.293910482
Colombia MEATCONSUMP SHEEP KG_CAP A 2001 0.281982298
Colombia MEATCONSUMP SHEEP KG_CAP A 2002 0.260205724
Colombia MEATCONSUMP SHEEP KG_CAP A 2003 0.292130287
Colombia MEATCONSUMP SHEEP KG_CAP A 2004 0.310031975
Colombia MEATCONSUMP SHEEP KG_CAP A 2005 0.338619871
Colombia MEATCONSUMP SHEEP KG_CAP A 2006 0.320498145
Colombia MEATCONSUMP SHEEP KG_CAP A 2007 0.363268489
Colombia MEATCONSUMP SHEEP KG_CAP A 2008 0.364001507
Colombia MEATCONSUMP SHEEP KG_CAP A 2009 0.268017375
Colombia MEATCONSUMP SHEEP KG_CAP A 2010 0.381140689
Colombia MEATCONSUMP SHEEP KG_CAP A 2011 0.481019549
Colombia MEATCONSUMP SHEEP KG_CAP A 2012 0.403382536
Colombia MEATCONSUMP SHEEP KG_CAP A 2013 0.392367709
Colombia MEATCONSUMP SHEEP KG_CAP A 2014 0.387663981
Egypt MEATCONSUMP SHEEP KG_CAP A 1983 1.294974284
Egypt MEATCONSUMP SHEEP KG_CAP A 1984 1.348443305
Egypt MEATCONSUMP SHEEP KG_CAP A 1985 1.401929799
Egypt MEATCONSUMP SHEEP KG_CAP A 1986 1.446821251
Egypt MEATCONSUMP SHEEP KG_CAP A 1987 1.457600068
Egypt MEATCONSUMP SHEEP KG_CAP A 1988 1.616279712
Egypt MEATCONSUMP SHEEP KG_CAP A 1989 1.388773163
Egypt MEATCONSUMP SHEEP KG_CAP A 1990 1.282909582
Egypt MEATCONSUMP SHEEP KG_CAP A 1991 1.130837143
Egypt MEATCONSUMP SHEEP KG_CAP A 1992 1.148729322
Egypt MEATCONSUMP SHEEP KG_CAP A 1993 1.196341784
Egypt MEATCONSUMP SHEEP KG_CAP A 1994 1.280581661
Egypt MEATCONSUMP SHEEP KG_CAP A 1995 1.307008989
Egypt MEATCONSUMP SHEEP KG_CAP A 1996 1.280762352
Egypt MEATCONSUMP SHEEP KG_CAP A 1997 1.308116799
Egypt MEATCONSUMP SHEEP KG_CAP A 1998 1.317171188
Egypt MEATCONSUMP SHEEP KG_CAP A 1999 1.09887126
Egypt MEATCONSUMP SHEEP KG_CAP A 2000 1.024388916
Egypt MEATCONSUMP SHEEP KG_CAP A 2001 1.044060495
Egypt MEATCONSUMP SHEEP KG_CAP A 2002 1.013952496
Egypt MEATCONSUMP SHEEP KG_CAP A 2003 0.897908761
Egypt MEATCONSUMP SHEEP KG_CAP A 2004 0.721455157
Egypt MEATCONSUMP SHEEP KG_CAP A 2005 1.073181242
Egypt MEATCONSUMP SHEEP KG_CAP A 2006 1.273866593
Egypt MEATCONSUMP SHEEP KG_CAP A 2007 1.523835664
Egypt MEATCONSUMP SHEEP KG_CAP A 2008 1.75925394
Egypt MEATCONSUMP SHEEP KG_CAP A 2009 1.671971464
Egypt MEATCONSUMP SHEEP KG_CAP A 2010 1.472711654
Egypt MEATCONSUMP SHEEP KG_CAP A 2011 1.417851677
Egypt MEATCONSUMP SHEEP KG_CAP A 2012 1.459507994
Egypt MEATCONSUMP SHEEP KG_CAP A 2013 1.441989735
Egypt MEATCONSUMP SHEEP KG_CAP A 2014 1.45372491
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1993 0.999554691
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1994 0.9647652
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1995 0.928411896
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1996 0.906080411
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1997 0.861176587
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1998 0.870531418
Ethiopia MEATCONSUMP SHEEP KG_CAP A 1999 0.842090394
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2000 0.805018342
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2001 0.856394528
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2002 0.998737368
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2003 1.042334736
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2004 1.205060297
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2005 1.264549705
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2006 1.441084156
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2007 1.586791933
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2008 1.471858364
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2009 1.496512433
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2010 1.440979288
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2011 1.361399644
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2012 1.346367624
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2013 1.332620266
Ethiopia MEATCONSUMP SHEEP KG_CAP A 2014 1.356547488
Ghana MEATCONSUMP SHEEP KG_CAP A 1983 0.736408894
Ghana MEATCONSUMP SHEEP KG_CAP A 1984 0.646634173
Ghana MEATCONSUMP SHEEP KG_CAP A 1985 0.647353904
Ghana MEATCONSUMP SHEEP KG_CAP A 1986 0.600314505
Ghana MEATCONSUMP SHEEP KG_CAP A 1987 0.652309084
Ghana MEATCONSUMP SHEEP KG_CAP A 1988 0.65813879
Ghana MEATCONSUMP SHEEP KG_CAP A 1989 0.724368037
Ghana MEATCONSUMP SHEEP KG_CAP A 1990 0.658318107
Ghana MEATCONSUMP SHEEP KG_CAP A 1991 0.654777842
Ghana MEATCONSUMP SHEEP KG_CAP A 1992 0.634286549
Ghana MEATCONSUMP SHEEP KG_CAP A 1993 0.614977066
Ghana MEATCONSUMP SHEEP KG_CAP A 1994 0.633644689
Ghana MEATCONSUMP SHEEP KG_CAP A 1995 0.611784524
Ghana MEATCONSUMP SHEEP KG_CAP A 1996 0.619388465
Ghana MEATCONSUMP SHEEP KG_CAP A 1997 0.672443117
Ghana MEATCONSUMP SHEEP KG_CAP A 1998 0.659787466
Ghana MEATCONSUMP SHEEP KG_CAP A 1999 0.706331632
Ghana MEATCONSUMP SHEEP KG_CAP A 2000 0.976869281
Ghana MEATCONSUMP SHEEP KG_CAP A 2001 0.954686215
Ghana MEATCONSUMP SHEEP KG_CAP A 2002 0.979399628
Ghana MEATCONSUMP SHEEP KG_CAP A 2003 1.085908822
Ghana MEATCONSUMP SHEEP KG_CAP A 2004 0.945632533
Ghana MEATCONSUMP SHEEP KG_CAP A 2005 0.918021025
Ghana MEATCONSUMP SHEEP KG_CAP A 2006 1.040335332
Ghana MEATCONSUMP SHEEP KG_CAP A 2007 1.215456001
Ghana MEATCONSUMP SHEEP KG_CAP A 2008 1.357161479
Ghana MEATCONSUMP SHEEP KG_CAP A 2009 1.501181965
Ghana MEATCONSUMP SHEEP KG_CAP A 2010 1.512568171
Ghana MEATCONSUMP SHEEP KG_CAP A 2011 1.567981877
Ghana MEATCONSUMP SHEEP KG_CAP A 2012 1.550910731
Ghana MEATCONSUMP SHEEP KG_CAP A 2013 1.492653881
Ghana MEATCONSUMP SHEEP KG_CAP A 2014 1.627044851
Haiti MEATCONSUMP SHEEP KG_CAP A 1983 0.550571911
Haiti MEATCONSUMP SHEEP KG_CAP A 1984 0.562241795
Haiti MEATCONSUMP SHEEP KG_CAP A 1985 0.55094694
Haiti MEATCONSUMP SHEEP KG_CAP A 1986 0.540067371
Haiti MEATCONSUMP SHEEP KG_CAP A 1987 0.531136766
Haiti MEATCONSUMP SHEEP KG_CAP A 1988 0.521213893
Haiti MEATCONSUMP SHEEP KG_CAP A 1989 0.511701388
Haiti MEATCONSUMP SHEEP KG_CAP A 1990 0.502503509
Haiti MEATCONSUMP SHEEP KG_CAP A 1991 0.493066857
Haiti MEATCONSUMP SHEEP KG_CAP A 1992 0.486972948
Haiti MEATCONSUMP SHEEP KG_CAP A 1993 0.478780652
Haiti MEATCONSUMP SHEEP KG_CAP A 1994 0.0000103
Haiti MEATCONSUMP SHEEP KG_CAP A 1995 1.153039127
Haiti MEATCONSUMP SHEEP KG_CAP A 1996 0.495805684
Haiti MEATCONSUMP SHEEP KG_CAP A 1997 0.567846608
Haiti MEATCONSUMP SHEEP KG_CAP A 1998 0.639546339
Haiti MEATCONSUMP SHEEP KG_CAP A 1999 0.626111704
Haiti MEATCONSUMP SHEEP KG_CAP A 2000 0.738633695
Haiti MEATCONSUMP SHEEP KG_CAP A 2001 0.731651376
Haiti MEATCONSUMP SHEEP KG_CAP A 2002 0.724559827
Haiti MEATCONSUMP SHEEP KG_CAP A 2003 0.714877732
Haiti MEATCONSUMP SHEEP KG_CAP A 2004 0.654160006
Haiti MEATCONSUMP SHEEP KG_CAP A 2005 0.650703027
Haiti MEATCONSUMP SHEEP KG_CAP A 2006 0.624867499
Haiti MEATCONSUMP SHEEP KG_CAP A 2007 0.702493265
Haiti MEATCONSUMP SHEEP KG_CAP A 2008 0.746686104
Haiti MEATCONSUMP SHEEP KG_CAP A 2009 0.660915595
Haiti MEATCONSUMP SHEEP KG_CAP A 2010 0.568221604
Haiti MEATCONSUMP SHEEP KG_CAP A 2011 0.564409513
Haiti MEATCONSUMP SHEEP KG_CAP A 2012 0.562036644
Haiti MEATCONSUMP SHEEP KG_CAP A 2013 0.562033232
Haiti MEATCONSUMP SHEEP KG_CAP A 2014 0.568656961
India MEATCONSUMP SHEEP KG_CAP A 1983 0.594802931
India MEATCONSUMP SHEEP KG_CAP A 1984 0.589625431
India MEATCONSUMP SHEEP KG_CAP A 1985 0.586940144
India MEATCONSUMP SHEEP KG_CAP A 1986 0.587872719
India MEATCONSUMP SHEEP KG_CAP A 1987 0.627969815
India MEATCONSUMP SHEEP KG_CAP A 1988 0.623573502
India MEATCONSUMP SHEEP KG_CAP A 1989 0.616445043
India MEATCONSUMP SHEEP KG_CAP A 1990 0.610581061
India MEATCONSUMP SHEEP KG_CAP A 1991 0.606800175
India MEATCONSUMP SHEEP KG_CAP A 1992 0.602775134
India MEATCONSUMP SHEEP KG_CAP A 1993 0.596321685
India MEATCONSUMP SHEEP KG_CAP A 1994 0.587008677
India MEATCONSUMP SHEEP KG_CAP A 1995 0.602721017
India MEATCONSUMP SHEEP KG_CAP A 1996 0.599653176
India MEATCONSUMP SHEEP KG_CAP A 1997 0.597883003
India MEATCONSUMP SHEEP KG_CAP A 1998 0.592882248
India MEATCONSUMP SHEEP KG_CAP A 1999 0.585178102
India MEATCONSUMP SHEEP KG_CAP A 2000 0.577770058
India MEATCONSUMP SHEEP KG_CAP A 2001 0.578009278
India MEATCONSUMP SHEEP KG_CAP A 2002 0.586513251
India MEATCONSUMP SHEEP KG_CAP A 2003 0.552104871
India MEATCONSUMP SHEEP KG_CAP A 2004 0.551259257
India MEATCONSUMP SHEEP KG_CAP A 2005 0.547469247
India MEATCONSUMP SHEEP KG_CAP A 2006 0.590151656
India MEATCONSUMP SHEEP KG_CAP A 2007 0.601120246
India MEATCONSUMP SHEEP KG_CAP A 2008 0.604032272
India MEATCONSUMP SHEEP KG_CAP A 2009 0.581652257
India MEATCONSUMP SHEEP KG_CAP A 2010 0.628755881
India MEATCONSUMP SHEEP KG_CAP A 2011 0.63374829
India MEATCONSUMP SHEEP KG_CAP A 2012 0.629623141
India MEATCONSUMP SHEEP KG_CAP A 2013 0.622079886
India MEATCONSUMP SHEEP KG_CAP A 2014 0.623775155
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1983 0.503358025
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1984 0.426835273
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1985 0.430327937
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1986 0.496959662
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1987 0.480097963
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1988 0.497098795
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1989 0.477718009
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1990 0.44468199
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1991 0.458593294
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1992 0.474370659
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1993 0.523120732
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1994 0.460525627
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1995 0.430771781
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1996 0.443531219
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1997 0.474486966
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1998 0.355605125
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 1999 0.334178406
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2000 0.332127544
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2001 0.390567734
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2002 0.519975804
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2003 0.584763964
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2004 0.491930529
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2005 0.462279848
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2006 0.544528388
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2007 0.461147243
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2008 0.427345272
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2009 0.477726874
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2010 0.418606283
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2011 0.411943484
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2012 0.414465632
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2013 0.413328424
Indiaonesia MEATCONSUMP SHEEP KG_CAP A 2014 0.413246211
Iran MEATCONSUMP SHEEP KG_CAP A 1983 7.446897841
Iran MEATCONSUMP SHEEP KG_CAP A 1984 7.399420766
Iran MEATCONSUMP SHEEP KG_CAP A 1985 7.319316419
Iran MEATCONSUMP SHEEP KG_CAP A 1986 6.951412692
Iran MEATCONSUMP SHEEP KG_CAP A 1987 6.78275378
Iran MEATCONSUMP SHEEP KG_CAP A 1988 5.707158295
Iran MEATCONSUMP SHEEP KG_CAP A 1989 5.858314367
Iran MEATCONSUMP SHEEP KG_CAP A 1990 5.503706743
Iran MEATCONSUMP SHEEP KG_CAP A 1991 6.262526438
Iran MEATCONSUMP SHEEP KG_CAP A 1992 6.200160258
Iran MEATCONSUMP SHEEP KG_CAP A 1993 5.827853905
Iran MEATCONSUMP SHEEP KG_CAP A 1994 5.649060883
Iran MEATCONSUMP SHEEP KG_CAP A 1995 5.573855914
Iran MEATCONSUMP SHEEP KG_CAP A 1996 5.878744327
Iran MEATCONSUMP SHEEP KG_CAP A 1997 5.867321993
Iran MEATCONSUMP SHEEP KG_CAP A 1998 6.063316398
Iran MEATCONSUMP SHEEP KG_CAP A 1999 5.415109076
Iran MEATCONSUMP SHEEP KG_CAP A 2000 5.822948593
Iran MEATCONSUMP SHEEP KG_CAP A 2001 5.842923425
Iran MEATCONSUMP SHEEP KG_CAP A 2002 5.84317139
Iran MEATCONSUMP SHEEP KG_CAP A 2003 5.351793843
Iran MEATCONSUMP SHEEP KG_CAP A 2004 5.422110698
Iran MEATCONSUMP SHEEP KG_CAP A 2005 5.519443494
Iran MEATCONSUMP SHEEP KG_CAP A 2006 4.898526492
Iran MEATCONSUMP SHEEP KG_CAP A 2007 4.242243686
Iran MEATCONSUMP SHEEP KG_CAP A 2008 3.666106526
Iran MEATCONSUMP SHEEP KG_CAP A 2009 3.005913815
Iran MEATCONSUMP SHEEP KG_CAP A 2010 2.799685322
Iran MEATCONSUMP SHEEP KG_CAP A 2011 3.003355697
Iran MEATCONSUMP SHEEP KG_CAP A 2012 3.219303885
Iran MEATCONSUMP SHEEP KG_CAP A 2013 3.344128466
Iran MEATCONSUMP SHEEP KG_CAP A 2014 3.394710925
Israel MEATCONSUMP SHEEP KG_CAP A 1983 0.913417807
Israel MEATCONSUMP SHEEP KG_CAP A 1984 0.898406354
Israel MEATCONSUMP SHEEP KG_CAP A 1985 0.905216711
Israel MEATCONSUMP SHEEP KG_CAP A 1986 0.98626177
Israel MEATCONSUMP SHEEP KG_CAP A 1987 1.121916509
Israel MEATCONSUMP SHEEP KG_CAP A 1988 1.292006564
Israel MEATCONSUMP SHEEP KG_CAP A 1989 1.194615522
Israel MEATCONSUMP SHEEP KG_CAP A 1990 1.173594132
Israel MEATCONSUMP SHEEP KG_CAP A 1991 1.137440758
Israel MEATCONSUMP SHEEP KG_CAP A 1992 1.098398169
Israel MEATCONSUMP SHEEP KG_CAP A 1993 1.24022462
Israel MEATCONSUMP SHEEP KG_CAP A 1994 1.237165161
Israel MEATCONSUMP SHEEP KG_CAP A 1995 1.271628103
Israel MEATCONSUMP SHEEP KG_CAP A 1996 1.202245901
Israel MEATCONSUMP SHEEP KG_CAP A 1997 1.070678616
Israel MEATCONSUMP SHEEP KG_CAP A 1998 1.160291643
Israel MEATCONSUMP SHEEP KG_CAP A 1999 1.233868836
Israel MEATCONSUMP SHEEP KG_CAP A 2000 1.299717862
Israel MEATCONSUMP SHEEP KG_CAP A 2001 1.292137134
Israel MEATCONSUMP SHEEP KG_CAP A 2002 1.140221316
Israel MEATCONSUMP SHEEP KG_CAP A 2003 1.1756309
Israel MEATCONSUMP SHEEP KG_CAP A 2004 1.111156438
Israel MEATCONSUMP SHEEP KG_CAP A 2005 1.246432519
Israel MEATCONSUMP SHEEP KG_CAP A 2006 1.385163478
Israel MEATCONSUMP SHEEP KG_CAP A 2007 1.381956918
Israel MEATCONSUMP SHEEP KG_CAP A 2008 1.458359505
Israel MEATCONSUMP SHEEP KG_CAP A 2009 1.524443355
Israel MEATCONSUMP SHEEP KG_CAP A 2010 1.618145596
Israel MEATCONSUMP SHEEP KG_CAP A 2011 1.835481446
Israel MEATCONSUMP SHEEP KG_CAP A 2012 1.792799612
Israel MEATCONSUMP SHEEP KG_CAP A 2013 1.769548853
Israel MEATCONSUMP SHEEP KG_CAP A 2014 1.881605913
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1992 12.75370723
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1993 14.54513935
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1994 13.39750386
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1995 10.86989605
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1996 9.50619285
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1997 8.533537924
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1998 7.058834251
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 1999 5.929929437
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2000 5.752541451
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2001 5.872892491
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2002 6.115406941
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2003 5.732047875
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2004 6.003210518
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2005 6.237280669
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2006 6.655735159
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2007 7.068631139
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2008 7.420303329
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2009 7.548414866
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2010 7.886394057
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2011 8.154950525
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2012 8.072944375
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2013 7.908112291
Kazakhstan MEATCONSUMP SHEEP KG_CAP A 2014 7.761666282
Malaysia MEATCONSUMP SHEEP KG_CAP A 1983 0.324101993
Malaysia MEATCONSUMP SHEEP KG_CAP A 1984 0.359222272
Malaysia MEATCONSUMP SHEEP KG_CAP A 1985 0.361156725
Malaysia MEATCONSUMP SHEEP KG_CAP A 1986 0.35447585
Malaysia MEATCONSUMP SHEEP KG_CAP A 1987 0.358501501
Malaysia MEATCONSUMP SHEEP KG_CAP A 1988 0.360274111
Malaysia MEATCONSUMP SHEEP KG_CAP A 1989 0.338747577
Malaysia MEATCONSUMP SHEEP KG_CAP A 1990 0.366968848
Malaysia MEATCONSUMP SHEEP KG_CAP A 1991 0.365320407
Malaysia MEATCONSUMP SHEEP KG_CAP A 1992 0.432554003
Malaysia MEATCONSUMP SHEEP KG_CAP A 1993 0.412929541
Malaysia MEATCONSUMP SHEEP KG_CAP A 1994 0.39420795
Malaysia MEATCONSUMP SHEEP KG_CAP A 1995 0.518053128
Malaysia MEATCONSUMP SHEEP KG_CAP A 1996 0.614348454
Malaysia MEATCONSUMP SHEEP KG_CAP A 1997 0.534592522
Malaysia MEATCONSUMP SHEEP KG_CAP A 1998 0.527113919
Malaysia MEATCONSUMP SHEEP KG_CAP A 1999 0.546656571
Malaysia MEATCONSUMP SHEEP KG_CAP A 2000 0.539047269
Malaysia MEATCONSUMP SHEEP KG_CAP A 2001 0.615661635
Malaysia MEATCONSUMP SHEEP KG_CAP A 2002 0.549973667
Malaysia MEATCONSUMP SHEEP KG_CAP A 2003 0.45535821
Malaysia MEATCONSUMP SHEEP KG_CAP A 2004 0.535979512
Malaysia MEATCONSUMP SHEEP KG_CAP A 2005 0.542410707
Malaysia MEATCONSUMP SHEEP KG_CAP A 2006 0.597047924
Malaysia MEATCONSUMP SHEEP KG_CAP A 2007 0.650331957
Malaysia MEATCONSUMP SHEEP KG_CAP A 2008 0.642739726
Malaysia MEATCONSUMP SHEEP KG_CAP A 2009 0.642821135
Malaysia MEATCONSUMP SHEEP KG_CAP A 2010 0.747421158
Malaysia MEATCONSUMP SHEEP KG_CAP A 2011 0.614460845
Malaysia MEATCONSUMP SHEEP KG_CAP A 2012 0.676041077
Malaysia MEATCONSUMP SHEEP KG_CAP A 2013 0.812009274
Malaysia MEATCONSUMP SHEEP KG_CAP A 2014 1.00467736
Mozambique MEATCONSUMP SHEEP KG_CAP A 1983 0.150499439
Mozambique MEATCONSUMP SHEEP KG_CAP A 1984 0.159187941
Mozambique MEATCONSUMP SHEEP KG_CAP A 1985 0.220082463
Mozambique MEATCONSUMP SHEEP KG_CAP A 1986 0.314647158
Mozambique MEATCONSUMP SHEEP KG_CAP A 1987 0.490299822
Mozambique MEATCONSUMP SHEEP KG_CAP A 1988 0.586974324
Mozambique MEATCONSUMP SHEEP KG_CAP A 1989 0.680349381
Mozambique MEATCONSUMP SHEEP KG_CAP A 1990 0.84056604
Mozambique MEATCONSUMP SHEEP KG_CAP A 1991 0.921168829
Mozambique MEATCONSUMP SHEEP KG_CAP A 1992 0.891896844
Mozambique MEATCONSUMP SHEEP KG_CAP A 1993 0.916811913
Mozambique MEATCONSUMP SHEEP KG_CAP A 1994 0.964224377
Mozambique MEATCONSUMP SHEEP KG_CAP A 1995 0.999043875
Mozambique MEATCONSUMP SHEEP KG_CAP A 1996 1.066391342
Mozambique MEATCONSUMP SHEEP KG_CAP A 1997 1.100637311
Mozambique MEATCONSUMP SHEEP KG_CAP A 1998 1.195310973
Mozambique MEATCONSUMP SHEEP KG_CAP A 1999 1.206823285
Mozambique MEATCONSUMP SHEEP KG_CAP A 2000 1.22206168
Mozambique MEATCONSUMP SHEEP KG_CAP A 2001 1.219520938
Mozambique MEATCONSUMP SHEEP KG_CAP A 2002 1.159900571
Mozambique MEATCONSUMP SHEEP KG_CAP A 2003 1.078601108
Mozambique MEATCONSUMP SHEEP KG_CAP A 2004 1.060314058
Mozambique MEATCONSUMP SHEEP KG_CAP A 2005 1.054031372
Mozambique MEATCONSUMP SHEEP KG_CAP A 2006 0.884765824
Mozambique MEATCONSUMP SHEEP KG_CAP A 2007 0.901310779
Mozambique MEATCONSUMP SHEEP KG_CAP A 2008 0.962421491
Mozambique MEATCONSUMP SHEEP KG_CAP A 2009 0.758813421
Mozambique MEATCONSUMP SHEEP KG_CAP A 2010 0.743702607
Mozambique MEATCONSUMP SHEEP KG_CAP A 2011 0.741450775
Mozambique MEATCONSUMP SHEEP KG_CAP A 2012 0.790366259
Mozambique MEATCONSUMP SHEEP KG_CAP A 2013 0.81997677
Mozambique MEATCONSUMP SHEEP KG_CAP A 2014 0.814012775
Nigeria MEATCONSUMP SHEEP KG_CAP A 1983 1.208978272
Nigeria MEATCONSUMP SHEEP KG_CAP A 1984 1.261215653
Nigeria MEATCONSUMP SHEEP KG_CAP A 1985 1.299829718
Nigeria MEATCONSUMP SHEEP KG_CAP A 1986 1.394420585
Nigeria MEATCONSUMP SHEEP KG_CAP A 1987 1.419735999
Nigeria MEATCONSUMP SHEEP KG_CAP A 1988 1.455622973
Nigeria MEATCONSUMP SHEEP KG_CAP A 1989 1.534190993
Nigeria MEATCONSUMP SHEEP KG_CAP A 1990 1.515336332
Nigeria MEATCONSUMP SHEEP KG_CAP A 1991 1.529665021
Nigeria MEATCONSUMP SHEEP KG_CAP A 1992 1.523325152
Nigeria MEATCONSUMP SHEEP KG_CAP A 1993 1.545556245
Nigeria MEATCONSUMP SHEEP KG_CAP A 1994 1.711495293
Nigeria MEATCONSUMP SHEEP KG_CAP A 1995 1.803640898
Nigeria MEATCONSUMP SHEEP KG_CAP A 1996 1.886364642
Nigeria MEATCONSUMP SHEEP KG_CAP A 1997 2.081011964
Nigeria MEATCONSUMP SHEEP KG_CAP A 1998 2.182888158
Nigeria MEATCONSUMP SHEEP KG_CAP A 1999 2.29114875
Nigeria MEATCONSUMP SHEEP KG_CAP A 2000 2.411051406
Nigeria MEATCONSUMP SHEEP KG_CAP A 2001 2.559140855
Nigeria MEATCONSUMP SHEEP KG_CAP A 2002 2.535189293
Nigeria MEATCONSUMP SHEEP KG_CAP A 2003 2.501888088
Nigeria MEATCONSUMP SHEEP KG_CAP A 2004 2.49895884
Nigeria MEATCONSUMP SHEEP KG_CAP A 2005 2.48426919
Nigeria MEATCONSUMP SHEEP KG_CAP A 2006 2.491526584
Nigeria MEATCONSUMP SHEEP KG_CAP A 2007 2.483535225
Nigeria MEATCONSUMP SHEEP KG_CAP A 2008 2.460726455
Nigeria MEATCONSUMP SHEEP KG_CAP A 2009 2.453115481
Nigeria MEATCONSUMP SHEEP KG_CAP A 2010 2.524872449
Nigeria MEATCONSUMP SHEEP KG_CAP A 2011 2.485440896
Nigeria MEATCONSUMP SHEEP KG_CAP A 2012 2.445114604
Nigeria MEATCONSUMP SHEEP KG_CAP A 2013 2.407817104
Nigeria MEATCONSUMP SHEEP KG_CAP A 2014 2.370286776
Pakistan MEATCONSUMP SHEEP KG_CAP A 1983 3.169220001
Pakistan MEATCONSUMP SHEEP KG_CAP A 1984 3.274254044
Pakistan MEATCONSUMP SHEEP KG_CAP A 1985 3.387986407
Pakistan MEATCONSUMP SHEEP KG_CAP A 1986 3.313537011
Pakistan MEATCONSUMP SHEEP KG_CAP A 1987 3.432137285
Pakistan MEATCONSUMP SHEEP KG_CAP A 1988 3.559278277
Pakistan MEATCONSUMP SHEEP KG_CAP A 1989 3.695519397
Pakistan MEATCONSUMP SHEEP KG_CAP A 1990 3.833855979
Pakistan MEATCONSUMP SHEEP KG_CAP A 1991 3.998238539
Pakistan MEATCONSUMP SHEEP KG_CAP A 1992 4.171077812
Pakistan MEATCONSUMP SHEEP KG_CAP A 1993 4.349995433
Pakistan MEATCONSUMP SHEEP KG_CAP A 1994 4.540286037
Pakistan MEATCONSUMP SHEEP KG_CAP A 1995 4.745012201
Pakistan MEATCONSUMP SHEEP KG_CAP A 1996 2.932512354
Pakistan MEATCONSUMP SHEEP KG_CAP A 1997 2.858806129
Pakistan MEATCONSUMP SHEEP KG_CAP A 1998 2.854714846
Pakistan MEATCONSUMP SHEEP KG_CAP A 1999 2.849922288
Pakistan MEATCONSUMP SHEEP KG_CAP A 2000 2.837079033
Pakistan MEATCONSUMP SHEEP KG_CAP A 2001 2.867968101
Pakistan MEATCONSUMP SHEEP KG_CAP A 2002 2.887679603
Pakistan MEATCONSUMP SHEEP KG_CAP A 2003 2.895229907
Pakistan MEATCONSUMP SHEEP KG_CAP A 2004 2.911246984
Pakistan MEATCONSUMP SHEEP KG_CAP A 2005 2.934308169
Pakistan MEATCONSUMP SHEEP KG_CAP A 2006 2.149564587
Pakistan MEATCONSUMP SHEEP KG_CAP A 2007 2.152228242
Pakistan MEATCONSUMP SHEEP KG_CAP A 2008 2.162330439
Pakistan MEATCONSUMP SHEEP KG_CAP A 2009 2.15461195
Pakistan MEATCONSUMP SHEEP KG_CAP A 2010 2.143645055
Pakistan MEATCONSUMP SHEEP KG_CAP A 2011 2.134871346
Pakistan MEATCONSUMP SHEEP KG_CAP A 2012 2.125748556
Pakistan MEATCONSUMP SHEEP KG_CAP A 2013 2.146862528
Pakistan MEATCONSUMP SHEEP KG_CAP A 2014 2.10565846
Paraguay MEATCONSUMP SHEEP KG_CAP A 1983 0.737380517
Paraguay MEATCONSUMP SHEEP KG_CAP A 1984 0.741330885
Paraguay MEATCONSUMP SHEEP KG_CAP A 1985 0.7464439
Paraguay MEATCONSUMP SHEEP KG_CAP A 1986 0.72909998
Paraguay MEATCONSUMP SHEEP KG_CAP A 1987 0.728011423
Paraguay MEATCONSUMP SHEEP KG_CAP A 1988 0.72248242
Paraguay MEATCONSUMP SHEEP KG_CAP A 1989 0.716086998
Paraguay MEATCONSUMP SHEEP KG_CAP A 1990 0.708399972
Paraguay MEATCONSUMP SHEEP KG_CAP A 1991 0.672653028
Paraguay MEATCONSUMP SHEEP KG_CAP A 1992 0.637312078
Paraguay MEATCONSUMP SHEEP KG_CAP A 1993 0.62864192
Paraguay MEATCONSUMP SHEEP KG_CAP A 1994 0.620784451
Paraguay MEATCONSUMP SHEEP KG_CAP A 1995 0.575181333
Paraguay MEATCONSUMP SHEEP KG_CAP A 1996 0.561005401
Paraguay MEATCONSUMP SHEEP KG_CAP A 1997 0.557758052
Paraguay MEATCONSUMP SHEEP KG_CAP A 1998 0.580978375
Paraguay MEATCONSUMP SHEEP KG_CAP A 1999 0.577274981
Paraguay MEATCONSUMP SHEEP KG_CAP A 2000 0.536867448
Paraguay MEATCONSUMP SHEEP KG_CAP A 2001 0.523296256
Paraguay MEATCONSUMP SHEEP KG_CAP A 2002 0.517005924
Paraguay MEATCONSUMP SHEEP KG_CAP A 2003 0.500865887
Paraguay MEATCONSUMP SHEEP KG_CAP A 2004 0.59214899
Paraguay MEATCONSUMP SHEEP KG_CAP A 2005 0.525406518
Paraguay MEATCONSUMP SHEEP KG_CAP A 2006 0.497862029
Paraguay MEATCONSUMP SHEEP KG_CAP A 2007 0.471954411
Paraguay MEATCONSUMP SHEEP KG_CAP A 2008 0.451571493
Paraguay MEATCONSUMP SHEEP KG_CAP A 2009 0.476256491
Paraguay MEATCONSUMP SHEEP KG_CAP A 2010 0.489040236
Paraguay MEATCONSUMP SHEEP KG_CAP A 2011 0.491343385
Paraguay MEATCONSUMP SHEEP KG_CAP A 2012 0.494152818
Paraguay MEATCONSUMP SHEEP KG_CAP A 2013 0.491620106
Paraguay MEATCONSUMP SHEEP KG_CAP A 2014 0.49609715
Peru MEATCONSUMP SHEEP KG_CAP A 1983 1.543831267
Peru MEATCONSUMP SHEEP KG_CAP A 1984 1.246140161
Peru MEATCONSUMP SHEEP KG_CAP A 1985 1.410655105
Peru MEATCONSUMP SHEEP KG_CAP A 1986 2.24227113
Peru MEATCONSUMP SHEEP KG_CAP A 1987 2.444469274
Peru MEATCONSUMP SHEEP KG_CAP A 1988 1.771504157
Peru MEATCONSUMP SHEEP KG_CAP A 1989 1.196661352
Peru MEATCONSUMP SHEEP KG_CAP A 1990 1.423711123
Peru MEATCONSUMP SHEEP KG_CAP A 1991 1.158183045
Peru MEATCONSUMP SHEEP KG_CAP A 1992 1.10957356
Peru MEATCONSUMP SHEEP KG_CAP A 1993 1.026053254
Peru MEATCONSUMP SHEEP KG_CAP A 1994 0.970800109
Peru MEATCONSUMP SHEEP KG_CAP A 1995 0.976197874
Peru MEATCONSUMP SHEEP KG_CAP A 1996 0.975234398
Peru MEATCONSUMP SHEEP KG_CAP A 1997 1.000229103
Peru MEATCONSUMP SHEEP KG_CAP A 1998 1.012728215
Peru MEATCONSUMP SHEEP KG_CAP A 1999 1.268233154
Peru MEATCONSUMP SHEEP KG_CAP A 2000 1.295320341
Peru MEATCONSUMP SHEEP KG_CAP A 2001 1.286995285
Peru MEATCONSUMP SHEEP KG_CAP A 2002 1.241083467
Peru MEATCONSUMP SHEEP KG_CAP A 2003 1.246133106
Peru MEATCONSUMP SHEEP KG_CAP A 2004 1.297390278
Peru MEATCONSUMP SHEEP KG_CAP A 2005 1.284461383
Peru MEATCONSUMP SHEEP KG_CAP A 2006 1.280396699
Peru MEATCONSUMP SHEEP KG_CAP A 2007 1.258709317
Peru MEATCONSUMP SHEEP KG_CAP A 2008 1.224179491
Peru MEATCONSUMP SHEEP KG_CAP A 2009 1.205156563
Peru MEATCONSUMP SHEEP KG_CAP A 2010 1.196989967
Peru MEATCONSUMP SHEEP KG_CAP A 2011 1.230630432
Peru MEATCONSUMP SHEEP KG_CAP A 2012 1.249451848
Peru MEATCONSUMP SHEEP KG_CAP A 2013 1.260347655
Peru MEATCONSUMP SHEEP KG_CAP A 2014 1.277912252
Philippines MEATCONSUMP SHEEP KG_CAP A 1983 0.293913293
Philippines MEATCONSUMP SHEEP KG_CAP A 1984 0.276765851
Philippines MEATCONSUMP SHEEP KG_CAP A 1985 0.302673183
Philippines MEATCONSUMP SHEEP KG_CAP A 1986 0.306308341
Philippines MEATCONSUMP SHEEP KG_CAP A 1987 0.309393173
Philippines MEATCONSUMP SHEEP KG_CAP A 1988 0.378431378
Philippines MEATCONSUMP SHEEP KG_CAP A 1989 0.394359872
Philippines MEATCONSUMP SHEEP KG_CAP A 1990 0.386196382
Philippines MEATCONSUMP SHEEP KG_CAP A 1991 0.347099376
Philippines MEATCONSUMP SHEEP KG_CAP A 1992 0.360801903
Philippines MEATCONSUMP SHEEP KG_CAP A 1993 0.378355036
Philippines MEATCONSUMP SHEEP KG_CAP A 1994 0.391240693
Philippines MEATCONSUMP SHEEP KG_CAP A 1995 0.389498773
Philippines MEATCONSUMP SHEEP KG_CAP A 1996 0.37919563
Philippines MEATCONSUMP SHEEP KG_CAP A 1997 0.375390306
Philippines MEATCONSUMP SHEEP KG_CAP A 1998 0.373075971
Philippines MEATCONSUMP SHEEP KG_CAP A 1999 0.389723483
Philippines MEATCONSUMP SHEEP KG_CAP A 2000 0.388138249
Philippines MEATCONSUMP SHEEP KG_CAP A 2001 0.378852422
Philippines MEATCONSUMP SHEEP KG_CAP A 2002 0.370830859
Philippines MEATCONSUMP SHEEP KG_CAP A 2003 0.357591961
Philippines MEATCONSUMP SHEEP KG_CAP A 2004 0.355849986
Philippines MEATCONSUMP SHEEP KG_CAP A 2005 0.375507176
Philippines MEATCONSUMP SHEEP KG_CAP A 2006 0.458567649
Philippines MEATCONSUMP SHEEP KG_CAP A 2007 0.496427386
Philippines MEATCONSUMP SHEEP KG_CAP A 2008 0.523163415
Philippines MEATCONSUMP SHEEP KG_CAP A 2009 0.527064404
Philippines MEATCONSUMP SHEEP KG_CAP A 2010 0.52824025
Philippines MEATCONSUMP SHEEP KG_CAP A 2011 0.51245684
Philippines MEATCONSUMP SHEEP KG_CAP A 2012 0.488705063
Philippines MEATCONSUMP SHEEP KG_CAP A 2013 0.508981435
Philippines MEATCONSUMP SHEEP KG_CAP A 2014 0.519747432
Russia MEATCONSUMP SHEEP KG_CAP A 1992 2.060257916
Russia MEATCONSUMP SHEEP KG_CAP A 1993 2.198831171
Russia MEATCONSUMP SHEEP KG_CAP A 1994 1.877106484
Russia MEATCONSUMP SHEEP KG_CAP A 1995 1.726006825
Russia MEATCONSUMP SHEEP KG_CAP A 1996 1.415457562
Russia MEATCONSUMP SHEEP KG_CAP A 1997 1.289591737
Russia MEATCONSUMP SHEEP KG_CAP A 1998 1.139506843
Russia MEATCONSUMP SHEEP KG_CAP A 1999 0.873612083
Russia MEATCONSUMP SHEEP KG_CAP A 2000 0.851993986
Russia MEATCONSUMP SHEEP KG_CAP A 2001 0.816347475
Russia MEATCONSUMP SHEEP KG_CAP A 2002 0.822448291
Russia MEATCONSUMP SHEEP KG_CAP A 2003 0.757263484
Russia MEATCONSUMP SHEEP KG_CAP A 2004 0.797209244
Russia MEATCONSUMP SHEEP KG_CAP A 2005 0.947416369
Russia MEATCONSUMP SHEEP KG_CAP A 2006 1.033823945
Russia MEATCONSUMP SHEEP KG_CAP A 2007 1.095052287
Russia MEATCONSUMP SHEEP KG_CAP A 2008 1.162307521
Russia MEATCONSUMP SHEEP KG_CAP A 2009 1.131204711
Russia MEATCONSUMP SHEEP KG_CAP A 2010 1.181827395
Russia MEATCONSUMP SHEEP KG_CAP A 2011 1.200080188
Russia MEATCONSUMP SHEEP KG_CAP A 2012 1.245803955
Russia MEATCONSUMP SHEEP KG_CAP A 2013 1.233223139
Russia MEATCONSUMP SHEEP KG_CAP A 2014 1.214140829
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1983 11.29400694
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1984 10.63959483
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1985 9.319897678
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1986 8.423085213
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1987 7.694288203
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1988 6.464623978
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1989 5.633853897
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1990 5.70875951
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1991 5.759163696
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1992 5.967943476
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1993 7.70645487
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1994 6.486032545
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1995 7.19565071
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1996 6.965486886
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1997 6.816490273
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1998 6.44869398
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 1999 6.561541343
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2000 6.777541111
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2001 5.981826855
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2002 5.747647413
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2003 5.418592627
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2004 5.338767827
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2005 5.603600219
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2006 5.118476955
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2007 5.352699785
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2008 4.6212516
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2009 4.369882668
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2010 5.025181559
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2011 5.474594003
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2012 5.489205408
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2013 5.48671414
Saudi Arabia MEATCONSUMP SHEEP KG_CAP A 2014 5.741858144
South Africa MEATCONSUMP SHEEP KG_CAP A 1983 4.578577838
South Africa MEATCONSUMP SHEEP KG_CAP A 1984 4.477493767
South Africa MEATCONSUMP SHEEP KG_CAP A 1985 4.421824622
South Africa MEATCONSUMP SHEEP KG_CAP A 1986 3.680801805
South Africa MEATCONSUMP SHEEP KG_CAP A 1987 4.098461454
South Africa MEATCONSUMP SHEEP KG_CAP A 1988 4.135912347
South Africa MEATCONSUMP SHEEP KG_CAP A 1989 4.102686776
South Africa MEATCONSUMP SHEEP KG_CAP A 1990 4.029564439
South Africa MEATCONSUMP SHEEP KG_CAP A 1991 3.945992705
South Africa MEATCONSUMP SHEEP KG_CAP A 1992 4.064530031
South Africa MEATCONSUMP SHEEP KG_CAP A 1993 3.661118222
South Africa MEATCONSUMP SHEEP KG_CAP A 1994 4.260933747
South Africa MEATCONSUMP SHEEP KG_CAP A 1995 3.308788941
South Africa MEATCONSUMP SHEEP KG_CAP A 1996 3.425523723
South Africa MEATCONSUMP SHEEP KG_CAP A 1997 3.345895231
South Africa MEATCONSUMP SHEEP KG_CAP A 1998 3.255199963
South Africa MEATCONSUMP SHEEP KG_CAP A 1999 3.709177374
South Africa MEATCONSUMP SHEEP KG_CAP A 2000 4.065556031
South Africa MEATCONSUMP SHEEP KG_CAP A 2001 3.367087962
South Africa MEATCONSUMP SHEEP KG_CAP A 2002 3.293693756
South Africa MEATCONSUMP SHEEP KG_CAP A 2003 3.173662739
South Africa MEATCONSUMP SHEEP KG_CAP A 2004 3.212879895
South Africa MEATCONSUMP SHEEP KG_CAP A 2005 3.176574637
South Africa MEATCONSUMP SHEEP KG_CAP A 2006 3.348385727
South Africa MEATCONSUMP SHEEP KG_CAP A 2007 2.885196276
South Africa MEATCONSUMP SHEEP KG_CAP A 2008 3.447487924
South Africa MEATCONSUMP SHEEP KG_CAP A 2009 3.364975458
South Africa MEATCONSUMP SHEEP KG_CAP A 2010 3.152962885
South Africa MEATCONSUMP SHEEP KG_CAP A 2011 2.935258948
South Africa MEATCONSUMP SHEEP KG_CAP A 2012 3.073851803
South Africa MEATCONSUMP SHEEP KG_CAP A 2013 2.989258789
South Africa MEATCONSUMP SHEEP KG_CAP A 2014 3.094225302
Sudan MEATCONSUMP SHEEP KG_CAP A 1983 3.930685994
Sudan MEATCONSUMP SHEEP KG_CAP A 1984 4.059619666
Sudan MEATCONSUMP SHEEP KG_CAP A 1985 4.047906495
Sudan MEATCONSUMP SHEEP KG_CAP A 1986 3.38184165
Sudan MEATCONSUMP SHEEP KG_CAP A 1987 3.386463835
Sudan MEATCONSUMP SHEEP KG_CAP A 1988 3.57592564
Sudan MEATCONSUMP SHEEP KG_CAP A 1989 3.585113757
Sudan MEATCONSUMP SHEEP KG_CAP A 1990 3.573094171
Sudan MEATCONSUMP SHEEP KG_CAP A 1991 4.280064401
Sudan MEATCONSUMP SHEEP KG_CAP A 1992 4.899969757
Sudan MEATCONSUMP SHEEP KG_CAP A 1993 5.41786528
Sudan MEATCONSUMP SHEEP KG_CAP A 1994 6.096847239
Sudan MEATCONSUMP SHEEP KG_CAP A 1995 6.809430227
Sudan MEATCONSUMP SHEEP KG_CAP A 1996 6.577848211
Sudan MEATCONSUMP SHEEP KG_CAP A 1997 6.873821794
Sudan MEATCONSUMP SHEEP KG_CAP A 1998 6.91199557
Sudan MEATCONSUMP SHEEP KG_CAP A 1999 6.586174239
Sudan MEATCONSUMP SHEEP KG_CAP A 2000 6.522206714
Sudan MEATCONSUMP SHEEP KG_CAP A 2001 6.651431773
Sudan MEATCONSUMP SHEEP KG_CAP A 2002 6.341913076
Sudan MEATCONSUMP SHEEP KG_CAP A 2003 6.4241598
Sudan MEATCONSUMP SHEEP KG_CAP A 2004 6.363609362
Sudan MEATCONSUMP SHEEP KG_CAP A 2005 7.313383589
Sudan MEATCONSUMP SHEEP KG_CAP A 2006 9.607032028
Sudan MEATCONSUMP SHEEP KG_CAP A 2007 9.486316196
Sudan MEATCONSUMP SHEEP KG_CAP A 2008 9.767841375
Sudan MEATCONSUMP SHEEP KG_CAP A 2009 9.170986435
Sudan MEATCONSUMP SHEEP KG_CAP A 2010 9.117099724
Sudan MEATCONSUMP SHEEP KG_CAP A 2011 8.935538218
Sudan MEATCONSUMP SHEEP KG_CAP A 2012 8.732359845
Sudan MEATCONSUMP SHEEP KG_CAP A 2013 8.543288323
Sudan MEATCONSUMP SHEEP KG_CAP A 2014 8.359677813
Tanzania MEATCONSUMP SHEEP KG_CAP A 1983 1.154230109
Tanzania MEATCONSUMP SHEEP KG_CAP A 1984 1.109369572
Tanzania MEATCONSUMP SHEEP KG_CAP A 1985 1.176533861
Tanzania MEATCONSUMP SHEEP KG_CAP A 1986 1.150546893
Tanzania MEATCONSUMP SHEEP KG_CAP A 1987 1.125041565
Tanzania MEATCONSUMP SHEEP KG_CAP A 1988 1.09924069
Tanzania MEATCONSUMP SHEEP KG_CAP A 1989 1.090521282
Tanzania MEATCONSUMP SHEEP KG_CAP A 1990 1.080861685
Tanzania MEATCONSUMP SHEEP KG_CAP A 1991 1.070113749
Tanzania MEATCONSUMP SHEEP KG_CAP A 1992 1.068949907
Tanzania MEATCONSUMP SHEEP KG_CAP A 1993 1.06811375
Tanzania MEATCONSUMP SHEEP KG_CAP A 1994 1.05828882
Tanzania MEATCONSUMP SHEEP KG_CAP A 1995 1.096841056
Tanzania MEATCONSUMP SHEEP KG_CAP A 1996 1.063547671
Tanzania MEATCONSUMP SHEEP KG_CAP A 1997 1.048852677
Tanzania MEATCONSUMP SHEEP KG_CAP A 1998 1.03167098
Tanzania MEATCONSUMP SHEEP KG_CAP A 1999 1.044111053
Tanzania MEATCONSUMP SHEEP KG_CAP A 2000 1.022782409
Tanzania MEATCONSUMP SHEEP KG_CAP A 2001 1.027250925
Tanzania MEATCONSUMP SHEEP KG_CAP A 2002 1.005563336
Tanzania MEATCONSUMP SHEEP KG_CAP A 2003 1.021210503
Tanzania MEATCONSUMP SHEEP KG_CAP A 2004 0.974557334
Tanzania MEATCONSUMP SHEEP KG_CAP A 2005 0.955048386
Tanzania MEATCONSUMP SHEEP KG_CAP A 2006 0.958169298
Tanzania MEATCONSUMP SHEEP KG_CAP A 2007 0.928365782
Tanzania MEATCONSUMP SHEEP KG_CAP A 2008 0.91735744
Tanzania MEATCONSUMP SHEEP KG_CAP A 2009 0.892663643
Tanzania MEATCONSUMP SHEEP KG_CAP A 2010 0.87579302
Tanzania MEATCONSUMP SHEEP KG_CAP A 2011 1.049640319
Tanzania MEATCONSUMP SHEEP KG_CAP A 2012 1.045786155
Tanzania MEATCONSUMP SHEEP KG_CAP A 2013 1.019979051
Tanzania MEATCONSUMP SHEEP KG_CAP A 2014 1.022219579
Thailand MEATCONSUMP SHEEP KG_CAP A 1983 0.007872198
Thailand MEATCONSUMP SHEEP KG_CAP A 1984 0.010010882
Thailand MEATCONSUMP SHEEP KG_CAP A 1985 0.011093189
Thailand MEATCONSUMP SHEEP KG_CAP A 1986 0.012309507
Thailand MEATCONSUMP SHEEP KG_CAP A 1987 0.013999681
Thailand MEATCONSUMP SHEEP KG_CAP A 1988 0.016347341
Thailand MEATCONSUMP SHEEP KG_CAP A 1989 0.019253359
Thailand MEATCONSUMP SHEEP KG_CAP A 1990 0.02060985
Thailand MEATCONSUMP SHEEP KG_CAP A 1991 0.021752392
Thailand MEATCONSUMP SHEEP KG_CAP A 1992 0.025812123
Thailand MEATCONSUMP SHEEP KG_CAP A 1993 0.01985569
Thailand MEATCONSUMP SHEEP KG_CAP A 1994 0.018052706
Thailand MEATCONSUMP SHEEP KG_CAP A 1995 0.016411231
Thailand MEATCONSUMP SHEEP KG_CAP A 1996 0.012076841
Thailand MEATCONSUMP SHEEP KG_CAP A 1997 0.012453037
Thailand MEATCONSUMP SHEEP KG_CAP A 1998 0.013444987
Thailand MEATCONSUMP SHEEP KG_CAP A 1999 0.013209353
Thailand MEATCONSUMP SHEEP KG_CAP A 2000 0.014488247
Thailand MEATCONSUMP SHEEP KG_CAP A 2001 0.019407329
Thailand MEATCONSUMP SHEEP KG_CAP A 2002 0.01817988
Thailand MEATCONSUMP SHEEP KG_CAP A 2003 0.019280498
Thailand MEATCONSUMP SHEEP KG_CAP A 2004 0.026080784
Thailand MEATCONSUMP SHEEP KG_CAP A 2005 0.029099908
Thailand MEATCONSUMP SHEEP KG_CAP A 2006 0.026606765
Thailand MEATCONSUMP SHEEP KG_CAP A 2007 0.033186749
Thailand MEATCONSUMP SHEEP KG_CAP A 2008 0.031643436
Thailand MEATCONSUMP SHEEP KG_CAP A 2009 0.029634425
Thailand MEATCONSUMP SHEEP KG_CAP A 2010 0.030373798
Thailand MEATCONSUMP SHEEP KG_CAP A 2011 0.03559482
Thailand MEATCONSUMP SHEEP KG_CAP A 2012 0.035326495
Thailand MEATCONSUMP SHEEP KG_CAP A 2013 0.03742551
Thailand MEATCONSUMP SHEEP KG_CAP A 2014 0.040095813
Ukraine MEATCONSUMP SHEEP KG_CAP A 1992 0.596344486
Ukraine MEATCONSUMP SHEEP KG_CAP A 1993 0.512074484
Ukraine MEATCONSUMP SHEEP KG_CAP A 1994 0.730096933
Ukraine MEATCONSUMP SHEEP KG_CAP A 1995 0.656984793
Ukraine MEATCONSUMP SHEEP KG_CAP A 1996 0.540855169
Ukraine MEATCONSUMP SHEEP KG_CAP A 1997 0.414047853
Ukraine MEATCONSUMP SHEEP KG_CAP A 1998 0.362361212
Ukraine MEATCONSUMP SHEEP KG_CAP A 1999 0.335481004
Ukraine MEATCONSUMP SHEEP KG_CAP A 2000 0.301614876
Ukraine MEATCONSUMP SHEEP KG_CAP A 2001 0.275469435
Ukraine MEATCONSUMP SHEEP KG_CAP A 2002 0.299962224
Ukraine MEATCONSUMP SHEEP KG_CAP A 2003 0.301882121
Ukraine MEATCONSUMP SHEEP KG_CAP A 2004 0.305544346
Ukraine MEATCONSUMP SHEEP KG_CAP A 2005 0.302724035
Ukraine MEATCONSUMP SHEEP KG_CAP A 2006 0.274114047
Ukraine MEATCONSUMP SHEEP KG_CAP A 2007 0.288598808
Ukraine MEATCONSUMP SHEEP KG_CAP A 2008 0.324185886
Ukraine MEATCONSUMP SHEEP KG_CAP A 2009 0.338573965
Ukraine MEATCONSUMP SHEEP KG_CAP A 2010 0.403271239
Ukraine MEATCONSUMP SHEEP KG_CAP A 2011 0.376646073
Ukraine MEATCONSUMP SHEEP KG_CAP A 2012 0.381107849
Ukraine MEATCONSUMP SHEEP KG_CAP A 2013 0.385524
Ukraine MEATCONSUMP SHEEP KG_CAP A 2014 0.391916526
Uruguay MEATCONSUMP SHEEP KG_CAP A 1983 9.676178728
Uruguay MEATCONSUMP SHEEP KG_CAP A 1984 10.95313034
Uruguay MEATCONSUMP SHEEP KG_CAP A 1985 11.59049197
Uruguay MEATCONSUMP SHEEP KG_CAP A 1986 9.779900501
Uruguay MEATCONSUMP SHEEP KG_CAP A 1987 12.68010564
Uruguay MEATCONSUMP SHEEP KG_CAP A 1988 13.71357361
Uruguay MEATCONSUMP SHEEP KG_CAP A 1989 11.36909077
Uruguay MEATCONSUMP SHEEP KG_CAP A 1990 10.40581196
Uruguay MEATCONSUMP SHEEP KG_CAP A 1991 13.83867256
Uruguay MEATCONSUMP SHEEP KG_CAP A 1992 15.03644931
Uruguay MEATCONSUMP SHEEP KG_CAP A 1993 14.74456816
Uruguay MEATCONSUMP SHEEP KG_CAP A 1994 14.32307293
Uruguay MEATCONSUMP SHEEP KG_CAP A 1995 12.0918362
Uruguay MEATCONSUMP SHEEP KG_CAP A 1996 13.65519763
Uruguay MEATCONSUMP SHEEP KG_CAP A 1997 11.83738324
Uruguay MEATCONSUMP SHEEP KG_CAP A 1998 10.48089937
Uruguay MEATCONSUMP SHEEP KG_CAP A 1999 10.38742789
Uruguay MEATCONSUMP SHEEP KG_CAP A 2000 9.139685856
Uruguay MEATCONSUMP SHEEP KG_CAP A 2001 11.14986373
Uruguay MEATCONSUMP SHEEP KG_CAP A 2002 6.60980729
Uruguay MEATCONSUMP SHEEP KG_CAP A 2003 5.417383088
Uruguay MEATCONSUMP SHEEP KG_CAP A 2004 4.928182517
Uruguay MEATCONSUMP SHEEP KG_CAP A 2005 5.788703356
Uruguay MEATCONSUMP SHEEP KG_CAP A 2006 3.558054744
Uruguay MEATCONSUMP SHEEP KG_CAP A 2007 2.965056852
Uruguay MEATCONSUMP SHEEP KG_CAP A 2008 2.946909565
Uruguay MEATCONSUMP SHEEP KG_CAP A 2009 2.032904909
Uruguay MEATCONSUMP SHEEP KG_CAP A 2010 4.262206597
Uruguay MEATCONSUMP SHEEP KG_CAP A 2011 4.998025108
Uruguay MEATCONSUMP SHEEP KG_CAP A 2012 4.776106193
Uruguay MEATCONSUMP SHEEP KG_CAP A 2013 3.688307869
Uruguay MEATCONSUMP SHEEP KG_CAP A 2014 3.119646303
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1983 0.030279346
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1984 0.038781641
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1985 0.043030914
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1986 0.045196164
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1987 0.044189579
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1988 0.041418827
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1989 0.037975473
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1990 0.035629081
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1991 0.029248753
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1992 0.028640175
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1993 0.031757153
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1994 0.037907649
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1995 0.048270465
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1996 0.053026827
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1997 0.052259507
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1998 0.052371346
Viet Nam MEATCONSUMP SHEEP KG_CAP A 1999 0.051680923
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2000 0.052491358
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2001 0.05335096
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2002 0.058583621
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2003 0.064157029
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2004 0.083501335
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2005 0.096599333
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2006 0.109316619
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2007 0.130586357
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2008 0.11148852
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2009 0.138315645
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2010 0.169917474
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2011 0.131283679
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2012 0.115227986
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2013 0.137489544
Viet Nam MEATCONSUMP SHEEP KG_CAP A 2014 0.13673251
Zambia MEATCONSUMP SHEEP KG_CAP A 1983 0.209682057
Zambia MEATCONSUMP SHEEP KG_CAP A 1984 0.191673473
Zambia MEATCONSUMP SHEEP KG_CAP A 1985 0.211001815
Zambia MEATCONSUMP SHEEP KG_CAP A 1986 0.219275113
Zambia MEATCONSUMP SHEEP KG_CAP A 1987 0.228723467
Zambia MEATCONSUMP SHEEP KG_CAP A 1988 0.238869314
Zambia MEATCONSUMP SHEEP KG_CAP A 1989 0.235253573
Zambia MEATCONSUMP SHEEP KG_CAP A 1990 0.239198448
Zambia MEATCONSUMP SHEEP KG_CAP A 1991 0.242892292
Zambia MEATCONSUMP SHEEP KG_CAP A 1992 0.240141935
Zambia MEATCONSUMP SHEEP KG_CAP A 1993 0.257386696
Zambia MEATCONSUMP SHEEP KG_CAP A 1994 0.265041729
Zambia MEATCONSUMP SHEEP KG_CAP A 1995 0.268420416
Zambia MEATCONSUMP SHEEP KG_CAP A 1996 0.269247219
Zambia MEATCONSUMP SHEEP KG_CAP A 1997 0.273630901
Zambia MEATCONSUMP SHEEP KG_CAP A 1998 0.337775932
Zambia MEATCONSUMP SHEEP KG_CAP A 1999 0.394153954
Zambia MEATCONSUMP SHEEP KG_CAP A 2000 0.448660647
Zambia MEATCONSUMP SHEEP KG_CAP A 2001 0.447975369
Zambia MEATCONSUMP SHEEP KG_CAP A 2002 0.529242342
Zambia MEATCONSUMP SHEEP KG_CAP A 2003 0.584870075
Zambia MEATCONSUMP SHEEP KG_CAP A 2004 0.611550767
Zambia MEATCONSUMP SHEEP KG_CAP A 2005 0.63073058
Zambia MEATCONSUMP SHEEP KG_CAP A 2006 0.615596645
Zambia MEATCONSUMP SHEEP KG_CAP A 2007 0.613020635
Zambia MEATCONSUMP SHEEP KG_CAP A 2008 0.595803164
Zambia MEATCONSUMP SHEEP KG_CAP A 2009 0.606091219
Zambia MEATCONSUMP SHEEP KG_CAP A 2010 0.618669883
Zambia MEATCONSUMP SHEEP KG_CAP A 2011 0.6162066
Zambia MEATCONSUMP SHEEP KG_CAP A 2012 0.601526128
Zambia MEATCONSUMP SHEEP KG_CAP A 2013 0.59316317
Zambia MEATCONSUMP SHEEP KG_CAP A 2014 0.581042553
World MEATCONSUMP SHEEP KG_CAP A 1990 1.575661947
World MEATCONSUMP SHEEP KG_CAP A 1991 1.594076998
World MEATCONSUMP SHEEP KG_CAP A 1992 1.559401911
World MEATCONSUMP SHEEP KG_CAP A 1993 1.572368725
World MEATCONSUMP SHEEP KG_CAP A 1994 1.581684566
World MEATCONSUMP SHEEP KG_CAP A 1995 1.593116832
World MEATCONSUMP SHEEP KG_CAP A 1996 1.519547095
World MEATCONSUMP SHEEP KG_CAP A 1997 1.562604579
World MEATCONSUMP SHEEP KG_CAP A 1998 1.577636889
World MEATCONSUMP SHEEP KG_CAP A 1999 1.58662952
World MEATCONSUMP SHEEP KG_CAP A 2000 1.626877643
World MEATCONSUMP SHEEP KG_CAP A 2001 1.633668933
World MEATCONSUMP SHEEP KG_CAP A 2002 1.626073536
World MEATCONSUMP SHEEP KG_CAP A 2003 1.594267621
World MEATCONSUMP SHEEP KG_CAP A 2004 1.622726418
World MEATCONSUMP SHEEP KG_CAP A 2005 1.663001506
World MEATCONSUMP SHEEP KG_CAP A 2006 1.689065748
World MEATCONSUMP SHEEP KG_CAP A 2007 1.716821786
World MEATCONSUMP SHEEP KG_CAP A 2008 1.700030154
World MEATCONSUMP SHEEP KG_CAP A 2009 1.693579203
World MEATCONSUMP SHEEP KG_CAP A 2010 1.676562755
World MEATCONSUMP SHEEP KG_CAP A 2011 1.683115416
World MEATCONSUMP SHEEP KG_CAP A 2012 1.686027377
World MEATCONSUMP SHEEP KG_CAP A 2013 1.700305394
World MEATCONSUMP SHEEP KG_CAP A 2014 1.717367446
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1983 1.683821215
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1984 1.630653893
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1985 1.632337708
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1986 1.630120469
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1987 1.664135753
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1988 1.721586814
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1989 1.900281178
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1990 1.882283202
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1991 1.890150893
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1992 1.84605895
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1993 1.674561392
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1994 1.7399406
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1995 1.790705198
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1996 1.795987078
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1997 1.863359553
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1998 1.899215117
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 1999 1.903026068
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2000 1.919719629
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2001 1.978395659
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2002 1.964795371
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2003 1.968732387
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2004 1.978187999
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2005 2.025972132
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2006 2.222145213
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2007 2.223930439
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2008 2.23442733
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2009 2.210334405
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2010 2.18989773
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2011 2.17493945
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2012 2.103890062
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2013 2.068600371
Sub-Saharan Africa MEATCONSUMP SHEEP KG_CAP A 2014 2.047332239
<style>
body {
background-color: white;
font-family: Helvetica, Arial, sans-serif;
}
h1 {
font-size: 36px;
margin-left: 60px;
color:orange;
text-align: center;
}
p {
font-size: 14px;
margin-left: 60px;
margin-right:60px;
color:orange;
}
svg {
background-color: white;
}
.axis path,
.axis line {
fill: none;
stroke: grey;
stroke-width: 1px;
}
.line {
fill: none;
}
.btn-group {
padding-top: 10px;
margin-left:100px;
}
button.selected {
background:orange;
border-radius: 28px;
font-family: Arial;
color: white;
font-size: 14px;
padding: 5px 10px 5px 10px;
text-decoration: none;
border-color:none;
opacity: 0.8;
}
.button {
border-radius: 20px;
font-family: Arial;
border:2px solid orange;
color: orange;
font-size: 14px;
padding: 5px 10px 5px 10px;
background: white;
outline:none;
}
.button:hover {
border-radius: 20px;
font-family: Arial;
border:1.5px solid orange;
color: white;
font-size: 14px;
padding: 5px 10px 5px 10px;
outline:none;
background: #ffc299;
}
.axis text {
font-family: sans-serif;
font-size: 12px;
fill:dimgrey;
}
.row {
padding-top: 0px;
}
text {
font-family: sans-serif;
font-size: 12px;
}
.textshow {
fill: orange;
opacity: 1;
}
.texthide {
fill: orange;
opacity: 0;
}
.circle {
fill: #ffff00;
stroke:orange;
stroke-width:3px;
}
.mytooltip{
position:absolute;
z-index: 10;
}
.mytooltip p {
background:#ffebcc;
border:white 1px solid;
border-radius: 5px;
padding:2px;
max-width: 180px;
font-weight:bold;
margin-left: 5px;
color:#ff7733;
}
.focused{
stroke:orange;
stroke-opacity:1;
stroke-width:2.5px;
}
.unfocused{
stroke: gray;
stroke-width: 1.5px;
stroke-opacity:0.7;
}
#highlight{
font: 15px sans-serif;
fill: orange;
opacity: 1;
font-weight: bold;
}
</style>
The line chart has some problems:
1.The data is not changing based on selected buttons
2.the x axis and y axis is not changing either
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment