Przeglądaj źródła

AMBARI-1059. Refactor cluster management. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1418960 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 lat temu
rodzic
commit
00ba841494
47 zmienionych plików z 4257 dodań i 18362 usunięć
  1. 556 12017
      ambari-web/app/assets/data/apps/jobs/taskview.json
  2. 740 6008
      ambari-web/app/assets/data/apps/jobs/timeline.json
  3. 370 0
      ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_start.json
  4. 370 0
      ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_stop.json
  5. 664 4
      ambari-web/app/assets/data/hosts/hosts.json
  6. 25 25
      ambari-web/app/controllers/installer.js
  7. 6 11
      ambari-web/app/controllers/main/admin/user.js
  8. 1 1
      ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric.js
  9. 162 45
      ambari-web/app/controllers/main/host/add_controller.js
  10. 40 14
      ambari-web/app/controllers/main/service/add_controller.js
  11. 836 38
      ambari-web/app/controllers/main/service/info/configs.js
  12. 2 2
      ambari-web/app/controllers/main/service/item.js
  13. 16 9
      ambari-web/app/controllers/wizard/step10_controller.js
  14. 3 4
      ambari-web/app/controllers/wizard/step5_controller.js
  15. 4 4
      ambari-web/app/controllers/wizard/step6_controller.js
  16. 21 2
      ambari-web/app/controllers/wizard/step7_controller.js
  17. 3 2
      ambari-web/app/controllers/wizard/step8_controller.js
  18. 7 5
      ambari-web/app/controllers/wizard/step9_controller.js
  19. 0 7
      ambari-web/app/data/config_mapping.js
  20. 3 3
      ambari-web/app/data/config_properties.js
  21. 1 1
      ambari-web/app/initialize.js
  22. 1 0
      ambari-web/app/mappers/hosts_mapper.js
  23. 9 2
      ambari-web/app/mappers/jobs_mapper.js
  24. 1 0
      ambari-web/app/mappers/services_mapper.js
  25. 4 1
      ambari-web/app/messages.js
  26. 6 0
      ambari-web/app/models/component.js
  27. 1 0
      ambari-web/app/models/host.js
  28. 2 2
      ambari-web/app/models/hosts.js
  29. 21 10
      ambari-web/app/models/service.js
  30. 1 22
      ambari-web/app/routes/add_host_routes.js
  31. 1 2
      ambari-web/app/routes/add_service_routes.js
  32. 0 1
      ambari-web/app/routes/installer.js
  33. 66 2
      ambari-web/app/styles/application.less
  34. 5 4
      ambari-web/app/templates/main/background_operations_popup.hbs
  35. 14 39
      ambari-web/app/templates/main/host.hbs
  36. 1 1
      ambari-web/app/templates/main/service/info/configs.hbs
  37. 1 1
      ambari-web/app/templates/wizard/step5.hbs
  38. 23 6
      ambari-web/app/utils/data_table.js
  39. 26 20
      ambari-web/app/utils/graph.js
  40. 46 9
      ambari-web/app/utils/helper.js
  41. 33 13
      ambari-web/app/views/main.js
  42. 4 4
      ambari-web/app/views/main/admin/user/create.js
  43. 4 4
      ambari-web/app/views/main/admin/user/edit.js
  44. 27 11
      ambari-web/app/views/main/apps/item/bar_view.js
  45. 0 2
      ambari-web/app/views/main/apps/item/dag_view.js
  46. 128 3
      ambari-web/app/views/main/host.js
  47. 2 1
      ambari-web/app/views/wizard/controls_view.js

+ 556 - 12017
ambari-web/app/assets/data/apps/jobs/taskview.json

@@ -1,12017 +1,556 @@
-{"jobName":"", "items":[
-  [
-    {
-      "x":1348174676895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174676971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695819,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714819,
-      "y":0,
-      "r":0,
-      "label":null
-    }
-  ],
-  [
-    {
-      "x":1348174676895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174676971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":"1348174687606",
-      "y":6995,
-      "r":6,
-      "label":"attempt_201209201356_0002_m_000000_0"
-    },
-    {
-      "x":"1348174687607",
-      "y":6993,
-      "r":4,
-      "label":"attempt_201209201356_0002_m_000001_0"
-    },
-    {
-      "x":1348174688143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695819,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714819,
-      "y":0,
-      "r":0,
-      "label":null
-    }
-  ],
-  [
-    {
-      "x":1348174676895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174676971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695819,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714819,
-      "y":0,
-      "r":0,
-      "label":null
-    }
-  ],
-  [
-    {
-      "x":1348174676895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174676971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174677959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678111,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174678947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174679935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174680999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174681987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174682975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174683963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174684951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174685939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174686927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174687991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174688979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174689967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174690955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174691943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174692931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174693995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174694983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695819,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695895,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174695971,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696047,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696123,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696199,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696275,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696351,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696427,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696503,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696579,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696655,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696731,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696807,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696883,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174696959,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697035,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":"1348174696690",
-      "y":11548,
-      "r":9,
-      "label":"attempt_201209201356_0002_r_000000_0"
-    },
-    {
-      "x":1348174697187,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697263,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697339,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697415,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697491,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697567,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697643,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697719,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697795,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697871,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174697947,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698023,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698099,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698175,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698251,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698327,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698403,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698479,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698555,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698631,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698707,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698783,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698859,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174698935,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699011,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699087,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699163,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699239,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699315,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699391,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699467,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699543,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699619,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699695,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699771,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699847,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699923,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174699999,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700075,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700151,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700227,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700303,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700379,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700455,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700531,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700607,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700683,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700759,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700835,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700911,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174700987,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701063,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701139,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701215,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701291,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701367,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701443,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701519,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701595,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701671,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701747,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701823,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701899,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174701975,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702051,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702127,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702203,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702279,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702355,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702431,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702507,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702583,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702659,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702735,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702811,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702887,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174702963,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703039,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703115,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703191,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703267,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703343,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703419,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703495,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703571,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703647,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703723,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703799,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703875,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174703951,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704027,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704103,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704179,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704255,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704331,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704407,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704483,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704559,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704635,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704711,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704787,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704863,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174704939,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705015,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705091,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705167,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705243,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705319,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705395,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705471,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705547,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705623,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705699,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705775,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705851,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174705927,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706003,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706079,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706155,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706231,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706307,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706383,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706459,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706535,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706611,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706687,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706763,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706839,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706915,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174706991,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707067,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707143,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707219,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707295,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707371,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707447,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707523,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707599,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707675,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707751,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707827,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707903,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174707979,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708055,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708131,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708207,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708283,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708359,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708435,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708511,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708587,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708663,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708739,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708815,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708891,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174708967,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709043,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709119,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709195,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709271,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709347,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709423,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709499,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709575,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709651,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709727,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709803,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709879,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174709955,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710031,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710107,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710183,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710259,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710335,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710411,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710487,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710563,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710639,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710715,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710791,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710867,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174710943,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711019,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711095,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711171,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711247,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711323,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711399,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711475,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711551,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711627,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711703,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711779,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711855,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174711931,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712007,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712083,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712159,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712235,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712311,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712387,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712463,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712539,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712615,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712691,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712767,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712843,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712919,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174712995,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713071,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713147,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713223,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713299,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713375,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713451,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713527,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713603,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713679,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713755,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713831,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713907,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174713983,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714059,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714135,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714211,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714287,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714363,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714439,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714515,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714591,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714667,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714743,
-      "y":0,
-      "r":0,
-      "label":null
-    },
-    {
-      "x":1348174714819,
-      "y":0,
-      "r":0,
-      "label":null
-    }
-  ],
-  {
-    "submitTime":"1348174676895",
-    "0":"1348174676895",
-    "finishTime":"1348174714773",
-    "1":"1348174714773"
-  }
-]
-}
+{
+    "mapNodeLocal": [
+        {
+            "r": 0,
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "label": "attempt_201210011000_0012_m_000000_0",
+            "r": 6,
+            "x": 1349196028,
+            "y": 5219
+        },
+        {
+            "label": "attempt_201210011000_0012_m_000000_1",
+            "r": 6,
+            "x": 1349196029,
+            "y": 104219
+        },
+        {
+            "r": 0,
+            "x": 1349196030,
+            "y": 0
+        },
+        {
+            "label": "attempt_201210011000_0012_m_000000_2",
+            "r": 6,
+            "x": 1349196031,
+            "y": 102219
+        },
+        {
+            "r": 0,
+            "x": 1349196034,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196037,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196043,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196046,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196055,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196058,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196067,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196070,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196079,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196085,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196091,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196097,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196103,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196106,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196115,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196118,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196124,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196127,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196136,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196139,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196160,
+            "y": 0
+        }
+    ],
+    "mapRackLocal": [
+        {
+            "r": 0,
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196028,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196029,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196030,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196031,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196034,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196037,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196043,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196046,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196055,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196058,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196067,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196070,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196079,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196085,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196091,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196097,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196103,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196106,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196115,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196118,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196124,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196127,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196136,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196139,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196160,
+            "y": 0
+        }
+    ],
+    "mapOffSwitch": [
+        {
+            "r": 0,
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196028,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196029,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196030,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196031,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196034,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196037,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196043,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196046,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196055,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196058,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196067,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196070,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196079,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196085,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196091,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196097,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196103,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196106,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196115,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196118,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196124,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196127,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196136,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196139,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196160,
+            "y": 0
+        }
+    ],
+    "reduceOffSwitch": [
+        {
+            "r": 0,
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196028,
+            "y": 0
+        },
+        {
+            "r": 0,
+            "x": 1349196029,
+            "y": 0
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000000_1",
+            "r": 6,
+            "x": 1349196030,
+            "y": 103219
+        },
+        {
+            "r": 0,
+            "x": 1349196031,
+            "y": 0
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000000_0",
+            "r": 6,
+            "x": 1349196034,
+            "y": 10484
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000001_0",
+            "r": 6,
+            "x": 1349196037,
+            "y": 10645
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000002_0",
+            "r": 6,
+            "x": 1349196043,
+            "y": 14970
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000003_0",
+            "r": 6,
+            "x": 1349196046,
+            "y": 14872
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000004_0",
+            "r": 6,
+            "x": 1349196055,
+            "y": 13521
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000005_0",
+            "r": 6,
+            "x": 1349196058,
+            "y": 16319
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000006_0",
+            "r": 6,
+            "x": 1349196067,
+            "y": 15078
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000007_0",
+            "r": 6,
+            "x": 1349196070,
+            "y": 17741
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000008_0",
+            "r": 6,
+            "x": 1349196079,
+            "y": 13609
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000009_0",
+            "r": 6,
+            "x": 1349196085,
+            "y": 13184
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000010_0",
+            "r": 6,
+            "x": 1349196091,
+            "y": 14919
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000011_0",
+            "r": 6,
+            "x": 1349196097,
+            "y": 11590
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000012_0",
+            "r": 6,
+            "x": 1349196103,
+            "y": 13223
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000013_0",
+            "r": 6,
+            "x": 1349196106,
+            "y": 12841
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000014_0",
+            "r": 6,
+            "x": 1349196115,
+            "y": 11585
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000015_0",
+            "r": 6,
+            "x": 1349196118,
+            "y": 11085
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000016_0",
+            "r": 6,
+            "x": 1349196124,
+            "y": 12886
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000017_0",
+            "r": 6,
+            "x": 1349196127,
+            "y": 15345
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000018_0",
+            "r": 6,
+            "x": 1349196136,
+            "y": 11112
+        },
+        {
+            "label": "attempt_201210011000_0012_r_000019_0",
+            "r": 6,
+            "x": 1349196139,
+            "y": 13773
+        },
+        {
+            "r": 0,
+            "x": 1349196160,
+            "y": 0
+        }
+    ],
+    "submitTime": 1349195920,
+    "finishTime": 1349196160
+}

+ 740 - 6008
ambari-web/app/assets/data/apps/jobs/timeline.json

@@ -1,6008 +1,740 @@
-{"jobName":"", "items":[
-  [
-    {
-      "x":0,
-      "y":0
-    },
-    {
-      "x":1,
-      "y":0
-    },
-    {
-      "x":2,
-      "y":0
-    },
-    {
-      "x":3,
-      "y":0
-    },
-    {
-      "x":4,
-      "y":0
-    },
-    {
-      "x":5,
-      "y":0
-    },
-    {
-      "x":6,
-      "y":0
-    },
-    {
-      "x":7,
-      "y":0
-    },
-    {
-      "x":8,
-      "y":0
-    },
-    {
-      "x":9,
-      "y":0
-    },
-    {
-      "x":10,
-      "y":0
-    },
-    {
-      "x":11,
-      "y":0
-    },
-    {
-      "x":12,
-      "y":0
-    },
-    {
-      "x":13,
-      "y":0
-    },
-    {
-      "x":14,
-      "y":0
-    },
-    {
-      "x":15,
-      "y":0
-    },
-    {
-      "x":16,
-      "y":0
-    },
-    {
-      "x":17,
-      "y":0
-    },
-    {
-      "x":18,
-      "y":0
-    },
-    {
-      "x":19,
-      "y":0
-    },
-    {
-      "x":20,
-      "y":0
-    },
-    {
-      "x":21,
-      "y":0
-    },
-    {
-      "x":22,
-      "y":0
-    },
-    {
-      "x":23,
-      "y":0
-    },
-    {
-      "x":24,
-      "y":0
-    },
-    {
-      "x":25,
-      "y":0
-    },
-    {
-      "x":26,
-      "y":0
-    },
-    {
-      "x":27,
-      "y":0
-    },
-    {
-      "x":28,
-      "y":0
-    },
-    {
-      "x":29,
-      "y":0
-    },
-    {
-      "x":30,
-      "y":0
-    },
-    {
-      "x":31,
-      "y":0
-    },
-    {
-      "x":32,
-      "y":0
-    },
-    {
-      "x":33,
-      "y":0
-    },
-    {
-      "x":34,
-      "y":0
-    },
-    {
-      "x":35,
-      "y":0
-    },
-    {
-      "x":36,
-      "y":0
-    },
-    {
-      "x":37,
-      "y":0
-    },
-    {
-      "x":38,
-      "y":0
-    },
-    {
-      "x":39,
-      "y":0
-    },
-    {
-      "x":40,
-      "y":0
-    },
-    {
-      "x":41,
-      "y":0
-    },
-    {
-      "x":42,
-      "y":0
-    },
-    {
-      "x":43,
-      "y":0
-    },
-    {
-      "x":44,
-      "y":0
-    },
-    {
-      "x":45,
-      "y":0
-    },
-    {
-      "x":46,
-      "y":0
-    },
-    {
-      "x":47,
-      "y":0
-    },
-    {
-      "x":48,
-      "y":0
-    },
-    {
-      "x":49,
-      "y":0
-    },
-    {
-      "x":50,
-      "y":0
-    },
-    {
-      "x":51,
-      "y":0
-    },
-    {
-      "x":52,
-      "y":0
-    },
-    {
-      "x":53,
-      "y":0
-    },
-    {
-      "x":54,
-      "y":0
-    },
-    {
-      "x":55,
-      "y":0
-    },
-    {
-      "x":56,
-      "y":0
-    },
-    {
-      "x":57,
-      "y":0
-    },
-    {
-      "x":58,
-      "y":0
-    },
-    {
-      "x":59,
-      "y":0
-    },
-    {
-      "x":60,
-      "y":0
-    },
-    {
-      "x":61,
-      "y":0
-    },
-    {
-      "x":62,
-      "y":0
-    },
-    {
-      "x":63,
-      "y":0
-    },
-    {
-      "x":64,
-      "y":0
-    },
-    {
-      "x":65,
-      "y":0
-    },
-    {
-      "x":66,
-      "y":0
-    },
-    {
-      "x":67,
-      "y":0
-    },
-    {
-      "x":68,
-      "y":0
-    },
-    {
-      "x":69,
-      "y":0
-    },
-    {
-      "x":70,
-      "y":0
-    },
-    {
-      "x":71,
-      "y":0
-    },
-    {
-      "x":72,
-      "y":0
-    },
-    {
-      "x":73,
-      "y":0
-    },
-    {
-      "x":74,
-      "y":0
-    },
-    {
-      "x":75,
-      "y":0
-    },
-    {
-      "x":76,
-      "y":0
-    },
-    {
-      "x":77,
-      "y":0
-    },
-    {
-      "x":78,
-      "y":0
-    },
-    {
-      "x":79,
-      "y":0
-    },
-    {
-      "x":80,
-      "y":0
-    },
-    {
-      "x":81,
-      "y":0
-    },
-    {
-      "x":82,
-      "y":0
-    },
-    {
-      "x":83,
-      "y":0
-    },
-    {
-      "x":84,
-      "y":0
-    },
-    {
-      "x":85,
-      "y":0
-    },
-    {
-      "x":86,
-      "y":0
-    },
-    {
-      "x":87,
-      "y":0
-    },
-    {
-      "x":88,
-      "y":0
-    },
-    {
-      "x":89,
-      "y":0
-    },
-    {
-      "x":90,
-      "y":0
-    },
-    {
-      "x":91,
-      "y":0
-    },
-    {
-      "x":92,
-      "y":0
-    },
-    {
-      "x":93,
-      "y":0
-    },
-    {
-      "x":94,
-      "y":0
-    },
-    {
-      "x":95,
-      "y":0
-    },
-    {
-      "x":96,
-      "y":0
-    },
-    {
-      "x":97,
-      "y":0
-    },
-    {
-      "x":98,
-      "y":0
-    },
-    {
-      "x":99,
-      "y":0
-    },
-    {
-      "x":100,
-      "y":0
-    },
-    {
-      "x":101,
-      "y":0
-    },
-    {
-      "x":102,
-      "y":0
-    },
-    {
-      "x":103,
-      "y":0
-    },
-    {
-      "x":104,
-      "y":0
-    },
-    {
-      "x":105,
-      "y":0
-    },
-    {
-      "x":106,
-      "y":0
-    },
-    {
-      "x":107,
-      "y":0
-    },
-    {
-      "x":108,
-      "y":0
-    },
-    {
-      "x":109,
-      "y":0
-    },
-    {
-      "x":110,
-      "y":0
-    },
-    {
-      "x":111,
-      "y":0
-    },
-    {
-      "x":112,
-      "y":0
-    },
-    {
-      "x":113,
-      "y":0
-    },
-    {
-      "x":114,
-      "y":0
-    },
-    {
-      "x":115,
-      "y":0
-    },
-    {
-      "x":116,
-      "y":0
-    },
-    {
-      "x":117,
-      "y":0
-    },
-    {
-      "x":118,
-      "y":0
-    },
-    {
-      "x":119,
-      "y":0
-    },
-    {
-      "x":120,
-      "y":0
-    },
-    {
-      "x":121,
-      "y":0
-    },
-    {
-      "x":122,
-      "y":0
-    },
-    {
-      "x":123,
-      "y":0
-    },
-    {
-      "x":124,
-      "y":0
-    },
-    {
-      "x":125,
-      "y":0
-    },
-    {
-      "x":126,
-      "y":0
-    },
-    {
-      "x":127,
-      "y":0
-    },
-    {
-      "x":128,
-      "y":0
-    },
-    {
-      "x":129,
-      "y":0
-    },
-    {
-      "x":130,
-      "y":0
-    },
-    {
-      "x":131,
-      "y":0
-    },
-    {
-      "x":132,
-      "y":0
-    },
-    {
-      "x":133,
-      "y":0
-    },
-    {
-      "x":134,
-      "y":0
-    },
-    {
-      "x":135,
-      "y":0
-    },
-    {
-      "x":136,
-      "y":0
-    },
-    {
-      "x":137,
-      "y":0
-    },
-    {
-      "x":138,
-      "y":0
-    },
-    {
-      "x":139,
-      "y":0
-    },
-    {
-      "x":140,
-      "y":0
-    },
-    {
-      "x":141,
-      "y":0
-    },
-    {
-      "x":142,
-      "y":2
-    },
-    {
-      "x":143,
-      "y":2
-    },
-    {
-      "x":144,
-      "y":2
-    },
-    {
-      "x":145,
-      "y":2
-    },
-    {
-      "x":146,
-      "y":2
-    },
-    {
-      "x":147,
-      "y":2
-    },
-    {
-      "x":148,
-      "y":2
-    },
-    {
-      "x":149,
-      "y":2
-    },
-    {
-      "x":150,
-      "y":2
-    },
-    {
-      "x":151,
-      "y":2
-    },
-    {
-      "x":152,
-      "y":2
-    },
-    {
-      "x":153,
-      "y":2
-    },
-    {
-      "x":154,
-      "y":2
-    },
-    {
-      "x":155,
-      "y":2
-    },
-    {
-      "x":156,
-      "y":2
-    },
-    {
-      "x":157,
-      "y":2
-    },
-    {
-      "x":158,
-      "y":2
-    },
-    {
-      "x":159,
-      "y":2
-    },
-    {
-      "x":160,
-      "y":2
-    },
-    {
-      "x":161,
-      "y":2
-    },
-    {
-      "x":162,
-      "y":2
-    },
-    {
-      "x":163,
-      "y":2
-    },
-    {
-      "x":164,
-      "y":2
-    },
-    {
-      "x":165,
-      "y":2
-    },
-    {
-      "x":166,
-      "y":2
-    },
-    {
-      "x":167,
-      "y":2
-    },
-    {
-      "x":168,
-      "y":2
-    },
-    {
-      "x":169,
-      "y":2
-    },
-    {
-      "x":170,
-      "y":2
-    },
-    {
-      "x":171,
-      "y":2
-    },
-    {
-      "x":172,
-      "y":2
-    },
-    {
-      "x":173,
-      "y":2
-    },
-    {
-      "x":174,
-      "y":2
-    },
-    {
-      "x":175,
-      "y":2
-    },
-    {
-      "x":176,
-      "y":2
-    },
-    {
-      "x":177,
-      "y":2
-    },
-    {
-      "x":178,
-      "y":2
-    },
-    {
-      "x":179,
-      "y":2
-    },
-    {
-      "x":180,
-      "y":2
-    },
-    {
-      "x":181,
-      "y":2
-    },
-    {
-      "x":182,
-      "y":2
-    },
-    {
-      "x":183,
-      "y":2
-    },
-    {
-      "x":184,
-      "y":2
-    },
-    {
-      "x":185,
-      "y":2
-    },
-    {
-      "x":186,
-      "y":2
-    },
-    {
-      "x":187,
-      "y":2
-    },
-    {
-      "x":188,
-      "y":2
-    },
-    {
-      "x":189,
-      "y":2
-    },
-    {
-      "x":190,
-      "y":2
-    },
-    {
-      "x":191,
-      "y":2
-    },
-    {
-      "x":192,
-      "y":2
-    },
-    {
-      "x":193,
-      "y":2
-    },
-    {
-      "x":194,
-      "y":2
-    },
-    {
-      "x":195,
-      "y":2
-    },
-    {
-      "x":196,
-      "y":2
-    },
-    {
-      "x":197,
-      "y":2
-    },
-    {
-      "x":198,
-      "y":2
-    },
-    {
-      "x":199,
-      "y":2
-    },
-    {
-      "x":200,
-      "y":2
-    },
-    {
-      "x":201,
-      "y":2
-    },
-    {
-      "x":202,
-      "y":2
-    },
-    {
-      "x":203,
-      "y":2
-    },
-    {
-      "x":204,
-      "y":2
-    },
-    {
-      "x":205,
-      "y":2
-    },
-    {
-      "x":206,
-      "y":2
-    },
-    {
-      "x":207,
-      "y":2
-    },
-    {
-      "x":208,
-      "y":2
-    },
-    {
-      "x":209,
-      "y":2
-    },
-    {
-      "x":210,
-      "y":2
-    },
-    {
-      "x":211,
-      "y":2
-    },
-    {
-      "x":212,
-      "y":2
-    },
-    {
-      "x":213,
-      "y":2
-    },
-    {
-      "x":214,
-      "y":2
-    },
-    {
-      "x":215,
-      "y":2
-    },
-    {
-      "x":216,
-      "y":2
-    },
-    {
-      "x":217,
-      "y":2
-    },
-    {
-      "x":218,
-      "y":2
-    },
-    {
-      "x":219,
-      "y":2
-    },
-    {
-      "x":220,
-      "y":2
-    },
-    {
-      "x":221,
-      "y":2
-    },
-    {
-      "x":222,
-      "y":2
-    },
-    {
-      "x":223,
-      "y":2
-    },
-    {
-      "x":224,
-      "y":2
-    },
-    {
-      "x":225,
-      "y":2
-    },
-    {
-      "x":226,
-      "y":2
-    },
-    {
-      "x":227,
-      "y":2
-    },
-    {
-      "x":228,
-      "y":2
-    },
-    {
-      "x":229,
-      "y":2
-    },
-    {
-      "x":230,
-      "y":2
-    },
-    {
-      "x":231,
-      "y":2
-    },
-    {
-      "x":232,
-      "y":2
-    },
-    {
-      "x":233,
-      "y":2
-    },
-    {
-      "x":234,
-      "y":0
-    },
-    {
-      "x":235,
-      "y":0
-    },
-    {
-      "x":236,
-      "y":0
-    },
-    {
-      "x":237,
-      "y":0
-    },
-    {
-      "x":238,
-      "y":0
-    },
-    {
-      "x":239,
-      "y":0
-    },
-    {
-      "x":240,
-      "y":0
-    },
-    {
-      "x":241,
-      "y":0
-    },
-    {
-      "x":242,
-      "y":0
-    },
-    {
-      "x":243,
-      "y":0
-    },
-    {
-      "x":244,
-      "y":0
-    },
-    {
-      "x":245,
-      "y":0
-    },
-    {
-      "x":246,
-      "y":0
-    },
-    {
-      "x":247,
-      "y":0
-    },
-    {
-      "x":248,
-      "y":0
-    },
-    {
-      "x":249,
-      "y":0
-    },
-    {
-      "x":250,
-      "y":0
-    },
-    {
-      "x":251,
-      "y":0
-    },
-    {
-      "x":252,
-      "y":0
-    },
-    {
-      "x":253,
-      "y":0
-    },
-    {
-      "x":254,
-      "y":0
-    },
-    {
-      "x":255,
-      "y":0
-    },
-    {
-      "x":256,
-      "y":0
-    },
-    {
-      "x":257,
-      "y":0
-    },
-    {
-      "x":258,
-      "y":0
-    },
-    {
-      "x":259,
-      "y":0
-    },
-    {
-      "x":260,
-      "y":0
-    },
-    {
-      "x":261,
-      "y":0
-    },
-    {
-      "x":262,
-      "y":0
-    },
-    {
-      "x":263,
-      "y":0
-    },
-    {
-      "x":264,
-      "y":0
-    },
-    {
-      "x":265,
-      "y":0
-    },
-    {
-      "x":266,
-      "y":0
-    },
-    {
-      "x":267,
-      "y":0
-    },
-    {
-      "x":268,
-      "y":0
-    },
-    {
-      "x":269,
-      "y":0
-    },
-    {
-      "x":270,
-      "y":0
-    },
-    {
-      "x":271,
-      "y":0
-    },
-    {
-      "x":272,
-      "y":0
-    },
-    {
-      "x":273,
-      "y":0
-    },
-    {
-      "x":274,
-      "y":0
-    },
-    {
-      "x":275,
-      "y":0
-    },
-    {
-      "x":276,
-      "y":0
-    },
-    {
-      "x":277,
-      "y":0
-    },
-    {
-      "x":278,
-      "y":0
-    },
-    {
-      "x":279,
-      "y":0
-    },
-    {
-      "x":280,
-      "y":0
-    },
-    {
-      "x":281,
-      "y":0
-    },
-    {
-      "x":282,
-      "y":0
-    },
-    {
-      "x":283,
-      "y":0
-    },
-    {
-      "x":284,
-      "y":0
-    },
-    {
-      "x":285,
-      "y":0
-    },
-    {
-      "x":286,
-      "y":0
-    },
-    {
-      "x":287,
-      "y":0
-    },
-    {
-      "x":288,
-      "y":0
-    },
-    {
-      "x":289,
-      "y":0
-    },
-    {
-      "x":290,
-      "y":0
-    },
-    {
-      "x":291,
-      "y":0
-    },
-    {
-      "x":292,
-      "y":0
-    },
-    {
-      "x":293,
-      "y":0
-    },
-    {
-      "x":294,
-      "y":0
-    },
-    {
-      "x":295,
-      "y":0
-    },
-    {
-      "x":296,
-      "y":0
-    },
-    {
-      "x":297,
-      "y":0
-    },
-    {
-      "x":298,
-      "y":0
-    },
-    {
-      "x":299,
-      "y":0
-    },
-    {
-      "x":300,
-      "y":0
-    },
-    {
-      "x":301,
-      "y":0
-    },
-    {
-      "x":302,
-      "y":0
-    },
-    {
-      "x":303,
-      "y":0
-    },
-    {
-      "x":304,
-      "y":0
-    },
-    {
-      "x":305,
-      "y":0
-    },
-    {
-      "x":306,
-      "y":0
-    },
-    {
-      "x":307,
-      "y":0
-    },
-    {
-      "x":308,
-      "y":0
-    },
-    {
-      "x":309,
-      "y":0
-    },
-    {
-      "x":310,
-      "y":0
-    },
-    {
-      "x":311,
-      "y":0
-    },
-    {
-      "x":312,
-      "y":0
-    },
-    {
-      "x":313,
-      "y":0
-    },
-    {
-      "x":314,
-      "y":0
-    },
-    {
-      "x":315,
-      "y":0
-    },
-    {
-      "x":316,
-      "y":0
-    },
-    {
-      "x":317,
-      "y":0
-    },
-    {
-      "x":318,
-      "y":0
-    },
-    {
-      "x":319,
-      "y":0
-    },
-    {
-      "x":320,
-      "y":0
-    },
-    {
-      "x":321,
-      "y":0
-    },
-    {
-      "x":322,
-      "y":0
-    },
-    {
-      "x":323,
-      "y":0
-    },
-    {
-      "x":324,
-      "y":0
-    },
-    {
-      "x":325,
-      "y":0
-    },
-    {
-      "x":326,
-      "y":0
-    },
-    {
-      "x":327,
-      "y":0
-    },
-    {
-      "x":328,
-      "y":0
-    },
-    {
-      "x":329,
-      "y":0
-    },
-    {
-      "x":330,
-      "y":0
-    },
-    {
-      "x":331,
-      "y":0
-    },
-    {
-      "x":332,
-      "y":0
-    },
-    {
-      "x":333,
-      "y":0
-    },
-    {
-      "x":334,
-      "y":0
-    },
-    {
-      "x":335,
-      "y":0
-    },
-    {
-      "x":336,
-      "y":0
-    },
-    {
-      "x":337,
-      "y":0
-    },
-    {
-      "x":338,
-      "y":0
-    },
-    {
-      "x":339,
-      "y":0
-    },
-    {
-      "x":340,
-      "y":0
-    },
-    {
-      "x":341,
-      "y":0
-    },
-    {
-      "x":342,
-      "y":0
-    },
-    {
-      "x":343,
-      "y":0
-    },
-    {
-      "x":344,
-      "y":0
-    },
-    {
-      "x":345,
-      "y":0
-    },
-    {
-      "x":346,
-      "y":0
-    },
-    {
-      "x":347,
-      "y":0
-    },
-    {
-      "x":348,
-      "y":0
-    },
-    {
-      "x":349,
-      "y":0
-    },
-    {
-      "x":350,
-      "y":0
-    },
-    {
-      "x":351,
-      "y":0
-    },
-    {
-      "x":352,
-      "y":0
-    },
-    {
-      "x":353,
-      "y":0
-    },
-    {
-      "x":354,
-      "y":0
-    },
-    {
-      "x":355,
-      "y":0
-    },
-    {
-      "x":356,
-      "y":0
-    },
-    {
-      "x":357,
-      "y":0
-    },
-    {
-      "x":358,
-      "y":0
-    },
-    {
-      "x":359,
-      "y":0
-    },
-    {
-      "x":360,
-      "y":0
-    },
-    {
-      "x":361,
-      "y":0
-    },
-    {
-      "x":362,
-      "y":0
-    },
-    {
-      "x":363,
-      "y":0
-    },
-    {
-      "x":364,
-      "y":0
-    },
-    {
-      "x":365,
-      "y":0
-    },
-    {
-      "x":366,
-      "y":0
-    },
-    {
-      "x":367,
-      "y":0
-    },
-    {
-      "x":368,
-      "y":0
-    },
-    {
-      "x":369,
-      "y":0
-    },
-    {
-      "x":370,
-      "y":0
-    },
-    {
-      "x":371,
-      "y":0
-    },
-    {
-      "x":372,
-      "y":0
-    },
-    {
-      "x":373,
-      "y":0
-    },
-    {
-      "x":374,
-      "y":0
-    },
-    {
-      "x":375,
-      "y":0
-    },
-    {
-      "x":376,
-      "y":0
-    },
-    {
-      "x":377,
-      "y":0
-    },
-    {
-      "x":378,
-      "y":0
-    },
-    {
-      "x":379,
-      "y":0
-    },
-    {
-      "x":380,
-      "y":0
-    },
-    {
-      "x":381,
-      "y":0
-    },
-    {
-      "x":382,
-      "y":0
-    },
-    {
-      "x":383,
-      "y":0
-    },
-    {
-      "x":384,
-      "y":0
-    },
-    {
-      "x":385,
-      "y":0
-    },
-    {
-      "x":386,
-      "y":0
-    },
-    {
-      "x":387,
-      "y":0
-    },
-    {
-      "x":388,
-      "y":0
-    },
-    {
-      "x":389,
-      "y":0
-    },
-    {
-      "x":390,
-      "y":0
-    },
-    {
-      "x":391,
-      "y":0
-    },
-    {
-      "x":392,
-      "y":0
-    },
-    {
-      "x":393,
-      "y":0
-    },
-    {
-      "x":394,
-      "y":0
-    },
-    {
-      "x":395,
-      "y":0
-    },
-    {
-      "x":396,
-      "y":0
-    },
-    {
-      "x":397,
-      "y":0
-    },
-    {
-      "x":398,
-      "y":0
-    },
-    {
-      "x":399,
-      "y":0
-    },
-    {
-      "x":400,
-      "y":0
-    },
-    {
-      "x":401,
-      "y":0
-    },
-    {
-      "x":402,
-      "y":0
-    },
-    {
-      "x":403,
-      "y":0
-    },
-    {
-      "x":404,
-      "y":0
-    },
-    {
-      "x":405,
-      "y":0
-    },
-    {
-      "x":406,
-      "y":0
-    },
-    {
-      "x":407,
-      "y":0
-    },
-    {
-      "x":408,
-      "y":0
-    },
-    {
-      "x":409,
-      "y":0
-    },
-    {
-      "x":410,
-      "y":0
-    },
-    {
-      "x":411,
-      "y":0
-    },
-    {
-      "x":412,
-      "y":0
-    },
-    {
-      "x":413,
-      "y":0
-    },
-    {
-      "x":414,
-      "y":0
-    },
-    {
-      "x":415,
-      "y":0
-    },
-    {
-      "x":416,
-      "y":0
-    },
-    {
-      "x":417,
-      "y":0
-    },
-    {
-      "x":418,
-      "y":0
-    },
-    {
-      "x":419,
-      "y":0
-    },
-    {
-      "x":420,
-      "y":0
-    },
-    {
-      "x":421,
-      "y":0
-    },
-    {
-      "x":422,
-      "y":0
-    },
-    {
-      "x":423,
-      "y":0
-    },
-    {
-      "x":424,
-      "y":0
-    },
-    {
-      "x":425,
-      "y":0
-    },
-    {
-      "x":426,
-      "y":0
-    },
-    {
-      "x":427,
-      "y":0
-    },
-    {
-      "x":428,
-      "y":0
-    },
-    {
-      "x":429,
-      "y":0
-    },
-    {
-      "x":430,
-      "y":0
-    },
-    {
-      "x":431,
-      "y":0
-    },
-    {
-      "x":432,
-      "y":0
-    },
-    {
-      "x":433,
-      "y":0
-    },
-    {
-      "x":434,
-      "y":0
-    },
-    {
-      "x":435,
-      "y":0
-    },
-    {
-      "x":436,
-      "y":0
-    },
-    {
-      "x":437,
-      "y":0
-    },
-    {
-      "x":438,
-      "y":0
-    },
-    {
-      "x":439,
-      "y":0
-    },
-    {
-      "x":440,
-      "y":0
-    },
-    {
-      "x":441,
-      "y":0
-    },
-    {
-      "x":442,
-      "y":0
-    },
-    {
-      "x":443,
-      "y":0
-    },
-    {
-      "x":444,
-      "y":0
-    },
-    {
-      "x":445,
-      "y":0
-    },
-    {
-      "x":446,
-      "y":0
-    },
-    {
-      "x":447,
-      "y":0
-    },
-    {
-      "x":448,
-      "y":0
-    },
-    {
-      "x":449,
-      "y":0
-    },
-    {
-      "x":450,
-      "y":0
-    },
-    {
-      "x":451,
-      "y":0
-    },
-    {
-      "x":452,
-      "y":0
-    },
-    {
-      "x":453,
-      "y":0
-    },
-    {
-      "x":454,
-      "y":0
-    },
-    {
-      "x":455,
-      "y":0
-    },
-    {
-      "x":456,
-      "y":0
-    },
-    {
-      "x":457,
-      "y":0
-    },
-    {
-      "x":458,
-      "y":0
-    },
-    {
-      "x":459,
-      "y":0
-    },
-    {
-      "x":460,
-      "y":0
-    },
-    {
-      "x":461,
-      "y":0
-    },
-    {
-      "x":462,
-      "y":0
-    },
-    {
-      "x":463,
-      "y":0
-    },
-    {
-      "x":464,
-      "y":0
-    },
-    {
-      "x":465,
-      "y":0
-    },
-    {
-      "x":466,
-      "y":0
-    },
-    {
-      "x":467,
-      "y":0
-    },
-    {
-      "x":468,
-      "y":0
-    },
-    {
-      "x":469,
-      "y":0
-    },
-    {
-      "x":470,
-      "y":0
-    },
-    {
-      "x":471,
-      "y":0
-    },
-    {
-      "x":472,
-      "y":0
-    },
-    {
-      "x":473,
-      "y":0
-    },
-    {
-      "x":474,
-      "y":0
-    },
-    {
-      "x":475,
-      "y":0
-    },
-    {
-      "x":476,
-      "y":0
-    },
-    {
-      "x":477,
-      "y":0
-    },
-    {
-      "x":478,
-      "y":0
-    },
-    {
-      "x":479,
-      "y":0
-    },
-    {
-      "x":480,
-      "y":0
-    },
-    {
-      "x":481,
-      "y":0
-    },
-    {
-      "x":482,
-      "y":0
-    },
-    {
-      "x":483,
-      "y":0
-    },
-    {
-      "x":484,
-      "y":0
-    },
-    {
-      "x":485,
-      "y":0
-    },
-    {
-      "x":486,
-      "y":0
-    },
-    {
-      "x":487,
-      "y":0
-    },
-    {
-      "x":488,
-      "y":0
-    },
-    {
-      "x":489,
-      "y":0
-    },
-    {
-      "x":490,
-      "y":0
-    },
-    {
-      "x":491,
-      "y":0
-    },
-    {
-      "x":492,
-      "y":0
-    },
-    {
-      "x":493,
-      "y":0
-    },
-    {
-      "x":494,
-      "y":0
-    },
-    {
-      "x":495,
-      "y":0
-    },
-    {
-      "x":496,
-      "y":0
-    },
-    {
-      "x":497,
-      "y":0
-    },
-    {
-      "x":498,
-      "y":0
-    },
-    {
-      "x":499,
-      "y":0
-    }
-  ],
-  [
-    {
-      "x":0,
-      "y":0
-    },
-    {
-      "x":1,
-      "y":0
-    },
-    {
-      "x":2,
-      "y":0
-    },
-    {
-      "x":3,
-      "y":0
-    },
-    {
-      "x":4,
-      "y":0
-    },
-    {
-      "x":5,
-      "y":0
-    },
-    {
-      "x":6,
-      "y":0
-    },
-    {
-      "x":7,
-      "y":0
-    },
-    {
-      "x":8,
-      "y":0
-    },
-    {
-      "x":9,
-      "y":0
-    },
-    {
-      "x":10,
-      "y":0
-    },
-    {
-      "x":11,
-      "y":0
-    },
-    {
-      "x":12,
-      "y":0
-    },
-    {
-      "x":13,
-      "y":0
-    },
-    {
-      "x":14,
-      "y":0
-    },
-    {
-      "x":15,
-      "y":0
-    },
-    {
-      "x":16,
-      "y":0
-    },
-    {
-      "x":17,
-      "y":0
-    },
-    {
-      "x":18,
-      "y":0
-    },
-    {
-      "x":19,
-      "y":0
-    },
-    {
-      "x":20,
-      "y":0
-    },
-    {
-      "x":21,
-      "y":0
-    },
-    {
-      "x":22,
-      "y":0
-    },
-    {
-      "x":23,
-      "y":0
-    },
-    {
-      "x":24,
-      "y":0
-    },
-    {
-      "x":25,
-      "y":0
-    },
-    {
-      "x":26,
-      "y":0
-    },
-    {
-      "x":27,
-      "y":0
-    },
-    {
-      "x":28,
-      "y":0
-    },
-    {
-      "x":29,
-      "y":0
-    },
-    {
-      "x":30,
-      "y":0
-    },
-    {
-      "x":31,
-      "y":0
-    },
-    {
-      "x":32,
-      "y":0
-    },
-    {
-      "x":33,
-      "y":0
-    },
-    {
-      "x":34,
-      "y":0
-    },
-    {
-      "x":35,
-      "y":0
-    },
-    {
-      "x":36,
-      "y":0
-    },
-    {
-      "x":37,
-      "y":0
-    },
-    {
-      "x":38,
-      "y":0
-    },
-    {
-      "x":39,
-      "y":0
-    },
-    {
-      "x":40,
-      "y":0
-    },
-    {
-      "x":41,
-      "y":0
-    },
-    {
-      "x":42,
-      "y":0
-    },
-    {
-      "x":43,
-      "y":0
-    },
-    {
-      "x":44,
-      "y":0
-    },
-    {
-      "x":45,
-      "y":0
-    },
-    {
-      "x":46,
-      "y":0
-    },
-    {
-      "x":47,
-      "y":0
-    },
-    {
-      "x":48,
-      "y":0
-    },
-    {
-      "x":49,
-      "y":0
-    },
-    {
-      "x":50,
-      "y":0
-    },
-    {
-      "x":51,
-      "y":0
-    },
-    {
-      "x":52,
-      "y":0
-    },
-    {
-      "x":53,
-      "y":0
-    },
-    {
-      "x":54,
-      "y":0
-    },
-    {
-      "x":55,
-      "y":0
-    },
-    {
-      "x":56,
-      "y":0
-    },
-    {
-      "x":57,
-      "y":0
-    },
-    {
-      "x":58,
-      "y":0
-    },
-    {
-      "x":59,
-      "y":0
-    },
-    {
-      "x":60,
-      "y":0
-    },
-    {
-      "x":61,
-      "y":0
-    },
-    {
-      "x":62,
-      "y":0
-    },
-    {
-      "x":63,
-      "y":0
-    },
-    {
-      "x":64,
-      "y":0
-    },
-    {
-      "x":65,
-      "y":0
-    },
-    {
-      "x":66,
-      "y":0
-    },
-    {
-      "x":67,
-      "y":0
-    },
-    {
-      "x":68,
-      "y":0
-    },
-    {
-      "x":69,
-      "y":0
-    },
-    {
-      "x":70,
-      "y":0
-    },
-    {
-      "x":71,
-      "y":0
-    },
-    {
-      "x":72,
-      "y":0
-    },
-    {
-      "x":73,
-      "y":0
-    },
-    {
-      "x":74,
-      "y":0
-    },
-    {
-      "x":75,
-      "y":0
-    },
-    {
-      "x":76,
-      "y":0
-    },
-    {
-      "x":77,
-      "y":0
-    },
-    {
-      "x":78,
-      "y":0
-    },
-    {
-      "x":79,
-      "y":0
-    },
-    {
-      "x":80,
-      "y":0
-    },
-    {
-      "x":81,
-      "y":0
-    },
-    {
-      "x":82,
-      "y":0
-    },
-    {
-      "x":83,
-      "y":0
-    },
-    {
-      "x":84,
-      "y":0
-    },
-    {
-      "x":85,
-      "y":0
-    },
-    {
-      "x":86,
-      "y":0
-    },
-    {
-      "x":87,
-      "y":0
-    },
-    {
-      "x":88,
-      "y":0
-    },
-    {
-      "x":89,
-      "y":0
-    },
-    {
-      "x":90,
-      "y":0
-    },
-    {
-      "x":91,
-      "y":0
-    },
-    {
-      "x":92,
-      "y":0
-    },
-    {
-      "x":93,
-      "y":0
-    },
-    {
-      "x":94,
-      "y":0
-    },
-    {
-      "x":95,
-      "y":0
-    },
-    {
-      "x":96,
-      "y":0
-    },
-    {
-      "x":97,
-      "y":0
-    },
-    {
-      "x":98,
-      "y":0
-    },
-    {
-      "x":99,
-      "y":0
-    },
-    {
-      "x":100,
-      "y":0
-    },
-    {
-      "x":101,
-      "y":0
-    },
-    {
-      "x":102,
-      "y":0
-    },
-    {
-      "x":103,
-      "y":0
-    },
-    {
-      "x":104,
-      "y":0
-    },
-    {
-      "x":105,
-      "y":0
-    },
-    {
-      "x":106,
-      "y":0
-    },
-    {
-      "x":107,
-      "y":0
-    },
-    {
-      "x":108,
-      "y":0
-    },
-    {
-      "x":109,
-      "y":0
-    },
-    {
-      "x":110,
-      "y":0
-    },
-    {
-      "x":111,
-      "y":0
-    },
-    {
-      "x":112,
-      "y":0
-    },
-    {
-      "x":113,
-      "y":0
-    },
-    {
-      "x":114,
-      "y":0
-    },
-    {
-      "x":115,
-      "y":0
-    },
-    {
-      "x":116,
-      "y":0
-    },
-    {
-      "x":117,
-      "y":0
-    },
-    {
-      "x":118,
-      "y":0
-    },
-    {
-      "x":119,
-      "y":0
-    },
-    {
-      "x":120,
-      "y":0
-    },
-    {
-      "x":121,
-      "y":0
-    },
-    {
-      "x":122,
-      "y":0
-    },
-    {
-      "x":123,
-      "y":0
-    },
-    {
-      "x":124,
-      "y":0
-    },
-    {
-      "x":125,
-      "y":0
-    },
-    {
-      "x":126,
-      "y":0
-    },
-    {
-      "x":127,
-      "y":0
-    },
-    {
-      "x":128,
-      "y":0
-    },
-    {
-      "x":129,
-      "y":0
-    },
-    {
-      "x":130,
-      "y":0
-    },
-    {
-      "x":131,
-      "y":0
-    },
-    {
-      "x":132,
-      "y":0
-    },
-    {
-      "x":133,
-      "y":0
-    },
-    {
-      "x":134,
-      "y":0
-    },
-    {
-      "x":135,
-      "y":0
-    },
-    {
-      "x":136,
-      "y":0
-    },
-    {
-      "x":137,
-      "y":0
-    },
-    {
-      "x":138,
-      "y":0
-    },
-    {
-      "x":139,
-      "y":0
-    },
-    {
-      "x":140,
-      "y":0
-    },
-    {
-      "x":141,
-      "y":0
-    },
-    {
-      "x":142,
-      "y":0
-    },
-    {
-      "x":143,
-      "y":0
-    },
-    {
-      "x":144,
-      "y":0
-    },
-    {
-      "x":145,
-      "y":0
-    },
-    {
-      "x":146,
-      "y":0
-    },
-    {
-      "x":147,
-      "y":0
-    },
-    {
-      "x":148,
-      "y":0
-    },
-    {
-      "x":149,
-      "y":0
-    },
-    {
-      "x":150,
-      "y":0
-    },
-    {
-      "x":151,
-      "y":0
-    },
-    {
-      "x":152,
-      "y":0
-    },
-    {
-      "x":153,
-      "y":0
-    },
-    {
-      "x":154,
-      "y":0
-    },
-    {
-      "x":155,
-      "y":0
-    },
-    {
-      "x":156,
-      "y":0
-    },
-    {
-      "x":157,
-      "y":0
-    },
-    {
-      "x":158,
-      "y":0
-    },
-    {
-      "x":159,
-      "y":0
-    },
-    {
-      "x":160,
-      "y":0
-    },
-    {
-      "x":161,
-      "y":0
-    },
-    {
-      "x":162,
-      "y":0
-    },
-    {
-      "x":163,
-      "y":0
-    },
-    {
-      "x":164,
-      "y":0
-    },
-    {
-      "x":165,
-      "y":0
-    },
-    {
-      "x":166,
-      "y":0
-    },
-    {
-      "x":167,
-      "y":0
-    },
-    {
-      "x":168,
-      "y":0
-    },
-    {
-      "x":169,
-      "y":0
-    },
-    {
-      "x":170,
-      "y":0
-    },
-    {
-      "x":171,
-      "y":0
-    },
-    {
-      "x":172,
-      "y":0
-    },
-    {
-      "x":173,
-      "y":0
-    },
-    {
-      "x":174,
-      "y":0
-    },
-    {
-      "x":175,
-      "y":0
-    },
-    {
-      "x":176,
-      "y":0
-    },
-    {
-      "x":177,
-      "y":0
-    },
-    {
-      "x":178,
-      "y":0
-    },
-    {
-      "x":179,
-      "y":0
-    },
-    {
-      "x":180,
-      "y":0
-    },
-    {
-      "x":181,
-      "y":0
-    },
-    {
-      "x":182,
-      "y":0
-    },
-    {
-      "x":183,
-      "y":0
-    },
-    {
-      "x":184,
-      "y":0
-    },
-    {
-      "x":185,
-      "y":0
-    },
-    {
-      "x":186,
-      "y":0
-    },
-    {
-      "x":187,
-      "y":0
-    },
-    {
-      "x":188,
-      "y":0
-    },
-    {
-      "x":189,
-      "y":0
-    },
-    {
-      "x":190,
-      "y":0
-    },
-    {
-      "x":191,
-      "y":0
-    },
-    {
-      "x":192,
-      "y":0
-    },
-    {
-      "x":193,
-      "y":0
-    },
-    {
-      "x":194,
-      "y":0
-    },
-    {
-      "x":195,
-      "y":0
-    },
-    {
-      "x":196,
-      "y":0
-    },
-    {
-      "x":197,
-      "y":0
-    },
-    {
-      "x":198,
-      "y":0
-    },
-    {
-      "x":199,
-      "y":0
-    },
-    {
-      "x":200,
-      "y":0
-    },
-    {
-      "x":201,
-      "y":0
-    },
-    {
-      "x":202,
-      "y":0
-    },
-    {
-      "x":203,
-      "y":0
-    },
-    {
-      "x":204,
-      "y":0
-    },
-    {
-      "x":205,
-      "y":0
-    },
-    {
-      "x":206,
-      "y":0
-    },
-    {
-      "x":207,
-      "y":0
-    },
-    {
-      "x":208,
-      "y":0
-    },
-    {
-      "x":209,
-      "y":0
-    },
-    {
-      "x":210,
-      "y":0
-    },
-    {
-      "x":211,
-      "y":0
-    },
-    {
-      "x":212,
-      "y":0
-    },
-    {
-      "x":213,
-      "y":0
-    },
-    {
-      "x":214,
-      "y":0
-    },
-    {
-      "x":215,
-      "y":0
-    },
-    {
-      "x":216,
-      "y":0
-    },
-    {
-      "x":217,
-      "y":0
-    },
-    {
-      "x":218,
-      "y":0
-    },
-    {
-      "x":219,
-      "y":0
-    },
-    {
-      "x":220,
-      "y":0
-    },
-    {
-      "x":221,
-      "y":0
-    },
-    {
-      "x":222,
-      "y":0
-    },
-    {
-      "x":223,
-      "y":0
-    },
-    {
-      "x":224,
-      "y":0
-    },
-    {
-      "x":225,
-      "y":0
-    },
-    {
-      "x":226,
-      "y":0
-    },
-    {
-      "x":227,
-      "y":0
-    },
-    {
-      "x":228,
-      "y":0
-    },
-    {
-      "x":229,
-      "y":0
-    },
-    {
-      "x":230,
-      "y":0
-    },
-    {
-      "x":231,
-      "y":0
-    },
-    {
-      "x":232,
-      "y":0
-    },
-    {
-      "x":233,
-      "y":0
-    },
-    {
-      "x":234,
-      "y":0
-    },
-    {
-      "x":235,
-      "y":0
-    },
-    {
-      "x":236,
-      "y":0
-    },
-    {
-      "x":237,
-      "y":0
-    },
-    {
-      "x":238,
-      "y":0
-    },
-    {
-      "x":239,
-      "y":0
-    },
-    {
-      "x":240,
-      "y":0
-    },
-    {
-      "x":241,
-      "y":0
-    },
-    {
-      "x":242,
-      "y":0
-    },
-    {
-      "x":243,
-      "y":0
-    },
-    {
-      "x":244,
-      "y":0
-    },
-    {
-      "x":245,
-      "y":0
-    },
-    {
-      "x":246,
-      "y":0
-    },
-    {
-      "x":247,
-      "y":0
-    },
-    {
-      "x":248,
-      "y":0
-    },
-    {
-      "x":249,
-      "y":0
-    },
-    {
-      "x":250,
-      "y":0
-    },
-    {
-      "x":251,
-      "y":0
-    },
-    {
-      "x":252,
-      "y":0
-    },
-    {
-      "x":253,
-      "y":0
-    },
-    {
-      "x":254,
-      "y":0
-    },
-    {
-      "x":255,
-      "y":0
-    },
-    {
-      "x":256,
-      "y":0
-    },
-    {
-      "x":257,
-      "y":0
-    },
-    {
-      "x":258,
-      "y":0
-    },
-    {
-      "x":259,
-      "y":0
-    },
-    {
-      "x":260,
-      "y":0
-    },
-    {
-      "x":261,
-      "y":0
-    },
-    {
-      "x":262,
-      "y":1
-    },
-    {
-      "x":263,
-      "y":1
-    },
-    {
-      "x":264,
-      "y":1
-    },
-    {
-      "x":265,
-      "y":1
-    },
-    {
-      "x":266,
-      "y":1
-    },
-    {
-      "x":267,
-      "y":1
-    },
-    {
-      "x":268,
-      "y":1
-    },
-    {
-      "x":269,
-      "y":1
-    },
-    {
-      "x":270,
-      "y":1
-    },
-    {
-      "x":271,
-      "y":1
-    },
-    {
-      "x":272,
-      "y":1
-    },
-    {
-      "x":273,
-      "y":1
-    },
-    {
-      "x":274,
-      "y":1
-    },
-    {
-      "x":275,
-      "y":1
-    },
-    {
-      "x":276,
-      "y":1
-    },
-    {
-      "x":277,
-      "y":1
-    },
-    {
-      "x":278,
-      "y":1
-    },
-    {
-      "x":279,
-      "y":1
-    },
-    {
-      "x":280,
-      "y":1
-    },
-    {
-      "x":281,
-      "y":1
-    },
-    {
-      "x":282,
-      "y":1
-    },
-    {
-      "x":283,
-      "y":1
-    },
-    {
-      "x":284,
-      "y":1
-    },
-    {
-      "x":285,
-      "y":1
-    },
-    {
-      "x":286,
-      "y":1
-    },
-    {
-      "x":287,
-      "y":1
-    },
-    {
-      "x":288,
-      "y":1
-    },
-    {
-      "x":289,
-      "y":1
-    },
-    {
-      "x":290,
-      "y":1
-    },
-    {
-      "x":291,
-      "y":1
-    },
-    {
-      "x":292,
-      "y":1
-    },
-    {
-      "x":293,
-      "y":1
-    },
-    {
-      "x":294,
-      "y":1
-    },
-    {
-      "x":295,
-      "y":1
-    },
-    {
-      "x":296,
-      "y":1
-    },
-    {
-      "x":297,
-      "y":1
-    },
-    {
-      "x":298,
-      "y":1
-    },
-    {
-      "x":299,
-      "y":1
-    },
-    {
-      "x":300,
-      "y":1
-    },
-    {
-      "x":301,
-      "y":1
-    },
-    {
-      "x":302,
-      "y":1
-    },
-    {
-      "x":303,
-      "y":1
-    },
-    {
-      "x":304,
-      "y":1
-    },
-    {
-      "x":305,
-      "y":1
-    },
-    {
-      "x":306,
-      "y":1
-    },
-    {
-      "x":307,
-      "y":1
-    },
-    {
-      "x":308,
-      "y":1
-    },
-    {
-      "x":309,
-      "y":1
-    },
-    {
-      "x":310,
-      "y":1
-    },
-    {
-      "x":311,
-      "y":1
-    },
-    {
-      "x":312,
-      "y":1
-    },
-    {
-      "x":313,
-      "y":1
-    },
-    {
-      "x":314,
-      "y":1
-    },
-    {
-      "x":315,
-      "y":1
-    },
-    {
-      "x":316,
-      "y":1
-    },
-    {
-      "x":317,
-      "y":1
-    },
-    {
-      "x":318,
-      "y":1
-    },
-    {
-      "x":319,
-      "y":1
-    },
-    {
-      "x":320,
-      "y":1
-    },
-    {
-      "x":321,
-      "y":1
-    },
-    {
-      "x":322,
-      "y":1
-    },
-    {
-      "x":323,
-      "y":1
-    },
-    {
-      "x":324,
-      "y":1
-    },
-    {
-      "x":325,
-      "y":1
-    },
-    {
-      "x":326,
-      "y":1
-    },
-    {
-      "x":327,
-      "y":1
-    },
-    {
-      "x":328,
-      "y":1
-    },
-    {
-      "x":329,
-      "y":1
-    },
-    {
-      "x":330,
-      "y":1
-    },
-    {
-      "x":331,
-      "y":1
-    },
-    {
-      "x":332,
-      "y":1
-    },
-    {
-      "x":333,
-      "y":1
-    },
-    {
-      "x":334,
-      "y":1
-    },
-    {
-      "x":335,
-      "y":1
-    },
-    {
-      "x":336,
-      "y":1
-    },
-    {
-      "x":337,
-      "y":1
-    },
-    {
-      "x":338,
-      "y":1
-    },
-    {
-      "x":339,
-      "y":1
-    },
-    {
-      "x":340,
-      "y":1
-    },
-    {
-      "x":341,
-      "y":1
-    },
-    {
-      "x":342,
-      "y":1
-    },
-    {
-      "x":343,
-      "y":1
-    },
-    {
-      "x":344,
-      "y":1
-    },
-    {
-      "x":345,
-      "y":1
-    },
-    {
-      "x":346,
-      "y":1
-    },
-    {
-      "x":347,
-      "y":1
-    },
-    {
-      "x":348,
-      "y":1
-    },
-    {
-      "x":349,
-      "y":1
-    },
-    {
-      "x":350,
-      "y":1
-    },
-    {
-      "x":351,
-      "y":1
-    },
-    {
-      "x":352,
-      "y":1
-    },
-    {
-      "x":353,
-      "y":1
-    },
-    {
-      "x":354,
-      "y":1
-    },
-    {
-      "x":355,
-      "y":1
-    },
-    {
-      "x":356,
-      "y":1
-    },
-    {
-      "x":357,
-      "y":1
-    },
-    {
-      "x":358,
-      "y":1
-    },
-    {
-      "x":359,
-      "y":1
-    },
-    {
-      "x":360,
-      "y":1
-    },
-    {
-      "x":361,
-      "y":1
-    },
-    {
-      "x":362,
-      "y":1
-    },
-    {
-      "x":363,
-      "y":1
-    },
-    {
-      "x":364,
-      "y":1
-    },
-    {
-      "x":365,
-      "y":1
-    },
-    {
-      "x":366,
-      "y":1
-    },
-    {
-      "x":367,
-      "y":1
-    },
-    {
-      "x":368,
-      "y":1
-    },
-    {
-      "x":369,
-      "y":1
-    },
-    {
-      "x":370,
-      "y":1
-    },
-    {
-      "x":371,
-      "y":1
-    },
-    {
-      "x":372,
-      "y":1
-    },
-    {
-      "x":373,
-      "y":1
-    },
-    {
-      "x":374,
-      "y":1
-    },
-    {
-      "x":375,
-      "y":0
-    },
-    {
-      "x":376,
-      "y":0
-    },
-    {
-      "x":377,
-      "y":0
-    },
-    {
-      "x":378,
-      "y":0
-    },
-    {
-      "x":379,
-      "y":0
-    },
-    {
-      "x":380,
-      "y":0
-    },
-    {
-      "x":381,
-      "y":0
-    },
-    {
-      "x":382,
-      "y":0
-    },
-    {
-      "x":383,
-      "y":0
-    },
-    {
-      "x":384,
-      "y":0
-    },
-    {
-      "x":385,
-      "y":0
-    },
-    {
-      "x":386,
-      "y":0
-    },
-    {
-      "x":387,
-      "y":0
-    },
-    {
-      "x":388,
-      "y":0
-    },
-    {
-      "x":389,
-      "y":0
-    },
-    {
-      "x":390,
-      "y":0
-    },
-    {
-      "x":391,
-      "y":0
-    },
-    {
-      "x":392,
-      "y":0
-    },
-    {
-      "x":393,
-      "y":0
-    },
-    {
-      "x":394,
-      "y":0
-    },
-    {
-      "x":395,
-      "y":0
-    },
-    {
-      "x":396,
-      "y":0
-    },
-    {
-      "x":397,
-      "y":0
-    },
-    {
-      "x":398,
-      "y":0
-    },
-    {
-      "x":399,
-      "y":0
-    },
-    {
-      "x":400,
-      "y":0
-    },
-    {
-      "x":401,
-      "y":0
-    },
-    {
-      "x":402,
-      "y":0
-    },
-    {
-      "x":403,
-      "y":0
-    },
-    {
-      "x":404,
-      "y":0
-    },
-    {
-      "x":405,
-      "y":0
-    },
-    {
-      "x":406,
-      "y":0
-    },
-    {
-      "x":407,
-      "y":0
-    },
-    {
-      "x":408,
-      "y":0
-    },
-    {
-      "x":409,
-      "y":0
-    },
-    {
-      "x":410,
-      "y":0
-    },
-    {
-      "x":411,
-      "y":0
-    },
-    {
-      "x":412,
-      "y":0
-    },
-    {
-      "x":413,
-      "y":0
-    },
-    {
-      "x":414,
-      "y":0
-    },
-    {
-      "x":415,
-      "y":0
-    },
-    {
-      "x":416,
-      "y":0
-    },
-    {
-      "x":417,
-      "y":0
-    },
-    {
-      "x":418,
-      "y":0
-    },
-    {
-      "x":419,
-      "y":0
-    },
-    {
-      "x":420,
-      "y":0
-    },
-    {
-      "x":421,
-      "y":0
-    },
-    {
-      "x":422,
-      "y":0
-    },
-    {
-      "x":423,
-      "y":0
-    },
-    {
-      "x":424,
-      "y":0
-    },
-    {
-      "x":425,
-      "y":0
-    },
-    {
-      "x":426,
-      "y":0
-    },
-    {
-      "x":427,
-      "y":0
-    },
-    {
-      "x":428,
-      "y":0
-    },
-    {
-      "x":429,
-      "y":0
-    },
-    {
-      "x":430,
-      "y":0
-    },
-    {
-      "x":431,
-      "y":0
-    },
-    {
-      "x":432,
-      "y":0
-    },
-    {
-      "x":433,
-      "y":0
-    },
-    {
-      "x":434,
-      "y":0
-    },
-    {
-      "x":435,
-      "y":0
-    },
-    {
-      "x":436,
-      "y":0
-    },
-    {
-      "x":437,
-      "y":0
-    },
-    {
-      "x":438,
-      "y":0
-    },
-    {
-      "x":439,
-      "y":0
-    },
-    {
-      "x":440,
-      "y":0
-    },
-    {
-      "x":441,
-      "y":0
-    },
-    {
-      "x":442,
-      "y":0
-    },
-    {
-      "x":443,
-      "y":0
-    },
-    {
-      "x":444,
-      "y":0
-    },
-    {
-      "x":445,
-      "y":0
-    },
-    {
-      "x":446,
-      "y":0
-    },
-    {
-      "x":447,
-      "y":0
-    },
-    {
-      "x":448,
-      "y":0
-    },
-    {
-      "x":449,
-      "y":0
-    },
-    {
-      "x":450,
-      "y":0
-    },
-    {
-      "x":451,
-      "y":0
-    },
-    {
-      "x":452,
-      "y":0
-    },
-    {
-      "x":453,
-      "y":0
-    },
-    {
-      "x":454,
-      "y":0
-    },
-    {
-      "x":455,
-      "y":0
-    },
-    {
-      "x":456,
-      "y":0
-    },
-    {
-      "x":457,
-      "y":0
-    },
-    {
-      "x":458,
-      "y":0
-    },
-    {
-      "x":459,
-      "y":0
-    },
-    {
-      "x":460,
-      "y":0
-    },
-    {
-      "x":461,
-      "y":0
-    },
-    {
-      "x":462,
-      "y":0
-    },
-    {
-      "x":463,
-      "y":0
-    },
-    {
-      "x":464,
-      "y":0
-    },
-    {
-      "x":465,
-      "y":0
-    },
-    {
-      "x":466,
-      "y":0
-    },
-    {
-      "x":467,
-      "y":0
-    },
-    {
-      "x":468,
-      "y":0
-    },
-    {
-      "x":469,
-      "y":0
-    },
-    {
-      "x":470,
-      "y":0
-    },
-    {
-      "x":471,
-      "y":0
-    },
-    {
-      "x":472,
-      "y":0
-    },
-    {
-      "x":473,
-      "y":0
-    },
-    {
-      "x":474,
-      "y":0
-    },
-    {
-      "x":475,
-      "y":0
-    },
-    {
-      "x":476,
-      "y":0
-    },
-    {
-      "x":477,
-      "y":0
-    },
-    {
-      "x":478,
-      "y":0
-    },
-    {
-      "x":479,
-      "y":0
-    },
-    {
-      "x":480,
-      "y":0
-    },
-    {
-      "x":481,
-      "y":0
-    },
-    {
-      "x":482,
-      "y":0
-    },
-    {
-      "x":483,
-      "y":0
-    },
-    {
-      "x":484,
-      "y":0
-    },
-    {
-      "x":485,
-      "y":0
-    },
-    {
-      "x":486,
-      "y":0
-    },
-    {
-      "x":487,
-      "y":0
-    },
-    {
-      "x":488,
-      "y":0
-    },
-    {
-      "x":489,
-      "y":0
-    },
-    {
-      "x":490,
-      "y":0
-    },
-    {
-      "x":491,
-      "y":0
-    },
-    {
-      "x":492,
-      "y":0
-    },
-    {
-      "x":493,
-      "y":0
-    },
-    {
-      "x":494,
-      "y":0
-    },
-    {
-      "x":495,
-      "y":0
-    },
-    {
-      "x":496,
-      "y":0
-    },
-    {
-      "x":497,
-      "y":0
-    },
-    {
-      "x":498,
-      "y":0
-    },
-    {
-      "x":499,
-      "y":0
-    }
-  ],
-  [
-    {
-      "x":0,
-      "y":0
-    },
-    {
-      "x":1,
-      "y":0
-    },
-    {
-      "x":2,
-      "y":0
-    },
-    {
-      "x":3,
-      "y":0
-    },
-    {
-      "x":4,
-      "y":0
-    },
-    {
-      "x":5,
-      "y":0
-    },
-    {
-      "x":6,
-      "y":0
-    },
-    {
-      "x":7,
-      "y":0
-    },
-    {
-      "x":8,
-      "y":0
-    },
-    {
-      "x":9,
-      "y":0
-    },
-    {
-      "x":10,
-      "y":0
-    },
-    {
-      "x":11,
-      "y":0
-    },
-    {
-      "x":12,
-      "y":0
-    },
-    {
-      "x":13,
-      "y":0
-    },
-    {
-      "x":14,
-      "y":0
-    },
-    {
-      "x":15,
-      "y":0
-    },
-    {
-      "x":16,
-      "y":0
-    },
-    {
-      "x":17,
-      "y":0
-    },
-    {
-      "x":18,
-      "y":0
-    },
-    {
-      "x":19,
-      "y":0
-    },
-    {
-      "x":20,
-      "y":0
-    },
-    {
-      "x":21,
-      "y":0
-    },
-    {
-      "x":22,
-      "y":0
-    },
-    {
-      "x":23,
-      "y":0
-    },
-    {
-      "x":24,
-      "y":0
-    },
-    {
-      "x":25,
-      "y":0
-    },
-    {
-      "x":26,
-      "y":0
-    },
-    {
-      "x":27,
-      "y":0
-    },
-    {
-      "x":28,
-      "y":0
-    },
-    {
-      "x":29,
-      "y":0
-    },
-    {
-      "x":30,
-      "y":0
-    },
-    {
-      "x":31,
-      "y":0
-    },
-    {
-      "x":32,
-      "y":0
-    },
-    {
-      "x":33,
-      "y":0
-    },
-    {
-      "x":34,
-      "y":0
-    },
-    {
-      "x":35,
-      "y":0
-    },
-    {
-      "x":36,
-      "y":0
-    },
-    {
-      "x":37,
-      "y":0
-    },
-    {
-      "x":38,
-      "y":0
-    },
-    {
-      "x":39,
-      "y":0
-    },
-    {
-      "x":40,
-      "y":0
-    },
-    {
-      "x":41,
-      "y":0
-    },
-    {
-      "x":42,
-      "y":0
-    },
-    {
-      "x":43,
-      "y":0
-    },
-    {
-      "x":44,
-      "y":0
-    },
-    {
-      "x":45,
-      "y":0
-    },
-    {
-      "x":46,
-      "y":0
-    },
-    {
-      "x":47,
-      "y":0
-    },
-    {
-      "x":48,
-      "y":0
-    },
-    {
-      "x":49,
-      "y":0
-    },
-    {
-      "x":50,
-      "y":0
-    },
-    {
-      "x":51,
-      "y":0
-    },
-    {
-      "x":52,
-      "y":0
-    },
-    {
-      "x":53,
-      "y":0
-    },
-    {
-      "x":54,
-      "y":0
-    },
-    {
-      "x":55,
-      "y":0
-    },
-    {
-      "x":56,
-      "y":0
-    },
-    {
-      "x":57,
-      "y":0
-    },
-    {
-      "x":58,
-      "y":0
-    },
-    {
-      "x":59,
-      "y":0
-    },
-    {
-      "x":60,
-      "y":0
-    },
-    {
-      "x":61,
-      "y":0
-    },
-    {
-      "x":62,
-      "y":0
-    },
-    {
-      "x":63,
-      "y":0
-    },
-    {
-      "x":64,
-      "y":0
-    },
-    {
-      "x":65,
-      "y":0
-    },
-    {
-      "x":66,
-      "y":0
-    },
-    {
-      "x":67,
-      "y":0
-    },
-    {
-      "x":68,
-      "y":0
-    },
-    {
-      "x":69,
-      "y":0
-    },
-    {
-      "x":70,
-      "y":0
-    },
-    {
-      "x":71,
-      "y":0
-    },
-    {
-      "x":72,
-      "y":0
-    },
-    {
-      "x":73,
-      "y":0
-    },
-    {
-      "x":74,
-      "y":0
-    },
-    {
-      "x":75,
-      "y":0
-    },
-    {
-      "x":76,
-      "y":0
-    },
-    {
-      "x":77,
-      "y":0
-    },
-    {
-      "x":78,
-      "y":0
-    },
-    {
-      "x":79,
-      "y":0
-    },
-    {
-      "x":80,
-      "y":0
-    },
-    {
-      "x":81,
-      "y":0
-    },
-    {
-      "x":82,
-      "y":0
-    },
-    {
-      "x":83,
-      "y":0
-    },
-    {
-      "x":84,
-      "y":0
-    },
-    {
-      "x":85,
-      "y":0
-    },
-    {
-      "x":86,
-      "y":0
-    },
-    {
-      "x":87,
-      "y":0
-    },
-    {
-      "x":88,
-      "y":0
-    },
-    {
-      "x":89,
-      "y":0
-    },
-    {
-      "x":90,
-      "y":0
-    },
-    {
-      "x":91,
-      "y":0
-    },
-    {
-      "x":92,
-      "y":0
-    },
-    {
-      "x":93,
-      "y":0
-    },
-    {
-      "x":94,
-      "y":0
-    },
-    {
-      "x":95,
-      "y":0
-    },
-    {
-      "x":96,
-      "y":0
-    },
-    {
-      "x":97,
-      "y":0
-    },
-    {
-      "x":98,
-      "y":0
-    },
-    {
-      "x":99,
-      "y":0
-    },
-    {
-      "x":100,
-      "y":0
-    },
-    {
-      "x":101,
-      "y":0
-    },
-    {
-      "x":102,
-      "y":0
-    },
-    {
-      "x":103,
-      "y":0
-    },
-    {
-      "x":104,
-      "y":0
-    },
-    {
-      "x":105,
-      "y":0
-    },
-    {
-      "x":106,
-      "y":0
-    },
-    {
-      "x":107,
-      "y":0
-    },
-    {
-      "x":108,
-      "y":0
-    },
-    {
-      "x":109,
-      "y":0
-    },
-    {
-      "x":110,
-      "y":0
-    },
-    {
-      "x":111,
-      "y":0
-    },
-    {
-      "x":112,
-      "y":0
-    },
-    {
-      "x":113,
-      "y":0
-    },
-    {
-      "x":114,
-      "y":0
-    },
-    {
-      "x":115,
-      "y":0
-    },
-    {
-      "x":116,
-      "y":0
-    },
-    {
-      "x":117,
-      "y":0
-    },
-    {
-      "x":118,
-      "y":0
-    },
-    {
-      "x":119,
-      "y":0
-    },
-    {
-      "x":120,
-      "y":0
-    },
-    {
-      "x":121,
-      "y":0
-    },
-    {
-      "x":122,
-      "y":0
-    },
-    {
-      "x":123,
-      "y":0
-    },
-    {
-      "x":124,
-      "y":0
-    },
-    {
-      "x":125,
-      "y":0
-    },
-    {
-      "x":126,
-      "y":0
-    },
-    {
-      "x":127,
-      "y":0
-    },
-    {
-      "x":128,
-      "y":0
-    },
-    {
-      "x":129,
-      "y":0
-    },
-    {
-      "x":130,
-      "y":0
-    },
-    {
-      "x":131,
-      "y":0
-    },
-    {
-      "x":132,
-      "y":0
-    },
-    {
-      "x":133,
-      "y":0
-    },
-    {
-      "x":134,
-      "y":0
-    },
-    {
-      "x":135,
-      "y":0
-    },
-    {
-      "x":136,
-      "y":0
-    },
-    {
-      "x":137,
-      "y":0
-    },
-    {
-      "x":138,
-      "y":0
-    },
-    {
-      "x":139,
-      "y":0
-    },
-    {
-      "x":140,
-      "y":0
-    },
-    {
-      "x":141,
-      "y":0
-    },
-    {
-      "x":142,
-      "y":0
-    },
-    {
-      "x":143,
-      "y":0
-    },
-    {
-      "x":144,
-      "y":0
-    },
-    {
-      "x":145,
-      "y":0
-    },
-    {
-      "x":146,
-      "y":0
-    },
-    {
-      "x":147,
-      "y":0
-    },
-    {
-      "x":148,
-      "y":0
-    },
-    {
-      "x":149,
-      "y":0
-    },
-    {
-      "x":150,
-      "y":0
-    },
-    {
-      "x":151,
-      "y":0
-    },
-    {
-      "x":152,
-      "y":0
-    },
-    {
-      "x":153,
-      "y":0
-    },
-    {
-      "x":154,
-      "y":0
-    },
-    {
-      "x":155,
-      "y":0
-    },
-    {
-      "x":156,
-      "y":0
-    },
-    {
-      "x":157,
-      "y":0
-    },
-    {
-      "x":158,
-      "y":0
-    },
-    {
-      "x":159,
-      "y":0
-    },
-    {
-      "x":160,
-      "y":0
-    },
-    {
-      "x":161,
-      "y":0
-    },
-    {
-      "x":162,
-      "y":0
-    },
-    {
-      "x":163,
-      "y":0
-    },
-    {
-      "x":164,
-      "y":0
-    },
-    {
-      "x":165,
-      "y":0
-    },
-    {
-      "x":166,
-      "y":0
-    },
-    {
-      "x":167,
-      "y":0
-    },
-    {
-      "x":168,
-      "y":0
-    },
-    {
-      "x":169,
-      "y":0
-    },
-    {
-      "x":170,
-      "y":0
-    },
-    {
-      "x":171,
-      "y":0
-    },
-    {
-      "x":172,
-      "y":0
-    },
-    {
-      "x":173,
-      "y":0
-    },
-    {
-      "x":174,
-      "y":0
-    },
-    {
-      "x":175,
-      "y":0
-    },
-    {
-      "x":176,
-      "y":0
-    },
-    {
-      "x":177,
-      "y":0
-    },
-    {
-      "x":178,
-      "y":0
-    },
-    {
-      "x":179,
-      "y":0
-    },
-    {
-      "x":180,
-      "y":0
-    },
-    {
-      "x":181,
-      "y":0
-    },
-    {
-      "x":182,
-      "y":0
-    },
-    {
-      "x":183,
-      "y":0
-    },
-    {
-      "x":184,
-      "y":0
-    },
-    {
-      "x":185,
-      "y":0
-    },
-    {
-      "x":186,
-      "y":0
-    },
-    {
-      "x":187,
-      "y":0
-    },
-    {
-      "x":188,
-      "y":0
-    },
-    {
-      "x":189,
-      "y":0
-    },
-    {
-      "x":190,
-      "y":0
-    },
-    {
-      "x":191,
-      "y":0
-    },
-    {
-      "x":192,
-      "y":0
-    },
-    {
-      "x":193,
-      "y":0
-    },
-    {
-      "x":194,
-      "y":0
-    },
-    {
-      "x":195,
-      "y":0
-    },
-    {
-      "x":196,
-      "y":0
-    },
-    {
-      "x":197,
-      "y":0
-    },
-    {
-      "x":198,
-      "y":0
-    },
-    {
-      "x":199,
-      "y":0
-    },
-    {
-      "x":200,
-      "y":0
-    },
-    {
-      "x":201,
-      "y":0
-    },
-    {
-      "x":202,
-      "y":0
-    },
-    {
-      "x":203,
-      "y":0
-    },
-    {
-      "x":204,
-      "y":0
-    },
-    {
-      "x":205,
-      "y":0
-    },
-    {
-      "x":206,
-      "y":0
-    },
-    {
-      "x":207,
-      "y":0
-    },
-    {
-      "x":208,
-      "y":0
-    },
-    {
-      "x":209,
-      "y":0
-    },
-    {
-      "x":210,
-      "y":0
-    },
-    {
-      "x":211,
-      "y":0
-    },
-    {
-      "x":212,
-      "y":0
-    },
-    {
-      "x":213,
-      "y":0
-    },
-    {
-      "x":214,
-      "y":0
-    },
-    {
-      "x":215,
-      "y":0
-    },
-    {
-      "x":216,
-      "y":0
-    },
-    {
-      "x":217,
-      "y":0
-    },
-    {
-      "x":218,
-      "y":0
-    },
-    {
-      "x":219,
-      "y":0
-    },
-    {
-      "x":220,
-      "y":0
-    },
-    {
-      "x":221,
-      "y":0
-    },
-    {
-      "x":222,
-      "y":0
-    },
-    {
-      "x":223,
-      "y":0
-    },
-    {
-      "x":224,
-      "y":0
-    },
-    {
-      "x":225,
-      "y":0
-    },
-    {
-      "x":226,
-      "y":0
-    },
-    {
-      "x":227,
-      "y":0
-    },
-    {
-      "x":228,
-      "y":0
-    },
-    {
-      "x":229,
-      "y":0
-    },
-    {
-      "x":230,
-      "y":0
-    },
-    {
-      "x":231,
-      "y":0
-    },
-    {
-      "x":232,
-      "y":0
-    },
-    {
-      "x":233,
-      "y":0
-    },
-    {
-      "x":234,
-      "y":0
-    },
-    {
-      "x":235,
-      "y":0
-    },
-    {
-      "x":236,
-      "y":0
-    },
-    {
-      "x":237,
-      "y":0
-    },
-    {
-      "x":238,
-      "y":0
-    },
-    {
-      "x":239,
-      "y":0
-    },
-    {
-      "x":240,
-      "y":0
-    },
-    {
-      "x":241,
-      "y":0
-    },
-    {
-      "x":242,
-      "y":0
-    },
-    {
-      "x":243,
-      "y":0
-    },
-    {
-      "x":244,
-      "y":0
-    },
-    {
-      "x":245,
-      "y":0
-    },
-    {
-      "x":246,
-      "y":0
-    },
-    {
-      "x":247,
-      "y":0
-    },
-    {
-      "x":248,
-      "y":0
-    },
-    {
-      "x":249,
-      "y":0
-    },
-    {
-      "x":250,
-      "y":0
-    },
-    {
-      "x":251,
-      "y":0
-    },
-    {
-      "x":252,
-      "y":0
-    },
-    {
-      "x":253,
-      "y":0
-    },
-    {
-      "x":254,
-      "y":0
-    },
-    {
-      "x":255,
-      "y":0
-    },
-    {
-      "x":256,
-      "y":0
-    },
-    {
-      "x":257,
-      "y":0
-    },
-    {
-      "x":258,
-      "y":0
-    },
-    {
-      "x":259,
-      "y":0
-    },
-    {
-      "x":260,
-      "y":0
-    },
-    {
-      "x":261,
-      "y":0
-    },
-    {
-      "x":262,
-      "y":0
-    },
-    {
-      "x":263,
-      "y":0
-    },
-    {
-      "x":264,
-      "y":0
-    },
-    {
-      "x":265,
-      "y":0
-    },
-    {
-      "x":266,
-      "y":0
-    },
-    {
-      "x":267,
-      "y":0
-    },
-    {
-      "x":268,
-      "y":0
-    },
-    {
-      "x":269,
-      "y":0
-    },
-    {
-      "x":270,
-      "y":0
-    },
-    {
-      "x":271,
-      "y":0
-    },
-    {
-      "x":272,
-      "y":0
-    },
-    {
-      "x":273,
-      "y":0
-    },
-    {
-      "x":274,
-      "y":0
-    },
-    {
-      "x":275,
-      "y":0
-    },
-    {
-      "x":276,
-      "y":0
-    },
-    {
-      "x":277,
-      "y":0
-    },
-    {
-      "x":278,
-      "y":0
-    },
-    {
-      "x":279,
-      "y":0
-    },
-    {
-      "x":280,
-      "y":0
-    },
-    {
-      "x":281,
-      "y":0
-    },
-    {
-      "x":282,
-      "y":0
-    },
-    {
-      "x":283,
-      "y":0
-    },
-    {
-      "x":284,
-      "y":0
-    },
-    {
-      "x":285,
-      "y":0
-    },
-    {
-      "x":286,
-      "y":0
-    },
-    {
-      "x":287,
-      "y":0
-    },
-    {
-      "x":288,
-      "y":0
-    },
-    {
-      "x":289,
-      "y":0
-    },
-    {
-      "x":290,
-      "y":0
-    },
-    {
-      "x":291,
-      "y":0
-    },
-    {
-      "x":292,
-      "y":0
-    },
-    {
-      "x":293,
-      "y":0
-    },
-    {
-      "x":294,
-      "y":0
-    },
-    {
-      "x":295,
-      "y":0
-    },
-    {
-      "x":296,
-      "y":0
-    },
-    {
-      "x":297,
-      "y":0
-    },
-    {
-      "x":298,
-      "y":0
-    },
-    {
-      "x":299,
-      "y":0
-    },
-    {
-      "x":300,
-      "y":0
-    },
-    {
-      "x":301,
-      "y":0
-    },
-    {
-      "x":302,
-      "y":0
-    },
-    {
-      "x":303,
-      "y":0
-    },
-    {
-      "x":304,
-      "y":0
-    },
-    {
-      "x":305,
-      "y":0
-    },
-    {
-      "x":306,
-      "y":0
-    },
-    {
-      "x":307,
-      "y":0
-    },
-    {
-      "x":308,
-      "y":0
-    },
-    {
-      "x":309,
-      "y":0
-    },
-    {
-      "x":310,
-      "y":0
-    },
-    {
-      "x":311,
-      "y":0
-    },
-    {
-      "x":312,
-      "y":0
-    },
-    {
-      "x":313,
-      "y":0
-    },
-    {
-      "x":314,
-      "y":0
-    },
-    {
-      "x":315,
-      "y":0
-    },
-    {
-      "x":316,
-      "y":0
-    },
-    {
-      "x":317,
-      "y":0
-    },
-    {
-      "x":318,
-      "y":0
-    },
-    {
-      "x":319,
-      "y":0
-    },
-    {
-      "x":320,
-      "y":0
-    },
-    {
-      "x":321,
-      "y":0
-    },
-    {
-      "x":322,
-      "y":0
-    },
-    {
-      "x":323,
-      "y":0
-    },
-    {
-      "x":324,
-      "y":0
-    },
-    {
-      "x":325,
-      "y":0
-    },
-    {
-      "x":326,
-      "y":0
-    },
-    {
-      "x":327,
-      "y":0
-    },
-    {
-      "x":328,
-      "y":0
-    },
-    {
-      "x":329,
-      "y":0
-    },
-    {
-      "x":330,
-      "y":0
-    },
-    {
-      "x":331,
-      "y":0
-    },
-    {
-      "x":332,
-      "y":0
-    },
-    {
-      "x":333,
-      "y":0
-    },
-    {
-      "x":334,
-      "y":0
-    },
-    {
-      "x":335,
-      "y":0
-    },
-    {
-      "x":336,
-      "y":0
-    },
-    {
-      "x":337,
-      "y":0
-    },
-    {
-      "x":338,
-      "y":0
-    },
-    {
-      "x":339,
-      "y":0
-    },
-    {
-      "x":340,
-      "y":0
-    },
-    {
-      "x":341,
-      "y":0
-    },
-    {
-      "x":342,
-      "y":0
-    },
-    {
-      "x":343,
-      "y":0
-    },
-    {
-      "x":344,
-      "y":0
-    },
-    {
-      "x":345,
-      "y":0
-    },
-    {
-      "x":346,
-      "y":0
-    },
-    {
-      "x":347,
-      "y":0
-    },
-    {
-      "x":348,
-      "y":0
-    },
-    {
-      "x":349,
-      "y":0
-    },
-    {
-      "x":350,
-      "y":0
-    },
-    {
-      "x":351,
-      "y":0
-    },
-    {
-      "x":352,
-      "y":0
-    },
-    {
-      "x":353,
-      "y":0
-    },
-    {
-      "x":354,
-      "y":0
-    },
-    {
-      "x":355,
-      "y":0
-    },
-    {
-      "x":356,
-      "y":0
-    },
-    {
-      "x":357,
-      "y":0
-    },
-    {
-      "x":358,
-      "y":0
-    },
-    {
-      "x":359,
-      "y":0
-    },
-    {
-      "x":360,
-      "y":0
-    },
-    {
-      "x":361,
-      "y":0
-    },
-    {
-      "x":362,
-      "y":0
-    },
-    {
-      "x":363,
-      "y":0
-    },
-    {
-      "x":364,
-      "y":0
-    },
-    {
-      "x":365,
-      "y":0
-    },
-    {
-      "x":366,
-      "y":0
-    },
-    {
-      "x":367,
-      "y":0
-    },
-    {
-      "x":368,
-      "y":0
-    },
-    {
-      "x":369,
-      "y":0
-    },
-    {
-      "x":370,
-      "y":0
-    },
-    {
-      "x":371,
-      "y":0
-    },
-    {
-      "x":372,
-      "y":0
-    },
-    {
-      "x":373,
-      "y":0
-    },
-    {
-      "x":374,
-      "y":0
-    },
-    {
-      "x":375,
-      "y":1
-    },
-    {
-      "x":376,
-      "y":1
-    },
-    {
-      "x":377,
-      "y":1
-    },
-    {
-      "x":378,
-      "y":1
-    },
-    {
-      "x":379,
-      "y":1
-    },
-    {
-      "x":380,
-      "y":1
-    },
-    {
-      "x":381,
-      "y":1
-    },
-    {
-      "x":382,
-      "y":1
-    },
-    {
-      "x":383,
-      "y":1
-    },
-    {
-      "x":384,
-      "y":1
-    },
-    {
-      "x":385,
-      "y":1
-    },
-    {
-      "x":386,
-      "y":1
-    },
-    {
-      "x":387,
-      "y":1
-    },
-    {
-      "x":388,
-      "y":1
-    },
-    {
-      "x":389,
-      "y":1
-    },
-    {
-      "x":390,
-      "y":1
-    },
-    {
-      "x":391,
-      "y":1
-    },
-    {
-      "x":392,
-      "y":1
-    },
-    {
-      "x":393,
-      "y":1
-    },
-    {
-      "x":394,
-      "y":1
-    },
-    {
-      "x":395,
-      "y":1
-    },
-    {
-      "x":396,
-      "y":1
-    },
-    {
-      "x":397,
-      "y":1
-    },
-    {
-      "x":398,
-      "y":1
-    },
-    {
-      "x":399,
-      "y":1
-    },
-    {
-      "x":400,
-      "y":1
-    },
-    {
-      "x":401,
-      "y":1
-    },
-    {
-      "x":402,
-      "y":1
-    },
-    {
-      "x":403,
-      "y":1
-    },
-    {
-      "x":404,
-      "y":1
-    },
-    {
-      "x":405,
-      "y":1
-    },
-    {
-      "x":406,
-      "y":1
-    },
-    {
-      "x":407,
-      "y":1
-    },
-    {
-      "x":408,
-      "y":1
-    },
-    {
-      "x":409,
-      "y":1
-    },
-    {
-      "x":410,
-      "y":1
-    },
-    {
-      "x":411,
-      "y":1
-    },
-    {
-      "x":412,
-      "y":1
-    },
-    {
-      "x":413,
-      "y":1
-    },
-    {
-      "x":414,
-      "y":0
-    },
-    {
-      "x":415,
-      "y":0
-    },
-    {
-      "x":416,
-      "y":0
-    },
-    {
-      "x":417,
-      "y":0
-    },
-    {
-      "x":418,
-      "y":0
-    },
-    {
-      "x":419,
-      "y":0
-    },
-    {
-      "x":420,
-      "y":0
-    },
-    {
-      "x":421,
-      "y":0
-    },
-    {
-      "x":422,
-      "y":0
-    },
-    {
-      "x":423,
-      "y":0
-    },
-    {
-      "x":424,
-      "y":0
-    },
-    {
-      "x":425,
-      "y":0
-    },
-    {
-      "x":426,
-      "y":0
-    },
-    {
-      "x":427,
-      "y":0
-    },
-    {
-      "x":428,
-      "y":0
-    },
-    {
-      "x":429,
-      "y":0
-    },
-    {
-      "x":430,
-      "y":0
-    },
-    {
-      "x":431,
-      "y":0
-    },
-    {
-      "x":432,
-      "y":0
-    },
-    {
-      "x":433,
-      "y":0
-    },
-    {
-      "x":434,
-      "y":0
-    },
-    {
-      "x":435,
-      "y":0
-    },
-    {
-      "x":436,
-      "y":0
-    },
-    {
-      "x":437,
-      "y":0
-    },
-    {
-      "x":438,
-      "y":0
-    },
-    {
-      "x":439,
-      "y":0
-    },
-    {
-      "x":440,
-      "y":0
-    },
-    {
-      "x":441,
-      "y":0
-    },
-    {
-      "x":442,
-      "y":0
-    },
-    {
-      "x":443,
-      "y":0
-    },
-    {
-      "x":444,
-      "y":0
-    },
-    {
-      "x":445,
-      "y":0
-    },
-    {
-      "x":446,
-      "y":0
-    },
-    {
-      "x":447,
-      "y":0
-    },
-    {
-      "x":448,
-      "y":0
-    },
-    {
-      "x":449,
-      "y":0
-    },
-    {
-      "x":450,
-      "y":0
-    },
-    {
-      "x":451,
-      "y":0
-    },
-    {
-      "x":452,
-      "y":0
-    },
-    {
-      "x":453,
-      "y":0
-    },
-    {
-      "x":454,
-      "y":0
-    },
-    {
-      "x":455,
-      "y":0
-    },
-    {
-      "x":456,
-      "y":0
-    },
-    {
-      "x":457,
-      "y":0
-    },
-    {
-      "x":458,
-      "y":0
-    },
-    {
-      "x":459,
-      "y":0
-    },
-    {
-      "x":460,
-      "y":0
-    },
-    {
-      "x":461,
-      "y":0
-    },
-    {
-      "x":462,
-      "y":0
-    },
-    {
-      "x":463,
-      "y":0
-    },
-    {
-      "x":464,
-      "y":0
-    },
-    {
-      "x":465,
-      "y":0
-    },
-    {
-      "x":466,
-      "y":0
-    },
-    {
-      "x":467,
-      "y":0
-    },
-    {
-      "x":468,
-      "y":0
-    },
-    {
-      "x":469,
-      "y":0
-    },
-    {
-      "x":470,
-      "y":0
-    },
-    {
-      "x":471,
-      "y":0
-    },
-    {
-      "x":472,
-      "y":0
-    },
-    {
-      "x":473,
-      "y":0
-    },
-    {
-      "x":474,
-      "y":0
-    },
-    {
-      "x":475,
-      "y":0
-    },
-    {
-      "x":476,
-      "y":0
-    },
-    {
-      "x":477,
-      "y":0
-    },
-    {
-      "x":478,
-      "y":0
-    },
-    {
-      "x":479,
-      "y":0
-    },
-    {
-      "x":480,
-      "y":0
-    },
-    {
-      "x":481,
-      "y":0
-    },
-    {
-      "x":482,
-      "y":0
-    },
-    {
-      "x":483,
-      "y":0
-    },
-    {
-      "x":484,
-      "y":0
-    },
-    {
-      "x":485,
-      "y":0
-    },
-    {
-      "x":486,
-      "y":0
-    },
-    {
-      "x":487,
-      "y":0
-    },
-    {
-      "x":488,
-      "y":0
-    },
-    {
-      "x":489,
-      "y":0
-    },
-    {
-      "x":490,
-      "y":0
-    },
-    {
-      "x":491,
-      "y":0
-    },
-    {
-      "x":492,
-      "y":0
-    },
-    {
-      "x":493,
-      "y":0
-    },
-    {
-      "x":494,
-      "y":0
-    },
-    {
-      "x":495,
-      "y":0
-    },
-    {
-      "x":496,
-      "y":0
-    },
-    {
-      "x":497,
-      "y":0
-    },
-    {
-      "x":498,
-      "y":0
-    },
-    {
-      "x":499,
-      "y":0
-    }
-  ]
-]}
+{
+    "map": [
+        {
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "x": 1349195924,
+            "y": 0
+        },
+        {
+            "x": 1349195928,
+            "y": 0
+        },
+        {
+            "x": 1349195932,
+            "y": 0
+        },
+        {
+            "x": 1349195936,
+            "y": 0
+        },
+        {
+            "x": 1349195940,
+            "y": 0
+        },
+        {
+            "x": 1349195944,
+            "y": 0
+        },
+        {
+            "x": 1349195948,
+            "y": 0
+        },
+        {
+            "x": 1349195952,
+            "y": 0
+        },
+        {
+            "x": 1349195956,
+            "y": 0
+        },
+        {
+            "x": 1349195960,
+            "y": 0
+        },
+        {
+            "x": 1349195964,
+            "y": 0
+        },
+        {
+            "x": 1349195968,
+            "y": 0
+        },
+        {
+            "x": 1349195972,
+            "y": 0
+        },
+        {
+            "x": 1349195976,
+            "y": 0
+        },
+        {
+            "x": 1349195980,
+            "y": 0
+        },
+        {
+            "x": 1349195984,
+            "y": 0
+        },
+        {
+            "x": 1349195988,
+            "y": 0
+        },
+        {
+            "x": 1349195992,
+            "y": 0
+        },
+        {
+            "x": 1349195996,
+            "y": 0
+        },
+        {
+            "x": 1349196000,
+            "y": 0
+        },
+        {
+            "x": 1349196004,
+            "y": 0
+        },
+        {
+            "x": 1349196008,
+            "y": 0
+        },
+        {
+            "x": 1349196012,
+            "y": 0
+        },
+        {
+            "x": 1349196016,
+            "y": 0
+        },
+        {
+            "x": 1349196020,
+            "y": 0
+        },
+        {
+            "x": 1349196024,
+            "y": 1
+        },
+        {
+            "x": 1349196028,
+            "y": 1
+        },
+        {
+            "x": 1349196032,
+            "y": 1
+        },
+        {
+            "x": 1349196036,
+            "y": 0
+        },
+        {
+            "x": 1349196040,
+            "y": 0
+        },
+        {
+            "x": 1349196044,
+            "y": 0
+        },
+        {
+            "x": 1349196048,
+            "y": 0
+        },
+        {
+            "x": 1349196052,
+            "y": 0
+        },
+        {
+            "x": 1349196056,
+            "y": 0
+        },
+        {
+            "x": 1349196060,
+            "y": 0
+        },
+        {
+            "x": 1349196064,
+            "y": 0
+        },
+        {
+            "x": 1349196068,
+            "y": 0
+        },
+        {
+            "x": 1349196072,
+            "y": 0
+        },
+        {
+            "x": 1349196076,
+            "y": 0
+        },
+        {
+            "x": 1349196080,
+            "y": 0
+        },
+        {
+            "x": 1349196084,
+            "y": 0
+        },
+        {
+            "x": 1349196088,
+            "y": 0
+        },
+        {
+            "x": 1349196092,
+            "y": 0
+        },
+        {
+            "x": 1349196096,
+            "y": 0
+        },
+        {
+            "x": 1349196100,
+            "y": 0
+        },
+        {
+            "x": 1349196104,
+            "y": 0
+        },
+        {
+            "x": 1349196108,
+            "y": 0
+        },
+        {
+            "x": 1349196112,
+            "y": 0
+        },
+        {
+            "x": 1349196116,
+            "y": 0
+        },
+        {
+            "x": 1349196120,
+            "y": 0
+        },
+        {
+            "x": 1349196124,
+            "y": 0
+        },
+        {
+            "x": 1349196128,
+            "y": 0
+        },
+        {
+            "x": 1349196132,
+            "y": 0
+        },
+        {
+            "x": 1349196136,
+            "y": 0
+        },
+        {
+            "x": 1349196140,
+            "y": 0
+        },
+        {
+            "x": 1349196144,
+            "y": 0
+        },
+        {
+            "x": 1349196148,
+            "y": 0
+        },
+        {
+            "x": 1349196152,
+            "y": 0
+        },
+        {
+            "x": 1349196156,
+            "y": 0
+        },
+        {
+            "x": 1349196160,
+            "y": 0
+        }
+    ],
+    "shuffle": [
+        {
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "x": 1349195924,
+            "y": 0
+        },
+        {
+            "x": 1349195928,
+            "y": 0
+        },
+        {
+            "x": 1349195932,
+            "y": 0
+        },
+        {
+            "x": 1349195936,
+            "y": 0
+        },
+        {
+            "x": 1349195940,
+            "y": 0
+        },
+        {
+            "x": 1349195944,
+            "y": 0
+        },
+        {
+            "x": 1349195948,
+            "y": 0
+        },
+        {
+            "x": 1349195952,
+            "y": 0
+        },
+        {
+            "x": 1349195956,
+            "y": 0
+        },
+        {
+            "x": 1349195960,
+            "y": 0
+        },
+        {
+            "x": 1349195964,
+            "y": 0
+        },
+        {
+            "x": 1349195968,
+            "y": 0
+        },
+        {
+            "x": 1349195972,
+            "y": 0
+        },
+        {
+            "x": 1349195976,
+            "y": 0
+        },
+        {
+            "x": 1349195980,
+            "y": 0
+        },
+        {
+            "x": 1349195984,
+            "y": 0
+        },
+        {
+            "x": 1349195988,
+            "y": 0
+        },
+        {
+            "x": 1349195992,
+            "y": 0
+        },
+        {
+            "x": 1349195996,
+            "y": 0
+        },
+        {
+            "x": 1349196000,
+            "y": 0
+        },
+        {
+            "x": 1349196004,
+            "y": 0
+        },
+        {
+            "x": 1349196008,
+            "y": 0
+        },
+        {
+            "x": 1349196012,
+            "y": 0
+        },
+        {
+            "x": 1349196016,
+            "y": 0
+        },
+        {
+            "x": 1349196020,
+            "y": 0
+        },
+        {
+            "x": 1349196024,
+            "y": 0
+        },
+        {
+            "x": 1349196028,
+            "y": 0
+        },
+        {
+            "x": 1349196032,
+            "y": 1
+        },
+        {
+            "x": 1349196036,
+            "y": 2
+        },
+        {
+            "x": 1349196040,
+            "y": 3
+        },
+        {
+            "x": 1349196044,
+            "y": 3
+        },
+        {
+            "x": 1349196048,
+            "y": 2
+        },
+        {
+            "x": 1349196052,
+            "y": 2
+        },
+        {
+            "x": 1349196056,
+            "y": 2
+        },
+        {
+            "x": 1349196060,
+            "y": 2
+        },
+        {
+            "x": 1349196064,
+            "y": 3
+        },
+        {
+            "x": 1349196068,
+            "y": 3
+        },
+        {
+            "x": 1349196072,
+            "y": 2
+        },
+        {
+            "x": 1349196076,
+            "y": 2
+        },
+        {
+            "x": 1349196080,
+            "y": 2
+        },
+        {
+            "x": 1349196084,
+            "y": 2
+        },
+        {
+            "x": 1349196088,
+            "y": 3
+        },
+        {
+            "x": 1349196092,
+            "y": 2
+        },
+        {
+            "x": 1349196096,
+            "y": 2
+        },
+        {
+            "x": 1349196100,
+            "y": 2
+        },
+        {
+            "x": 1349196104,
+            "y": 3
+        },
+        {
+            "x": 1349196108,
+            "y": 2
+        },
+        {
+            "x": 1349196112,
+            "y": 3
+        },
+        {
+            "x": 1349196116,
+            "y": 2
+        },
+        {
+            "x": 1349196120,
+            "y": 3
+        },
+        {
+            "x": 1349196124,
+            "y": 3
+        },
+        {
+            "x": 1349196128,
+            "y": 2
+        },
+        {
+            "x": 1349196132,
+            "y": 3
+        },
+        {
+            "x": 1349196136,
+            "y": 2
+        },
+        {
+            "x": 1349196140,
+            "y": 2
+        },
+        {
+            "x": 1349196144,
+            "y": 1
+        },
+        {
+            "x": 1349196148,
+            "y": 1
+        },
+        {
+            "x": 1349196152,
+            "y": 0
+        },
+        {
+            "x": 1349196156,
+            "y": 0
+        },
+        {
+            "x": 1349196160,
+            "y": 0
+        }
+    ],
+    "reduce": [
+        {
+            "x": 1349195920,
+            "y": 0
+        },
+        {
+            "x": 1349195924,
+            "y": 0
+        },
+        {
+            "x": 1349195928,
+            "y": 0
+        },
+        {
+            "x": 1349195932,
+            "y": 0
+        },
+        {
+            "x": 1349195936,
+            "y": 0
+        },
+        {
+            "x": 1349195940,
+            "y": 0
+        },
+        {
+            "x": 1349195944,
+            "y": 0
+        },
+        {
+            "x": 1349195948,
+            "y": 0
+        },
+        {
+            "x": 1349195952,
+            "y": 0
+        },
+        {
+            "x": 1349195956,
+            "y": 0
+        },
+        {
+            "x": 1349195960,
+            "y": 0
+        },
+        {
+            "x": 1349195964,
+            "y": 0
+        },
+        {
+            "x": 1349195968,
+            "y": 0
+        },
+        {
+            "x": 1349195972,
+            "y": 0
+        },
+        {
+            "x": 1349195976,
+            "y": 0
+        },
+        {
+            "x": 1349195980,
+            "y": 0
+        },
+        {
+            "x": 1349195984,
+            "y": 0
+        },
+        {
+            "x": 1349195988,
+            "y": 0
+        },
+        {
+            "x": 1349195992,
+            "y": 0
+        },
+        {
+            "x": 1349195996,
+            "y": 0
+        },
+        {
+            "x": 1349196000,
+            "y": 0
+        },
+        {
+            "x": 1349196004,
+            "y": 0
+        },
+        {
+            "x": 1349196008,
+            "y": 0
+        },
+        {
+            "x": 1349196012,
+            "y": 0
+        },
+        {
+            "x": 1349196016,
+            "y": 0
+        },
+        {
+            "x": 1349196020,
+            "y": 0
+        },
+        {
+            "x": 1349196024,
+            "y": 0
+        },
+        {
+            "x": 1349196028,
+            "y": 0
+        },
+        {
+            "x": 1349196032,
+            "y": 0
+        },
+        {
+            "x": 1349196036,
+            "y": 0
+        },
+        {
+            "x": 1349196040,
+            "y": 1
+        },
+        {
+            "x": 1349196044,
+            "y": 2
+        },
+        {
+            "x": 1349196048,
+            "y": 1
+        },
+        {
+            "x": 1349196052,
+            "y": 2
+        },
+        {
+            "x": 1349196056,
+            "y": 2
+        },
+        {
+            "x": 1349196060,
+            "y": 1
+        },
+        {
+            "x": 1349196064,
+            "y": 1
+        },
+        {
+            "x": 1349196068,
+            "y": 2
+        },
+        {
+            "x": 1349196072,
+            "y": 2
+        },
+        {
+            "x": 1349196076,
+            "y": 1
+        },
+        {
+            "x": 1349196080,
+            "y": 2
+        },
+        {
+            "x": 1349196084,
+            "y": 1
+        },
+        {
+            "x": 1349196088,
+            "y": 1
+        },
+        {
+            "x": 1349196092,
+            "y": 2
+        },
+        {
+            "x": 1349196096,
+            "y": 2
+        },
+        {
+            "x": 1349196100,
+            "y": 1
+        },
+        {
+            "x": 1349196104,
+            "y": 2
+        },
+        {
+            "x": 1349196108,
+            "y": 1
+        },
+        {
+            "x": 1349196112,
+            "y": 2
+        },
+        {
+            "x": 1349196116,
+            "y": 1
+        },
+        {
+            "x": 1349196120,
+            "y": 1
+        },
+        {
+            "x": 1349196124,
+            "y": 2
+        },
+        {
+            "x": 1349196128,
+            "y": 1
+        },
+        {
+            "x": 1349196132,
+            "y": 2
+        },
+        {
+            "x": 1349196136,
+            "y": 2
+        },
+        {
+            "x": 1349196140,
+            "y": 2
+        },
+        {
+            "x": 1349196144,
+            "y": 1
+        },
+        {
+            "x": 1349196148,
+            "y": 1
+        },
+        {
+            "x": 1349196152,
+            "y": 1
+        },
+        {
+            "x": 1349196156,
+            "y": 0
+        },
+        {
+            "x": 1349196160,
+            "y": 0
+        }
+    ]
+}

+ 370 - 0
ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_start.json

@@ -0,0 +1,370 @@
+{
+  "href" : "http://localhost:8080/api/clusters/mycluster/services?ServiceInfo/service_name=MAPREDUCE&fields=components/host_components/*",
+  "items" : [
+    {
+      "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE",
+      "ServiceInfo" : {
+        "cluster_name" : "mycluster",
+        "service_name" : "MAPREDUCE"
+      },
+      "components" : [
+        {
+          "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT",
+          "ServiceComponentInfo" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "service_name" : "MAPREDUCE"
+          },
+          "host_components" : [
+            {
+              "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+              "HostRoles" : {
+                "configs" : "{}",
+                "cluster_name" : "mycluster",
+                "desired_configs" : "{}",
+                "desired_state" : "STARTED",
+                "state" : "STARTED",
+                "component_name" : "MAPREDUCE_CLIENT",
+                "host_name" : "dev.hortonworks.com"
+              },
+              "component" : [
+                {
+                  "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT",
+                  "ServiceComponentInfo" : {
+                    "cluster_name" : "mycluster",
+                    "component_name" : "MAPREDUCE_CLIENT",
+                    "service_name" : "MAPREDUCE"
+                  }
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER",
+          "ServiceComponentInfo" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "service_name" : "MAPREDUCE"
+          },
+          "host_components" : [
+            {
+              "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+              "HostRoles" : {
+                "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}",
+                "cluster_name" : "mycluster",
+                "desired_configs" : "{}",
+                "desired_state" : "STARTED",
+                "state" : "STARTED",
+                "component_name" : "JOBTRACKER",
+                "host_name" : "dev.hortonworks.com"
+              },
+              "metrics" : {
+                "boottime" : 1.353113263E9,
+                "process" : {
+                  "proc_total" : 542.4,
+                  "proc_run" : 1.04722222222
+                },
+                "rpc" : {
+                  "rpcAuthorizationSuccesses" : 0.0,
+                  "SentBytes" : 355.647619048,
+                  "rpcAuthorizationFailures" : 0.0,
+                  "ReceivedBytes" : 1040.35238095,
+                  "NumOpenConnections" : 0.0,
+                  "callQueueLen" : 0.0,
+                  "rpcAuthenticationSuccesses" : 0.0,
+                  "RpcQueueTime_num_ops" : 3.32380952381,
+                  "RpcProcessingTime_num_ops" : 3.32380952381,
+                  "RpcProcessingTime_avg_time" : 0.142915649166,
+                  "rpcAuthenticationFailures" : 0.0,
+                  "RpcQueueTime_avg_time" : 0.0767488298738
+                },
+                "ugi" : {
+                  "loginSuccess_num_ops" : 0.0,
+                  "loginFailure_num_ops" : 0.0,
+                  "loginSuccess_avg_time" : 0.0,
+                  "loginFailure_avg_time" : 0.0
+                },
+                "mapred" : {
+                  "Queue" : {
+                    "maps_killed" : 0.0,
+                    "reduces_killed" : 0.0,
+                    "jobs_failed" : 0.0,
+                    "reduces_completed" : 0.0,
+                    "running_0" : 0.0,
+                    "reduces_failed" : 0.0,
+                    "reserved_map_slots" : 0.0,
+                    "jobs_completed" : 0.0,
+                    "waiting_maps" : 0.0,
+                    "running_1440" : 0.0,
+                    "maps_completed" : 0.0,
+                    "jobs_preparing" : 0.0,
+                    "jobs_submitted" : 0.0,
+                    "reserved_reduce_slots" : 0.0,
+                    "jobs_running" : 0.0,
+                    "running_300" : 0.0,
+                    "maps_launched" : 0.0,
+                    "reduces_launched" : 0.0,
+                    "running_60" : 0.0,
+                    "waiting_reduces" : 0.0,
+                    "maps_failed" : 0.0,
+                    "jobs_killed" : 0.0
+                  },
+                  "jobtracker" : {
+                    "blacklisted_maps" : 0.0,
+                    "running_maps" : 0.0,
+                    "jobs_failed" : 0.0,
+                    "waiting_maps" : 0.0,
+                    "maps_completed" : 0.0,
+                    "trackers" : 1.0,
+                    "jobs_submitted" : 0.0,
+                    "map_slots" : 4.0,
+                    "reserved_reduce_slots" : 0.0,
+                    "trackers_graylisted" : 0.0,
+                    "heartbeats" : 3.32380952381,
+                    "jobs_running" : 0.0,
+                    "blacklisted_reduces" : 0.0,
+                    "maps_launched" : 0.0,
+                    "occupied_map_slots" : 0.0,
+                    "reduces_launched" : 0.0,
+                    "jobs_killed" : 0.0,
+                    "maps_failed" : 0.0,
+                    "maps_killed" : 0.0,
+                    "reduce_slots" : 2.0,
+                    "reduces_killed" : 0.0,
+                    "reduces_completed" : 0.0,
+                    "jobs_completed" : 0.0,
+                    "reserved_map_slots" : 0.0,
+                    "trackers_decommissioned" : 0.0,
+                    "reduces_failed" : 0.0,
+                    "trackers_blacklisted" : 0.0,
+                    "jobs_preparing" : 0.0,
+                    "running_reduces" : 0.0,
+                    "occupied_reduce_slots" : 0.0,
+                    "waiting_reduces" : 0.0
+                  }
+                },
+                "disk" : {
+                  "disk_total" : 101.515,
+                  "disk_free" : 93.4107777778,
+                  "part_max_used" : 12.8
+                },
+                "cpu" : {
+                  "cpu_speed" : 1986.0,
+                  "cpu_wio" : 0.510555555556,
+                  "cpu_num" : 1.0,
+                  "cpu_idle" : 45.9291666667,
+                  "cpu_nice" : 0.0,
+                  "cpu_aidle" : 0.0,
+                  "cpu_system" : 6.88277777778,
+                  "cpu_user" : 46.6838888889
+                },
+                "rpcdetailed" : {
+                  "getJobProfile_num_ops" : 0.0,
+                  "getStagingAreaDir_num_ops" : 0.0,
+                  "getProtocolVersion_avg_time" : 0.0,
+                  "getBuildVersion_avg_time" : 0.0,
+                  "getBuildVersion_num_ops" : 0.0,
+                  "getNewJobId_avg_time" : 0.0,
+                  "getQueueAdmins_num_ops" : 0.0,
+                  "getSystemDir_num_ops" : 0.0,
+                  "getTaskCompletionEvents_num_ops" : 0.0,
+                  "getJobProfile_avg_time" : 0.0,
+                  "submitJob_num_ops" : 0.0,
+                  "getStagingAreaDir_avg_time" : 2.0,
+                  "getNewJobId_num_ops" : 0.0,
+                  "getJobCounters_num_ops" : 0.0,
+                  "getTaskCompletionEvents_avg_time" : 0.111111111111,
+                  "getProtocolVersion_num_ops" : 0.0,
+                  "submitJob_avg_time" : 312.0,
+                  "getSystemDir_avg_time" : 0.0,
+                  "getJobStatus_num_ops" : 0.0,
+                  "getJobCounters_avg_time" : 0.0,
+                  "getQueueAdmins_avg_time" : 0.0,
+                  "heartbeat_num_ops" : 3.32380952381,
+                  "heartbeat_avg_time" : 0.142915649166,
+                  "getJobStatus_avg_time" : 0.0
+                },
+                "load" : {
+                  "load_fifteen" : 0.8845,
+                  "load_one" : 0.516833333333,
+                  "load_five" : 0.740888888889
+                },
+                "jvm" : {
+                  "memHeapCommittedM" : 185.1875,
+                  "logFatal" : 0.0,
+                  "threadsBlocked" : 0.0,
+                  "threadsWaiting" : 19.0,
+                  "gcCount" : 0.00277777777778,
+                  "logWarn" : 0.0,
+                  "logError" : 0.0,
+                  "memNonHeapCommittedM" : 23.75,
+                  "gcTimeMillis" : 0.641666666667,
+                  "memNonHeapUsedM" : 23.1303326472,
+                  "logInfo" : 0.0,
+                  "threadsNew" : 0.0,
+                  "memHeapUsedM" : 101.890453742,
+                  "threadsTerminated" : 0.0,
+                  "threadsTimedWaiting" : 10.0,
+                  "threadsRunnable" : 6.0
+                },
+                "network" : {
+                  "pkts_out" : 0.455111111111,
+                  "bytes_in" : 50.645,
+                  "bytes_out" : 119.762888889,
+                  "pkts_in" : 0.411222222222
+                },
+                "memory" : {
+                  "mem_total" : 2054932.0,
+                  "swap_free" : 4074713.26667,
+                  "mem_buffers" : 13563.6333333,
+                  "mem_shared" : 0.0,
+                  "mem_cached" : 175195.088889,
+                  "mem_free" : 117578.155556,
+                  "swap_total" : 4128760.0
+                }
+              },
+              "component" : [
+                {
+                  "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER",
+                  "ServiceComponentInfo" : {
+                    "cluster_name" : "mycluster",
+                    "component_name" : "JOBTRACKER",
+                    "service_name" : "MAPREDUCE"
+                  }
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER",
+          "ServiceComponentInfo" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "service_name" : "MAPREDUCE"
+          },
+          "host_components" : [
+            {
+              "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+              "HostRoles" : {
+                "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}",
+                "cluster_name" : "mycluster",
+                "desired_configs" : "{}",
+                "desired_state" : "STARTED",
+                "state" : "STARTED",
+                "component_name" : "TASKTRACKER",
+                "host_name" : "dev.hortonworks.com"
+              },
+              "metrics" : {
+                "boottime" : 1.353113263E9,
+                "process" : {
+                  "proc_total" : 542.625,
+                  "proc_run" : 1.81944444444
+                },
+                "rpc" : {
+                  "rpcAuthorizationSuccesses" : 7.15827882667E7,
+                  "SentBytes" : 7.15827882667E7,
+                  "rpcAuthorizationFailures" : 0.0,
+                  "ReceivedBytes" : 7.15827882667E7,
+                  "NumOpenConnections" : 0.0,
+                  "callQueueLen" : 0.0,
+                  "rpcAuthenticationSuccesses" : 0.0,
+                  "RpcQueueTime_num_ops" : 7.15827882667E7,
+                  "RpcProcessingTime_num_ops" : 7.15827882667E7,
+                  "RpcProcessingTime_avg_time" : 0.151111111111,
+                  "rpcAuthenticationFailures" : 0.0,
+                  "RpcQueueTime_avg_time" : 0.151111111111
+                },
+                "ugi" : {
+                  "loginSuccess_num_ops" : 0.0,
+                  "loginFailure_num_ops" : 0.0,
+                  "loginSuccess_avg_time" : 0.0,
+                  "loginFailure_avg_time" : 0.0
+                },
+                "mapred" : {
+                  "shuffleOutput" : {
+                    "shuffle_handler_busy_percent" : 0.0
+                  },
+                  "tasktracker" : {
+                    "reduces_running" : 0.0,
+                    "maps_running" : 0.0,
+                    "reduceTaskSlots" : 2.0,
+                    "mapTaskSlots" : 4.0
+                  }
+                },
+                "disk" : {
+                  "disk_total" : 101.515,
+                  "disk_free" : 93.4107777778,
+                  "part_max_used" : 12.8
+                },
+                "cpu" : {
+                  "cpu_speed" : 1986.0,
+                  "cpu_wio" : 0.519444444444,
+                  "cpu_num" : 1.0,
+                  "cpu_idle" : 46.9705555556,
+                  "cpu_nice" : 0.0,
+                  "cpu_aidle" : 0.0,
+                  "cpu_system" : 6.75972222222,
+                  "cpu_user" : 45.7563888889
+                },
+                "rpcdetailed" : {
+                  "getProtocolVersion_avg_time" : 0.0,
+                  "getProtocolVersion_num_ops" : 4
+                },
+                "load" : {
+                  "load_fifteen" : 0.882305555556,
+                  "load_one" : 0.523944444444,
+                  "load_five" : 0.739694444444
+                },
+                "jvm" : {
+                  "memHeapCommittedM" : 30.375,
+                  "logFatal" : 0.0,
+                  "threadsBlocked" : 0.0,
+                  "threadsWaiting" : 14.5333333333,
+                  "gcCount" : 7.15827883321E7,
+                  "logWarn" : 0.0,
+                  "logError" : 0.0,
+                  "memNonHeapCommittedM" : 23.1875,
+                  "gcTimeMillis" : 7.15827883254E7,
+                  "memNonHeapUsedM" : 21.7573377917,
+                  "logInfo" : 0.0,
+                  "threadsNew" : 0.0,
+                  "memHeapUsedM" : 7.07001514861,
+                  "threadsTerminated" : 0.0,
+                  "threadsTimedWaiting" : 8.71666666667,
+                  "threadsRunnable" : 6.26666666667
+                },
+                "network" : {
+                  "pkts_out" : 0.453888888889,
+                  "bytes_in" : 50.5375,
+                  "bytes_out" : 119.456111111,
+                  "pkts_in" : 0.410277777778
+                },
+                "memory" : {
+                  "mem_total" : 2054932.0,
+                  "swap_free" : 4074707.96667,
+                  "mem_buffers" : 13563.6555556,
+                  "mem_shared" : 0.0,
+                  "mem_cached" : 175260.0,
+                  "mem_free" : 115051.811111,
+                  "swap_total" : 4128760.0
+                }
+              },
+              "component" : [
+                {
+                  "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER",
+                  "ServiceComponentInfo" : {
+                    "cluster_name" : "mycluster",
+                    "component_name" : "TASKTRACKER",
+                    "service_name" : "MAPREDUCE"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 370 - 0
ambari-web/app/assets/data/dashboard/mapreduce/mapreduce_stop.json

@@ -0,0 +1,370 @@
+{
+  "href" : "http://localhost:8080/api/clusters/mycluster/services?ServiceInfo/service_name=MAPREDUCE&fields=components/host_components/*",
+  "items" : [
+    {
+      "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE",
+      "ServiceInfo" : {
+        "cluster_name" : "mycluster",
+        "service_name" : "MAPREDUCE"
+      },
+      "components" : [
+        {
+          "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT",
+          "ServiceComponentInfo" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "service_name" : "MAPREDUCE"
+          },
+          "host_components" : [
+            {
+              "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+              "HostRoles" : {
+                "configs" : "{}",
+                "cluster_name" : "mycluster",
+                "desired_configs" : "{}",
+                "desired_state" : "INSTALLED",
+                "state" : "INSTALLED",
+                "component_name" : "MAPREDUCE_CLIENT",
+                "host_name" : "dev.hortonworks.com"
+              },
+              "component" : [
+                {
+                  "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/MAPREDUCE_CLIENT",
+                  "ServiceComponentInfo" : {
+                    "cluster_name" : "mycluster",
+                    "component_name" : "MAPREDUCE_CLIENT",
+                    "service_name" : "MAPREDUCE"
+                  }
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER",
+          "ServiceComponentInfo" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "service_name" : "MAPREDUCE"
+          },
+          "host_components" : [
+            {
+              "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+              "HostRoles" : {
+                "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}",
+                "cluster_name" : "mycluster",
+                "desired_configs" : "{}",
+                "desired_state" : "INSTALLED",
+                "state" : "INSTALLED",
+                "component_name" : "JOBTRACKER",
+                "host_name" : "dev.hortonworks.com"
+              },
+              "metrics" : {
+                "boottime" : 1.353113263E9,
+                "process" : {
+                  "proc_total" : 542.4,
+                  "proc_run" : 1.04722222222
+                },
+                "rpc" : {
+                  "rpcAuthorizationSuccesses" : 0.0,
+                  "SentBytes" : 355.647619048,
+                  "rpcAuthorizationFailures" : 0.0,
+                  "ReceivedBytes" : 1040.35238095,
+                  "NumOpenConnections" : 0.0,
+                  "callQueueLen" : 0.0,
+                  "rpcAuthenticationSuccesses" : 0.0,
+                  "RpcQueueTime_num_ops" : 3.32380952381,
+                  "RpcProcessingTime_num_ops" : 3.32380952381,
+                  "RpcProcessingTime_avg_time" : 0.142915649166,
+                  "rpcAuthenticationFailures" : 0.0,
+                  "RpcQueueTime_avg_time" : 0.0767488298738
+                },
+                "ugi" : {
+                  "loginSuccess_num_ops" : 0.0,
+                  "loginFailure_num_ops" : 0.0,
+                  "loginSuccess_avg_time" : 0.0,
+                  "loginFailure_avg_time" : 0.0
+                },
+                "mapred" : {
+                  "Queue" : {
+                    "maps_killed" : 0.0,
+                    "reduces_killed" : 0.0,
+                    "jobs_failed" : 0.0,
+                    "reduces_completed" : 0.0,
+                    "running_0" : 0.0,
+                    "reduces_failed" : 0.0,
+                    "reserved_map_slots" : 0.0,
+                    "jobs_completed" : 0.0,
+                    "waiting_maps" : 0.0,
+                    "running_1440" : 0.0,
+                    "maps_completed" : 0.0,
+                    "jobs_preparing" : 0.0,
+                    "jobs_submitted" : 0.0,
+                    "reserved_reduce_slots" : 0.0,
+                    "jobs_running" : 0.0,
+                    "running_300" : 0.0,
+                    "maps_launched" : 0.0,
+                    "reduces_launched" : 0.0,
+                    "running_60" : 0.0,
+                    "waiting_reduces" : 0.0,
+                    "maps_failed" : 0.0,
+                    "jobs_killed" : 0.0
+                  },
+                  "jobtracker" : {
+                    "blacklisted_maps" : 0.0,
+                    "running_maps" : 0.0,
+                    "jobs_failed" : 0.0,
+                    "waiting_maps" : 0.0,
+                    "maps_completed" : 0.0,
+                    "trackers" : 1.0,
+                    "jobs_submitted" : 0.0,
+                    "map_slots" : 4.0,
+                    "reserved_reduce_slots" : 0.0,
+                    "trackers_graylisted" : 0.0,
+                    "heartbeats" : 3.32380952381,
+                    "jobs_running" : 0.0,
+                    "blacklisted_reduces" : 0.0,
+                    "maps_launched" : 0.0,
+                    "occupied_map_slots" : 0.0,
+                    "reduces_launched" : 0.0,
+                    "jobs_killed" : 0.0,
+                    "maps_failed" : 0.0,
+                    "maps_killed" : 0.0,
+                    "reduce_slots" : 2.0,
+                    "reduces_killed" : 0.0,
+                    "reduces_completed" : 0.0,
+                    "jobs_completed" : 0.0,
+                    "reserved_map_slots" : 0.0,
+                    "trackers_decommissioned" : 0.0,
+                    "reduces_failed" : 0.0,
+                    "trackers_blacklisted" : 0.0,
+                    "jobs_preparing" : 0.0,
+                    "running_reduces" : 0.0,
+                    "occupied_reduce_slots" : 0.0,
+                    "waiting_reduces" : 0.0
+                  }
+                },
+                "disk" : {
+                  "disk_total" : 101.515,
+                  "disk_free" : 93.4107777778,
+                  "part_max_used" : 12.8
+                },
+                "cpu" : {
+                  "cpu_speed" : 1986.0,
+                  "cpu_wio" : 0.510555555556,
+                  "cpu_num" : 1.0,
+                  "cpu_idle" : 45.9291666667,
+                  "cpu_nice" : 0.0,
+                  "cpu_aidle" : 0.0,
+                  "cpu_system" : 6.88277777778,
+                  "cpu_user" : 46.6838888889
+                },
+                "rpcdetailed" : {
+                  "getJobProfile_num_ops" : 0.0,
+                  "getStagingAreaDir_num_ops" : 0.0,
+                  "getProtocolVersion_avg_time" : 0.0,
+                  "getBuildVersion_avg_time" : 0.0,
+                  "getBuildVersion_num_ops" : 0.0,
+                  "getNewJobId_avg_time" : 0.0,
+                  "getQueueAdmins_num_ops" : 0.0,
+                  "getSystemDir_num_ops" : 0.0,
+                  "getTaskCompletionEvents_num_ops" : 0.0,
+                  "getJobProfile_avg_time" : 0.0,
+                  "submitJob_num_ops" : 0.0,
+                  "getStagingAreaDir_avg_time" : 2.0,
+                  "getNewJobId_num_ops" : 0.0,
+                  "getJobCounters_num_ops" : 0.0,
+                  "getTaskCompletionEvents_avg_time" : 0.111111111111,
+                  "getProtocolVersion_num_ops" : 0.0,
+                  "submitJob_avg_time" : 312.0,
+                  "getSystemDir_avg_time" : 0.0,
+                  "getJobStatus_num_ops" : 0.0,
+                  "getJobCounters_avg_time" : 0.0,
+                  "getQueueAdmins_avg_time" : 0.0,
+                  "heartbeat_num_ops" : 3.32380952381,
+                  "heartbeat_avg_time" : 0.142915649166,
+                  "getJobStatus_avg_time" : 0.0
+                },
+                "load" : {
+                  "load_fifteen" : 0.8845,
+                  "load_one" : 0.516833333333,
+                  "load_five" : 0.740888888889
+                },
+                "jvm" : {
+                  "memHeapCommittedM" : 185.1875,
+                  "logFatal" : 0.0,
+                  "threadsBlocked" : 0.0,
+                  "threadsWaiting" : 19.0,
+                  "gcCount" : 0.00277777777778,
+                  "logWarn" : 0.0,
+                  "logError" : 0.0,
+                  "memNonHeapCommittedM" : 23.75,
+                  "gcTimeMillis" : 0.641666666667,
+                  "memNonHeapUsedM" : 23.1303326472,
+                  "logInfo" : 0.0,
+                  "threadsNew" : 0.0,
+                  "memHeapUsedM" : 101.890453742,
+                  "threadsTerminated" : 0.0,
+                  "threadsTimedWaiting" : 10.0,
+                  "threadsRunnable" : 6.0
+                },
+                "network" : {
+                  "pkts_out" : 0.455111111111,
+                  "bytes_in" : 50.645,
+                  "bytes_out" : 119.762888889,
+                  "pkts_in" : 0.411222222222
+                },
+                "memory" : {
+                  "mem_total" : 2054932.0,
+                  "swap_free" : 4074713.26667,
+                  "mem_buffers" : 13563.6333333,
+                  "mem_shared" : 0.0,
+                  "mem_cached" : 175195.088889,
+                  "mem_free" : 117578.155556,
+                  "swap_total" : 4128760.0
+                }
+              },
+              "component" : [
+                {
+                  "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/JOBTRACKER",
+                  "ServiceComponentInfo" : {
+                    "cluster_name" : "mycluster",
+                    "component_name" : "JOBTRACKER",
+                    "service_name" : "MAPREDUCE"
+                  }
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER",
+          "ServiceComponentInfo" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "service_name" : "MAPREDUCE"
+          },
+          "host_components" : [
+            {
+              "href" : "http://localhost:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+              "HostRoles" : {
+                "configs" : "{\"mapred-site\":\"version1\",\"global\":\"version1\",\"core-site\":\"version1\"}",
+                "cluster_name" : "mycluster",
+                "desired_configs" : "{}",
+                "desired_state" : "INSTALLED",
+                "state" : "INSTALLED",
+                "component_name" : "TASKTRACKER",
+                "host_name" : "dev.hortonworks.com"
+              },
+              "metrics" : {
+                "boottime" : 1.353113263E9,
+                "process" : {
+                  "proc_total" : 542.625,
+                  "proc_run" : 1.81944444444
+                },
+                "rpc" : {
+                  "rpcAuthorizationSuccesses" : 7.15827882667E7,
+                  "SentBytes" : 7.15827882667E7,
+                  "rpcAuthorizationFailures" : 0.0,
+                  "ReceivedBytes" : 7.15827882667E7,
+                  "NumOpenConnections" : 0.0,
+                  "callQueueLen" : 0.0,
+                  "rpcAuthenticationSuccesses" : 0.0,
+                  "RpcQueueTime_num_ops" : 7.15827882667E7,
+                  "RpcProcessingTime_num_ops" : 7.15827882667E7,
+                  "RpcProcessingTime_avg_time" : 0.151111111111,
+                  "rpcAuthenticationFailures" : 0.0,
+                  "RpcQueueTime_avg_time" : 0.151111111111
+                },
+                "ugi" : {
+                  "loginSuccess_num_ops" : 0.0,
+                  "loginFailure_num_ops" : 0.0,
+                  "loginSuccess_avg_time" : 0.0,
+                  "loginFailure_avg_time" : 0.0
+                },
+                "mapred" : {
+                  "shuffleOutput" : {
+                    "shuffle_handler_busy_percent" : 0.0
+                  },
+                  "tasktracker" : {
+                    "reduces_running" : 0.0,
+                    "maps_running" : 0.0,
+                    "reduceTaskSlots" : 2.0,
+                    "mapTaskSlots" : 4.0
+                  }
+                },
+                "disk" : {
+                  "disk_total" : 101.515,
+                  "disk_free" : 93.4107777778,
+                  "part_max_used" : 12.8
+                },
+                "cpu" : {
+                  "cpu_speed" : 1986.0,
+                  "cpu_wio" : 0.519444444444,
+                  "cpu_num" : 1.0,
+                  "cpu_idle" : 46.9705555556,
+                  "cpu_nice" : 0.0,
+                  "cpu_aidle" : 0.0,
+                  "cpu_system" : 6.75972222222,
+                  "cpu_user" : 45.7563888889
+                },
+                "rpcdetailed" : {
+                  "getProtocolVersion_avg_time" : 0.0,
+                  "getProtocolVersion_num_ops" : 4
+                },
+                "load" : {
+                  "load_fifteen" : 0.882305555556,
+                  "load_one" : 0.523944444444,
+                  "load_five" : 0.739694444444
+                },
+                "jvm" : {
+                  "memHeapCommittedM" : 30.375,
+                  "logFatal" : 0.0,
+                  "threadsBlocked" : 0.0,
+                  "threadsWaiting" : 14.5333333333,
+                  "gcCount" : 7.15827883321E7,
+                  "logWarn" : 0.0,
+                  "logError" : 0.0,
+                  "memNonHeapCommittedM" : 23.1875,
+                  "gcTimeMillis" : 7.15827883254E7,
+                  "memNonHeapUsedM" : 21.7573377917,
+                  "logInfo" : 0.0,
+                  "threadsNew" : 0.0,
+                  "memHeapUsedM" : 7.07001514861,
+                  "threadsTerminated" : 0.0,
+                  "threadsTimedWaiting" : 8.71666666667,
+                  "threadsRunnable" : 6.26666666667
+                },
+                "network" : {
+                  "pkts_out" : 0.453888888889,
+                  "bytes_in" : 50.5375,
+                  "bytes_out" : 119.456111111,
+                  "pkts_in" : 0.410277777778
+                },
+                "memory" : {
+                  "mem_total" : 2054932.0,
+                  "swap_free" : 4074707.96667,
+                  "mem_buffers" : 13563.6555556,
+                  "mem_shared" : 0.0,
+                  "mem_cached" : 175260.0,
+                  "mem_free" : 115051.811111,
+                  "swap_total" : 4128760.0
+                }
+              },
+              "component" : [
+                {
+                  "href" : "http://localhost:8080/api/clusters/mycluster/services/MAPREDUCE/components/TASKTRACKER",
+                  "ServiceComponentInfo" : {
+                    "cluster_name" : "mycluster",
+                    "component_name" : "TASKTRACKER",
+                    "service_name" : "MAPREDUCE"
+                  }
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

+ 664 - 4
ambari-web/app/assets/data/hosts/hosts.json

@@ -7,7 +7,7 @@
         "cpu_count" : 1,
         "cluster_name" : "mycluster",
         "last_registration_time" : 1352386560520,
-        "rack_info" : "/default-rack",
+        "rack_info" : "/default-rack2",
         "total_mem" : 3082813,
         "os_arch" : "x86_64",
         "host_name" : "dev1.hortonworks.com",
@@ -83,7 +83,7 @@
         "cluster_name" : "mycluster",
         "last_registration_time" : 1352386560520,
         "rack_info" : "/default-rack",
-        "total_mem" : 3082813,
+        "total_mem" : 3086813,
         "os_arch" : "x86_64",
         "host_name" : "dev2.hortonworks.com",
         "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
@@ -154,10 +154,10 @@
       
       "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev3.hortonworks.com",
       "Hosts" : {
-        "cpu_count" : 1,
+        "cpu_count" : 16,
         "cluster_name" : "mycluster",
         "last_registration_time" : 1352386560520,
-        "rack_info" : "/default-rack",
+        "rack_info" : "/default-rack3",
         "total_mem" : 3082813,
         "os_arch" : "x86_64",
         "host_name" : "dev3.hortonworks.com",
@@ -224,6 +224,666 @@
           }
         }
       ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 5,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack8",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com2",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 2,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack1",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com3",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 1,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com4",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 3,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com5",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 1,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com6",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 2,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com7",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 3,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com8",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 2,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com9",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 3,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com10",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
+    },
+    {
+      "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com",
+      "Hosts" : {
+        "cpu_count" : 4,
+        "cluster_name" : "mycluster",
+        "last_registration_time" : 1352386560520,
+        "rack_info" : "/default-rack",
+        "total_mem" : 3082813,
+        "os_arch" : "x86_64",
+        "host_name" : "dev.hortonworks.com11",
+        "disk_info" : "[{\"available\":\"47295056\",\"mountpoint\":\"/\",\"used\":\"3786948\",\"percent\":\"8%\",\"size\":\"51606140\",\"type\":\"ext4\"},{\"available\":\"1542800\",\"mountpoint\":\"/dev/shm\",\"used\":\"248\",\"percent\":\"1%\",\"size\":\"1543048\",\"type\":\"tmpfs\"},{\"available\":\"432210\",\"mountpoint\":\"/boot\",\"used\":\"38034\",\"percent\":\"9%\",\"size\":\"495844\",\"type\":\"ext4\"},{\"available\":\"44459872\",\"mountpoint\":\"/home\",\"used\":\"184220\",\"percent\":\"1%\",\"size\":\"47033288\",\"type\":\"ext4\"},{\"available\":\"902105496\",\"mountpoint\":\"/media/sf_ambari\",\"used\":\"74551908\",\"percent\":\"8%\",\"size\":\"976657404\",\"type\":\"vboxsf\"}]",
+        "last_heartbeat_time" : 1352461939047,
+        "os_type" : "centos6",
+        "ip" : "10.0.2.15"
+      },
+      "host_components" : [
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/SECONDARY_NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "SECONDARY_NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/JOBTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "JOBTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/HDFS_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "HDFS_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/TASKTRACKER",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "TASKTRACKER",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/NAMENODE",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "NAMENODE",
+            "host_name" : "dev.hortonworks.com"
+          }
+        },
+        {
+          "href" : "http://dev.hortonworks.com:8080/api/clusters/mycluster/hosts/dev.hortonworks.com/host_components/MAPREDUCE_CLIENT",
+          "HostRoles" : {
+            "cluster_name" : "mycluster",
+            "component_name" : "MAPREDUCE_CLIENT",
+            "host_name" : "dev.hortonworks.com"
+          }
+        }
+      ]
     }
   ]
 }

+ 25 - 25
ambari-web/app/controllers/installer.js

@@ -238,7 +238,8 @@ App.InstallerController = Em.Controller.extend({
     var cluster = {
       name: App.db.getClusterName() || "",
       status: cStatus.status,
-      isCompleted: cStatus.isCompleted
+      isCompleted: cStatus.isCompleted,
+      requestId: cStatus.requestId
     };
     this.set('content.cluster', cluster);
 
@@ -513,28 +514,28 @@ App.InstallerController = Em.Controller.extend({
         dataNodeHosts.push({
           hostName: host.hostName,
           group: 'Default',
-          isInstalled : false
+          isInstalled: false
         });
       }
       if (isMrSelected && host.get('isTaskTracker')) {
         taskTrackerHosts.push({
           hostName: host.hostName,
           group: 'Default',
-          isInstalled : false
+          isInstalled: false
         });
       }
       if (isHbSelected && host.get('isRegionServer')) {
         regionServerHosts.push({
           hostName: host.hostName,
           group: 'Default',
-          isInstalled : false
+          isInstalled: false
         });
       }
       if (host.get('isClient')) {
         clientHosts.pushObject({
           hostName: host.hostName,
           group: 'Default',
-          isInstalled : false
+          isInstalled: false
         });
       }
     }, this);
@@ -587,10 +588,10 @@ App.InstallerController = Em.Controller.extend({
     var serviceConfigProperties = [];
     stepController.get('stepConfigs').forEach(function (_content) {
       _content.get('configs').forEach(function (_configProperties) {
-        var displayType =  _configProperties.get('displayType');
-        if(displayType === 'directories' || displayType === 'directory') {
+        var displayType = _configProperties.get('displayType');
+        if (displayType === 'directories' || displayType === 'directory') {
           var value = _configProperties.get('value').split(/\s+/g).join(',');
-          _configProperties.set('value',value);
+          _configProperties.set('value', value);
         }
         var configProperty = {
           id: _configProperties.get('id'),
@@ -720,9 +721,13 @@ App.InstallerController = Em.Controller.extend({
   },
 
   loadAdvancedConfigs: function () {
+    var configs = [];
     App.db.getSelectedServiceNames().forEach(function (_serviceName) {
-      this.loadAdvancedConfig(_serviceName);
+      var serviceComponents = this.loadAdvancedConfig(_serviceName);
+      configs = configs.concat(serviceComponents);
     }, this);
+    this.set('content.advancedServiceConfig', configs);
+    App.db.setAdvancedServiceConfig(configs);
   },
   /**
    * Generate serviceProperties save it to localdata
@@ -733,6 +738,7 @@ App.InstallerController = Em.Controller.extend({
     var self = this;
     var url = (App.testMode) ? '/data/wizard/stack/hdp/version01/' + serviceName + '.json' : App.apiPrefix + '/stacks/HDP/version/1.2.0/services/' + serviceName; // TODO: get this url from the stack selected by the user in Install Options page
     var method = 'GET';
+    var serviceComponents;
     $.ajax({
       type: method,
       url: url,
@@ -743,17 +749,8 @@ App.InstallerController = Em.Controller.extend({
         var jsonData = jQuery.parseJSON(data);
         console.log("TRACE: Step6 submit -> In success function for the loadAdvancedConfig call");
         console.log("TRACE: Step6 submit -> value of the url is: " + url);
-        var serviceComponents = jsonData.properties;
+        serviceComponents = jsonData.properties;
         serviceComponents.setEach('serviceName', serviceName);
-        var configs;
-        if (App.db.getAdvancedServiceConfig()) {
-          configs = App.db.getAdvancedServiceConfig();
-        } else {
-          configs = [];
-        }
-        configs = configs.concat(serviceComponents);
-        self.set('content.advancedServiceConfig', configs);
-        App.db.setAdvancedServiceConfig(configs);
         console.log('TRACE: servicename: ' + serviceName);
       },
 
@@ -766,6 +763,7 @@ App.InstallerController = Em.Controller.extend({
 
       statusCode: require('data/statusCodes')
     });
+    return serviceComponents;
   },
 
   /**
@@ -812,11 +810,12 @@ App.InstallerController = Em.Controller.extend({
         console.log("TRACE: STep8 -> value of the url is: " + url);
         console.log("TRACE: STep8 -> error code status is: " + request.status);
         console.log('Step8: Error message is: ' + request.responseText);
-        var clusterStatus = {
-          status: 'PENDING',
-          isInstallError: true,
-          isCompleted: false
-        };
+          var clusterStatus = {
+            status: 'PENDING',
+            isInstallError: false,
+            isCompleted: false
+          };
+
         self.saveClusterStatus(clusterStatus);
       },
 
@@ -828,12 +827,13 @@ App.InstallerController = Em.Controller.extend({
   /**
    * Clear all temporary data
    */
-  finish: function(){
+  finish: function () {
     this.setCurrentStep('1', false);
     App.db.setService(undefined); //not to use this data at AddService page
     App.db.setHosts(undefined);
     App.db.setMasterComponentHosts(undefined);
     App.db.setSlaveComponentHosts(undefined);
+    App.db.setClusterStatus(undefined);
   }
 
 });

+ 6 - 11
ambari-web/app/controllers/main/admin/user.js

@@ -43,10 +43,10 @@ App.MainAdminUserController = Em.Controller.extend({
       secondary:Em.I18n.t('no'),
 
       onPrimary:function () {
-        self.sendCommandToServer('/users/' +  event.context.get("userName"),"DELETE" ,{},
-          function (requestId) {
+        self.sendCommandToServer('/users/' +  event.context.get("userName"), "DELETE" ,{},
+          function (success) {
 
-            if (!requestId) {
+            if (!success) {
               return;
             }
 
@@ -68,7 +68,7 @@ App.MainAdminUserController = Em.Controller.extend({
   sendCommandToServer : function(url, method, postData, callback){
     var url =  (App.testMode) ?
         '/data/wizard/deploy/poll_1.json' : //content is the same as ours
-        App.apiPrefix + '/' + url;
+        App.apiPrefix + url;
 
     var method = App.testMode ? 'GET' : method;
 
@@ -79,17 +79,12 @@ App.MainAdminUserController = Em.Controller.extend({
       dataType: 'json',
       timeout: App.timeout,
       success: function(data){
-        if(data && data.Requests){
-          callback(data.Requests.id);
-        } else{
-          callback(null);
-          console.log('cannot get request id from ', data);
-        }
+          callback(true);
       },
 
       error: function (request, ajaxOptions, error) {
         //do something
-        callback(null);
+        callback(false);
         console.log('error on change component host status')
       },
 

+ 1 - 1
ambari-web/app/controllers/main/charts/heatmap_metrics/heatmap_metric.js

@@ -123,7 +123,7 @@ App.MainChartHeatmapMetric = Em.Object.extend({
     var clusterName = App.router.get('clusterController.clusterName');
     var fixedMetricName = this.get('defaultMetric');
     fixedMetricName = fixedMetricName.replace(/\./g, "/");
-    return App.formatUrl("/api/clusters/{clusterName}/hosts?fields={metricName}", {
+    return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts?fields={metricName}", {
       clusterName: App.router.get('clusterController.clusterName'),
       metricName: fixedMetricName
     }, "/data/cluster_metrics/cpu_1hr.json");

+ 162 - 45
ambari-web/app/controllers/main/host/add_controller.js

@@ -41,7 +41,9 @@ App.AddHostController = Em.Controller.extend({
     hostsInfo: null,
     slaveComponentHosts: null,
     masterComponentHosts: null,
-    serviceConfigProperties: null
+    serviceConfigProperties: null,
+    advancedServiceConfig: null,
+    controllerName: 'addHostController'
   }),
 
   /**
@@ -187,44 +189,15 @@ App.AddHostController = Em.Controller.extend({
    * Load clusterInfo(step1) to model
    */
   loadClusterInfo: function(){
-    var cStatus = App.db.getClusterStatus() || {status: "", isCompleted: false};
     var cluster = {
-      name: App.db.getClusterName() || "",
-      status: cStatus.status,
-      isCompleted: cStatus.isCompleted
+      name: App.router.getClusterName(),
+      status: "",
+      isCompleted: true
     };
     this.set('content.cluster', cluster);
     console.log("AddHostController:loadClusterInfo: loaded data ", cluster);
   },
 
-  /**
-   * Save all info about claster to model
-   * @param stepController Step1WizardController
-   */
-  saveClusterInfo: function (stepController) {
-    var cluster = stepController.get('content.cluster');
-    var clusterStatus = {
-      status: cluster.status,
-      isCompleted: cluster.isCompleted
-    }
-    App.db.setClusterName(cluster.name);
-    App.db.setClusterStatus(clusterStatus);
-
-    console.log("AddHostController:saveClusterInfo: saved data ", cluster);
-
-    //probably next line is extra work - need to check it
-    this.set('content.cluster', cluster);
-  },
-
-  /**
-   * save status of the cluster. This is called from step8 and step9 to persist install and start requestId
-   * @param clusterStatus object with status, isCompleted, requestId, isInstallError and isStartError field.
-   */
-  saveClusterStatus: function (clusterStatus) {
-    this.set('content.cluster', clusterStatus);
-    App.db.setClusterStatus(clusterStatus);
-  },
-
   /**
    * Temporary function for wizardStep9, before back-end integration
    */
@@ -232,7 +205,7 @@ App.AddHostController = Em.Controller.extend({
     var hostInfo = App.db.getHosts();
     for (var index in hostInfo) {
       hostInfo[index].status = "pending";
-      hostInfo[index].message = 'Waiting';
+      hostInfo[index].message = 'Information';
       hostInfo[index].progress = '0';
     }
     App.db.setHosts(hostInfo);
@@ -374,6 +347,7 @@ App.AddHostController = Em.Controller.extend({
       }
     }
     App.db.setHosts(hostInfo);
+    this.set('content.hostsInfo', hostInfo);
     console.log('addHostController:saveInstalledHosts: save hosts ', hostInfo);
   },
 
@@ -391,6 +365,8 @@ App.AddHostController = Em.Controller.extend({
       hosts.passphrase = '';
       hosts.confirmPassphrase = '';
     }
+    App.db.setHosts(null);
+    App.db.setAllHostNames(null);
   },
 
   /**
@@ -467,28 +443,33 @@ App.AddHostController = Em.Controller.extend({
     var clientHosts = [];
 
     hosts.forEach(function (host) {
+
       if (host.get('isDataNode')) {
         dataNodeHosts.push({
           hostName: host.hostName,
-          group: 'Default'
+          group: 'Default',
+          isInstalled: host.get('isDataNodeInstalled')
         });
       }
       if (isMrSelected && host.get('isTaskTracker')) {
         taskTrackerHosts.push({
           hostName: host.hostName,
-          group: 'Default'
+          group: 'Default',
+          isInstalled: host.get('isTaskTrackerInstalled')
         });
       }
       if (isHbSelected && host.get('isRegionServer')) {
         regionServerHosts.push({
           hostName: host.hostName,
-          group: 'Default'
+          group: 'Default',
+          isInstalled: host.get('isRegionServerInstalled')
         });
       }
       if (host.get('isClient')) {
         clientHosts.pushObject({
           hostName: host.hostName,
-          group: 'Default'
+          group: 'Default',
+          isInstalled: host.get('isClientInstalled')
         });
       }
     }, this);
@@ -520,14 +501,83 @@ App.AddHostController = Em.Controller.extend({
     });
 
     App.db.setSlaveComponentHosts(slaveComponentHosts);
+    console.log('addHostController.slaveComponentHosts: saved hosts', slaveComponentHosts);
     this.set('content.slaveComponentHosts', slaveComponentHosts);
   },
+  /**
+   * return slaveComponents bound to hosts
+   * @return {Array}
+   */
+  getSlaveComponentHosts: function () {
+    var components = [{
+      name : 'DATANODE',
+      service : 'HDFS'
+    },
+    {
+      name: 'TASKTRACKER',
+      service: 'MAPREDUCE'
+    },{
+      name: 'HBASE_REGIONSERVER',
+      service: 'HBASE'
+    }];
+
+    var result = [];
+    var services = App.Service.find();
+    var selectedServices = this.get('content.services').filterProperty('isSelected', true).mapProperty('serviceName');
+    for(var index=0; index < components.length; index++){
+      var comp = components[index];
+      if(!selectedServices.contains(comp.service)){
+        continue;
+      }
+
+
+      var service = services.findProperty('id', comp.service);
+      var hosts = [];
+
+      service.get('hostComponents').filterProperty('componentName', comp.name).forEach(function (host_component) {
+          hosts.push({
+            group: "Default",
+            hostName: host_component.get('host.id'),
+            isInstalled: true
+          });
+      }, this);
+
+      result.push({
+        componentName: comp.name,
+        displayName: App.format.role(comp.name),
+        hosts: hosts,
+        isInstalled: true
+      })
+    }
+
+    var clientsHosts = App.HostComponent.find().filterProperty('componentName', 'HDFS_CLIENT');
+    var hosts = [];
+
+    clientsHosts.forEach(function (host_component) {
+        hosts.push({
+          group: "Default",
+          hostName: host_component.get('host.id'),
+          isInstalled: true
+        });
+    }, this);
+
+    result.push({
+      componentName: 'CLIENT',
+      displayName: 'client',
+      hosts: hosts,
+      isInstalled: true
+    })
 
+    return result;
+  },
   /**
    * Load master component hosts data for using in required step controllers
    */
   loadSlaveComponentHosts: function () {
     var slaveComponentHosts = App.db.getSlaveComponentHosts();
+    if(!slaveComponentHosts){
+      slaveComponentHosts = this.getSlaveComponentHosts();
+    }
     this.set("content.slaveComponentHosts", slaveComponentHosts);
     console.log("AddHostController.loadSlaveComponentHosts: loaded hosts ", slaveComponentHosts);
   },
@@ -542,7 +592,8 @@ App.AddHostController = Em.Controller.extend({
       _content.get('configs').forEach(function (_configProperties) {
         var configProperty = {
           name: _configProperties.get('name'),
-          value: _configProperties.get('value')
+          value: _configProperties.get('value'),
+          service: _configProperties.get('serviceName')
         };
         serviceConfigProperties.push(configProperty);
       }, this);
@@ -578,13 +629,15 @@ App.AddHostController = Em.Controller.extend({
   saveClients: function(stepController){
     var clients = [];
     var serviceComponents = require('data/service_components');
+    var hostComponents = App.HostComponent.find();
 
     stepController.get('content').filterProperty('isSelected',true).forEach(function (_service) {
       var client = serviceComponents.filterProperty('service_name', _service.serviceName).findProperty('isClient', true);
       if (client) {
         clients.pushObject({
           component_name: client.component_name,
-          display_name: client.display_name
+          display_name: client.display_name,
+          isInstalled: hostComponents.filterProperty('componentName', client.component_name).length > 0
         });
       }
     }, this);
@@ -622,6 +675,55 @@ App.AddHostController = Em.Controller.extend({
     }
   },
 
+  loadAdvancedConfigs: function () {
+    App.db.getSelectedServiceNames().forEach(function (_serviceName) {
+      this.loadAdvancedConfig(_serviceName);
+    }, this);
+  },
+  /**
+   * Generate serviceProperties save it to localdata
+   * called form stepController step6WizardController
+   */
+
+  loadAdvancedConfig: function (serviceName) {
+    var self = this;
+    var url = (App.testMode) ? '/data/wizard/stack/hdp/version01/' + serviceName + '.json' : App.apiPrefix + '/stacks/HDP/version/1.2.0/services/' + serviceName; // TODO: get this url from the stack selected by the user in Install Options page
+    var method = 'GET';
+    $.ajax({
+      type: method,
+      url: url,
+      async: false,
+      dataType: 'text',
+      timeout: App.timeout,
+      success: function (data) {
+        var jsonData = jQuery.parseJSON(data);
+        console.log("TRACE: Step6 submit -> In success function for the loadAdvancedConfig call");
+        console.log("TRACE: Step6 submit -> value of the url is: " + url);
+        var serviceComponents = jsonData.properties;
+        serviceComponents.setEach('serviceName', serviceName);
+        var configs;
+        if (App.db.getAdvancedServiceConfig()) {
+          configs = App.db.getAdvancedServiceConfig();
+        } else {
+          configs = [];
+        }
+        configs = configs.concat(serviceComponents);
+        self.set('content.advancedServiceConfig', configs);
+        App.db.setAdvancedServiceConfig(configs);
+        console.log('TRACE: servicename: ' + serviceName);
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log("TRACE: STep6 submit -> In error function for the loadAdvancedConfig call");
+        console.log("TRACE: STep6 submit-> value of the url is: " + url);
+        console.log("TRACE: STep6 submit-> error code status is: " + request.status);
+        console.log('Step6 submit: Error message is: ' + request.responseText);
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+  },
+
   /**
    * Generate clients list for selected services and save it to model
    * @param stepController step8WizardController or step9WizardController
@@ -629,10 +731,11 @@ App.AddHostController = Em.Controller.extend({
   installServices: function () {
     var self = this;
     var clusterName = this.get('content.cluster.name');
-    var url = App.apiPrefix + '/clusters/' + clusterName + '/services?state=INIT';
+    var url = (App.testMode) ? '/data/wizard/deploy/poll_1.json' : App.apiPrefix + '/clusters/' + clusterName + '/services?state=INIT';
+    var method = (App.testMode) ? 'GET' : 'PUT';
     var data = '{"ServiceInfo": {"state": "INSTALLED"}}';
     $.ajax({
-      type: 'PUT',
+      type: method,
       url: url,
       data: data,
       async: false,
@@ -640,18 +743,21 @@ App.AddHostController = Em.Controller.extend({
       timeout: App.timeout,
       success: function (data) {
         var jsonData = jQuery.parseJSON(data);
+        var installSartTime = new Date().getTime();
         console.log("TRACE: STep8 -> In success function for the installService call");
         console.log("TRACE: STep8 -> value of the url is: " + url);
         if (jsonData) {
           var requestId = jsonData.href.match(/.*\/(.*)$/)[1];
+
           console.log('requestId is: ' + requestId);
           var clusterStatus = {
             status: 'PENDING',
             requestId: requestId,
             isInstallError: false,
-            isCompleted: false
+            isCompleted: false,
+            installStartTime: installSartTime
           };
-          self.saveClusterStatus(clusterStatus);
+          //self.saveClusterStatus(clusterStatus);
         } else {
           console.log('ERROR: Error occurred in parsing JSON data');
         }
@@ -667,7 +773,7 @@ App.AddHostController = Em.Controller.extend({
           isInstallError: true,
           isCompleted: false
         };
-        self.saveClusterStatus(clusterStatus);
+        //self.saveClusterStatus(clusterStatus);
       },
 
       statusCode: require('data/statusCodes')
@@ -682,6 +788,17 @@ App.AddHostController = Em.Controller.extend({
   clearAllSteps: function () {
     this.clearHosts();
     //todo it)
+  },
+
+  /**
+   * Clear all temporary data
+   */
+  finish: function(){
+    this.setCurrentStep('1', false);
+    App.db.setService(undefined); //not to use this data at AddService page
+    App.db.setHosts(undefined);
+    App.db.setMasterComponentHosts(undefined);
+    App.db.setSlaveComponentHosts(undefined);
   }
 
 });

+ 40 - 14
ambari-web/app/controllers/main/service/add_controller.js

@@ -43,7 +43,8 @@ App.AddServiceController = Em.Controller.extend({
     masterComponentHosts: null,
     serviceConfigProperties: null,
     advancedServiceConfig: null,
-    controllerName: 'addServiceController'
+    controllerName: 'addServiceController',
+    isWizard: true
   }),
 
   /**
@@ -166,15 +167,30 @@ App.AddServiceController = Em.Controller.extend({
    * Load clusterInfo(step1) to model
    */
   loadClusterInfo: function(){
-    var cluster = {
-      name: App.router.getClusterName(),
-      status: "",
-      isCompleted: true
-    };
+    var cluster = App.db.getClusterStatus();
+    if(!cluster){
+      cluster = {
+        name: App.router.getClusterName(),
+        status: "",
+        isCompleted: false
+      };
+      App.db.setClusterStatus(cluster);
+    }
     this.set('content.cluster', cluster);
     console.log("AddServiceController:loadClusterInfo: loaded data ", cluster);
   },
 
+  /**
+   * save status of the cluster. This is called from step8 and step9 to persist install and start requestId
+   * @param clusterStatus object with status, isCompleted, requestId, isInstallError and isStartError field.
+   */
+  saveClusterStatus: function (clusterStatus) {
+    clusterStatus.name = this.get('content.cluster.name');
+    this.set('content.cluster', clusterStatus);
+    console.log('called saveClusterStatus ' + JSON.stringify(clusterStatus));
+    App.db.setClusterStatus(clusterStatus);
+  },
+
   /**
    * Temporary function for wizardStep9, before back-end integration
    */
@@ -441,19 +457,29 @@ App.AddServiceController = Em.Controller.extend({
       var service = services.findProperty('id', comp.service);
       var hosts = [];
 
-      service.get('hostComponents').filterProperty('componentName', comp.name).forEach(function (host_component) {
+      if(!service){
+        service = services.findProperty('id', 'HDFS');
+        service.get('hostComponents').filterProperty('componentName', 'DATANODE').forEach(function (host_component) {
+          hosts.push({
+            group: "Default",
+            hostName: host_component.get('host.id'),
+            isInstalled: false
+          });
+        }, this);
+      } else {
+        service.get('hostComponents').filterProperty('componentName', comp.name).forEach(function (host_component) {
           hosts.push({
             group: "Default",
             hostName: host_component.get('host.id'),
             isInstalled: true
           });
-      }, this);
+        }, this);
+      }
 
       result.push({
         componentName: comp.name,
         displayName: App.format.role(comp.name),
-        hosts: hosts,
-        isInstalled: true
+        hosts: hosts
       })
     }
 
@@ -471,8 +497,7 @@ App.AddServiceController = Em.Controller.extend({
     result.push({
       componentName: 'CLIENT',
       displayName: 'client',
-      hosts: hosts,
-      isInstalled: true
+      hosts: hosts
     })
 
     return result;
@@ -658,7 +683,7 @@ App.AddServiceController = Em.Controller.extend({
             isCompleted: false,
             installStartTime: installSartTime
           };
-          //self.saveClusterStatus(clusterStatus);
+          self.saveClusterStatus(clusterStatus);
         } else {
           console.log('ERROR: Error occurred in parsing JSON data');
         }
@@ -674,7 +699,7 @@ App.AddServiceController = Em.Controller.extend({
           isInstallError: true,
           isCompleted: false
         };
-        //self.saveClusterStatus(clusterStatus);
+        self.saveClusterStatus(clusterStatus);
       },
 
       statusCode: require('data/statusCodes')
@@ -700,6 +725,7 @@ App.AddServiceController = Em.Controller.extend({
     App.db.setHosts(undefined);
     App.db.setMasterComponentHosts(undefined);
     App.db.setSlaveComponentHosts(undefined);
+    App.db.setClusterStatus(undefined);
   }
 
 });

+ 836 - 38
ambari-web/app/controllers/main/service/info/configs.js

@@ -23,14 +23,21 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   name: 'mainServiceInfoConfigsController',
   stepConfigs: [], //contains all field properties that are viewed in this service
   selectedService: null,
+  serviceConfigTags: null,
+  globalConfigs: [],
+  uiConfigs: [],
+  isApplyingChanges: false,
   serviceConfigs: require('data/service_configs'),
+  configs: require('data/config_properties').configProperties,
+  configMapping: require('data/config_mapping'),
+  customConfigs: require('data/custom_configs'),
 
   isSubmitDisabled: function () {
-    return !this.stepConfigs.everyProperty('errorCount', 0);
-  }.property('stepConfigs.@each.errorCount'),
+    return (!(this.stepConfigs.everyProperty('errorCount', 0)) || this.get('isApplyingChanges'));
+  }.property('stepConfigs.@each.errorCount', 'isApplyingChanges'),
 
-  slaveComponentHosts : function(){
-    if(!this.get('content')){
+  slaveComponentHosts: function () {
+    if (!this.get('content')) {
       return;
     }
     console.log('slaveComponentHosts', App.db.getSlaveComponentHosts());
@@ -39,11 +46,13 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
 
   clearStep: function () {
     this.get('stepConfigs').clear();
+    this.get('globalConfigs').clear();
+    if (this.get('serviceConfigTags')) {
+      this.set('serviceConfigTags', null);
+    }
   },
 
-  serviceConfigProperties: function() {
-    console.log('serviceConfigProperties');
-    console.log(App.db.getServiceConfigProperties());
+  serviceConfigProperties: function () {
     return App.db.getServiceConfigProperties();
   }.property('content'),
 
@@ -52,34 +61,204 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
    */
   loadStep: function () {
     console.log("TRACE: Loading configure for service");
-
     this.clearStep();
-    this.renderServiceConfigs(this.serviceConfigs);
+    //STEP 1: set the present state of the service Properties. State depends on array of: unique combination of type(ex. core-site) and tag (ex. version01) derived from serviceInfo desired_state
+    this.setServciceConfigs();
+    //STEP 2: Create an array of objects defining tagnames to be polled and new tagnames to be set after submit
+    this.setServiceTagNames();
+    //STEP 3: Set globalConfigs and Get an array of serviceProperty objects
+    var serviceConfigs = this.getSitesConfigProperties();
+    //STEP 4: Remove properties mentioned in configMapping from serviceConfig
+    this.get('configMapping').forEach(function (_configs) {
 
-    var storedServices = this.get('serviceConfigProperties');
-    if (storedServices) {
-      var configs = new Ember.Set();
+    }, this)
+    //STEP 5: Add the advanced configs to the serviceConfigs property
 
-      // for all services`
-      this.get('stepConfigs').forEach(function (_content) {
-        //for all components
-        _content.get('configs').forEach(function (_config) {
+    var advancedConfig = App.router.get('installerController').loadAdvancedConfig(this.get('content.serviceName'));
+    var service = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName'));
+    advancedConfig.forEach(function (_config) {
+      if (service) {
+        if (!this.get('configMapping').someProperty('name', _config.name)) {
+          if (service.configs.someProperty('name', _config.name)) {
+            service.configs.findProperty('name', _config.name).description = _config.description;
+          } else {
+            _config.id = "site property";
+            _config.category = 'Advanced';
+            _config.displayName = _config.name;
+            _config.defaultValue = _config.value;
+            if (/\${.*}/.test(_config.value) || (service.serviceName !== 'OOZIE' && service.serviceName !== 'HBASE')) {
+              _config.isRequired = false;
+              _config.value = '';
+            } else if (/^\s+$/.test(_config.value)) {
+              _config.isRequired = false;
+            }
+            _config.isVisible = true;
+            _config.displayType = 'advanced';
+            service.configs.pushObject(_config);
+          }
+        }
+      }
+    }, this);
+    this.loadCustomConfig();
 
-          var componentVal = storedServices.findProperty('name', _config.get('name'));
-          //if we have config for specified component
-          if(componentVal){
+    this.renderServiceConfigs(this.get('serviceConfigs'));
 
-            //set it
-            _config.set('value', componentVal.value)
-          }
+    console.log('---------------------------------------');
 
-        }, this);
+
+  },
+
+  /**
+   * Get configuration for the *-site.xml
+   */
+  setServciceConfigs: function () {
+    var self = this;
+    var url = App.apiPrefix + '/clusters/' + App.router.getClusterName() + '/services/' + this.get('content.serviceName');
+    $.ajax({
+      type: 'GET',
+      url: url,
+      async: false,
+      timeout: 10000,
+      dataType: 'text',
+      success: function (data) {
+        console.log("TRACE: In success function for the GET getServciceConfigs call");
+        console.log("TRACE: The url is: " + url);
+        var jsonData = jQuery.parseJSON(data);
+        self.set('serviceConfigTags', jQuery.parseJSON(jsonData.ServiceInfo.desired_configs));
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log("TRACE: In error function for the getServciceConfigs call");
+        console.log("TRACE: value of the url is: " + url);
+        console.log("TRACE: error code status is: " + request.status);
+
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+  },
+
+  /**
+   * set tagnames for configuration of the *-site.xml
+   */
+  setServiceTagNames: function () {
+    console.log("TRACE: In setServiceTagNames function:");
+    var newServiceConfigTags = [];
+    var serviceConfigTags = this.get('serviceConfigTags');
+    var time = new Date().getMilliseconds();
+    console.log("The value of time is: " + time);
+    for (var index in serviceConfigTags) {
+      console.log("The value of serviceConfigTags[index]: " + serviceConfigTags[index]);
+      newServiceConfigTags.pushObject({
+        siteName: index,
+        tagName: serviceConfigTags[index],
+        newTagName: serviceConfigTags[index] + time
       }, this);
     }
+    this.set('serviceConfigTags', newServiceConfigTags);
+  },
 
-    console.log('---------------------------------------');
-    console.log(this.get('stepConfigs'));
+  /**
+   * Render a custom conf-site box for entering properties that will be written in *-site.xml files of the services
+   */
+  loadCustomConfig: function () {
+    var serviceConfig = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName'));
+    var customConfig = this.get('customConfigs').findProperty('serviceName', this.get('content.serviceName'));
+    serviceConfig.configs.pushObject(customConfig);
+  },
+
+  /**
+   * load the configs from the server
+   */
 
+  getSitesConfigProperties: function () {
+    var serviceConfigs = [];
+    var globalConfigs = [];
+    var localServiceConfigs = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName'));
+
+    this.get('serviceConfigTags').forEach(function (_tag) {
+      var properties = this.getSiteConfigProperties(_tag.siteName, _tag.tagName);
+      for (var index in properties) {
+        var serviceConfigObj = {
+          name: index,
+          value: properties[index],
+          defaultValue: properties[index],
+          filename: _tag.siteName + ".xml",
+          isVisible: true,
+          isRequired: true
+        };
+        if (_tag.siteName === 'global') {
+          if (localServiceConfigs.configs.someProperty('name', index)) {
+            var item = localServiceConfigs.configs.findProperty('name', index);
+            item.value = properties[index];
+            item.defaultValue = properties[index];
+            if (item.displayType === 'int') {
+              if (/\d+m$/.test(item.value)) {
+                item.value = item.value.slice(0, item.value.length - 1);
+                item.defaultValue = item.value;
+              }
+            }
+            if (item.displayType === 'checkbox') {
+              switch (item.value) {
+                case 'true' :
+                  item.value = true;
+                  break;
+                case 'false' :
+                  item.value = false;
+                  break;
+              }
+            }
+          }
+          serviceConfigObj.id = 'puppet var';
+          serviceConfigObj.serviceName = this.get('configs').someProperty('name', index) ? this.get('configs').findProperty('name', index).serviceName : null;
+          serviceConfigObj.category = this.get('configs').someProperty('name', index) ? this.get('configs').findProperty('name', index).category : null;
+          globalConfigs.pushObject(serviceConfigObj);
+        } else if (!this.get('configMapping').someProperty('name', index)) {
+          if (_tag.siteName !== localServiceConfigs.filename) {
+            serviceConfigObj.isVisible = false;
+          }
+          serviceConfigObj.id = 'site property';
+          serviceConfigObj.serviceName = this.get('content.serviceName');
+          serviceConfigObj.category = 'Advanced';
+          serviceConfigObj.displayName = index;
+          serviceConfigObj.displayType = 'advanced';
+          localServiceConfigs.configs.pushObject(serviceConfigObj);
+        }
+        serviceConfigs.pushObject(serviceConfigObj);
+      }
+    }, this);
+    this.set('globalConfigs', globalConfigs);
+    return serviceConfigs;
+  },
+
+  getSiteConfigProperties: function (sitename, tagname) {
+    var self = this;
+    var properties = {};
+    var url = App.apiPrefix + '/clusters/' + App.router.getClusterName() + '/configurations/?type=' + sitename + '&tag=' + tagname;
+    $.ajax({
+      type: 'GET',
+      url: url,
+      async: false,
+      timeout: 10000,
+      dataType: 'json',
+      success: function (data) {
+        console.log("TRACE: In success function for the GET getSiteConfigProperties call");
+        console.log("TRACE: The url is: " + url);
+        properties = data.items.findProperty('tag', tagname).properties;
+
+        console.log("The value of config properties is: " + properties);
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log("TRACE: In error function for the getServciceConfigs call");
+        console.log("TRACE: value of the url is: " + url);
+        console.log("TRACE: error code status is: " + request.status);
+
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+    return properties;
   },
 
   /**
@@ -89,6 +268,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   renderServiceConfigs: function (serviceConfigs) {
     serviceConfigs.forEach(function (_serviceConfig) {
       var serviceConfig = App.ServiceConfig.create({
+        filename: _serviceConfig.filename,
         serviceName: _serviceConfig.serviceName,
         displayName: _serviceConfig.displayName,
         configCategories: _serviceConfig.configCategories,
@@ -118,35 +298,653 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     _componentConfig.configs.forEach(function (_serviceConfigProperty) {
       var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty);
       serviceConfigProperty.serviceConfig = componentConfig;
-      serviceConfigProperty.initialValue();
+      this.initialValue(serviceConfigProperty);
       componentConfig.configs.pushObject(serviceConfigProperty);
       serviceConfigProperty.validate();
     }, this);
   },
 
+  restartServicePopup: function (event) {
+    console.log("Enered the entry pointttt");
+    var self = this;
+    var result;
+    console.log('I am over hererererere: ' + this.get('content.healthStatus'));
+    if (this.get('isApplyingChanges') === true) {
+      return;
+    }
+    App.ModalPopup.show({
+      header: 'Restart ' + self.get('content.serviceName'),
+      primary: 'Restart',
+      onPrimary: function () {
+        self.restartService();
+        this.hide();
+      },
+      onSecondary: function () {
+        this.hide();
+      },
+      bodyClass: Ember.View.extend({
+        template: Ember.Handlebars.compile(['<p>Restart the service</p>'].join('\n'))
+      })
+    });
+  },
+
+  restartService: function () {
+    console.log("In restart servicesssss");
+    this.set('isApplyingChanges', true);
+    this.get('serviceConfigTags').forEach(function (_tag) {
+      _tag.newTagName = _tag.newTagName + new Date().getMilliseconds();
+    }, this);
+
+    //Step 1: Stop the service
+
+    if (this.stopService()) {
+      this.doPolling('stop', function () {
+        this.applyConfigurations();
+      }, function () {
+        this.failuresInStop();
+      });
+    } else {
+      this.failuresInStop();
+    }
+  },
+
+  failuresInStop: function () {
+    console.log("Step 1 faliure");
+    this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to stop the service');
+    this.set('isApplyingChanges', false);
+  },
+
+  applyConfigurations: function () {
+    if (App.testMode === true) {
+      result = true
+    } else {
+      var result = this.saveServiceConfigProperties();
+    }
+
+    if (result === false) {
+      console.log("Step2 failure");
+      this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to apply configs. Start the service again with last configurations', this.startServiceWrapper);
+    } else {
+      if (this.startService()) {
+        this.doPolling('start', function () {
+          this.msgPopup('Restart ' + this.get('content.serviceName'), 'Restarted the service successfully with new configurations');
+          this.set('isApplyingChanges', false);
+        }, function () {
+          // this.rollBackPopup('Configs applied but failures encountered during starting/checking service. Do you want to rollback to the last service configuration and restart the service.');
+          console.log("Configs applied but failures encountered during starting/checking service.");
+        });
+      } else {
+        this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to start the service');
+        this.set('isApplyingChanges', false);
+      }
+      console.log("Error in start service API");
+    }
+  },
+
+  startServiceWrapper: function () {
+    if (this.startService()) {
+      this.doPolling('start', function () {
+        this.msgPopup('Restart ' + this.get('content.serviceName'), 'Started the service with the last known configuration.');
+        this.set('isApplyingChanges', false);
+      }, function () {
+        this.msgPopup('Restart ' + this.get('content.serviceName'), 'Started the service with the last known configuration.');
+        this.set('isApplyingChanges', false);
+      });
+    } else {
+      this.msgPopup('Restart ' + this.get('content.serviceName'), 'Started the service with the last known configuration.');
+      this.set('isApplyingChanges', false);
+    }
+  },
+
+
+  rollBack: function () {
+    var result;
+    //STEP 1: Apply the last known configuration
+    result = this.applyCreatedConfToService('previous');
+    //CASE 1: failure for rollback
+    if (result === false) {
+      console.log("rollback1 faliure");
+      this.msgPopup('Restart ' + this.get('content.serviceName'), 'Failed to rolled back to the last known configuration');
+    } else {
+      //STEP 2: start the service
+      if (this.startService()) {
+        this.doPolling('start', function () {
+          this.msgPopup('Restart ' + this.get('content.serviceName'), 'Successfully rolled back to the last known configuration');
+          this.set('isApplyingChanges', false);
+        }, function () {
+          this.msgPopup('Restart ' + this.get('content.serviceName'), 'Rolled back to the last configuration but failed to start the service with the rolled back configuration');
+          this.set('isApplyingChanges', false);
+        });
+      } else {
+        this.msgPopup('Restart ' + this.get('content.serviceName'), 'Rolled back to the last configuration but failed to start the service with the rolled back configuration');
+        this.set('isApplyingChanges', false);
+      }
+    }
+  },
+
+  startService: function () {
+    var self = this;
+    var clusterName = App.router.getClusterName();
+    var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName');
+    var method = (App.testMode) ? 'GET' : 'PUT';
+    var data = '{"ServiceInfo": {"state": "STARTED"}}';
+    var result;
+    $.ajax({
+      type: method,
+      url: url,
+      data: data,
+      async: false,
+      dataType: 'text',
+      timeout: 5000,
+      success: function (data) {
+        var jsonData = jQuery.parseJSON(data);
+        console.log("TRACE: In success function for the startService call");
+        console.log("TRACE: value of the url is: " + url);
+        result = true;
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log("TRACE: In error function for the startService call");
+        console.log("TRACE: value of the url is: " + url);
+        console.log("TRACE: error code status is: " + request.status);
+
+        result = (App.testMode) ? true : false;
+
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+    return result;
+  },
+
+  msgPopup: function (header, message, callback) {
+    var self = this;
+    var result;
+
+    App.ModalPopup.show({
+      header: 'Restart ' + self.get('content.serviceName'),
+      secondary: false,
+      onPrimary: function () {
+        if (callback !== undefined) {
+          callback();
+        }
+        this.hide();
+      },
+      bodyClass: Ember.View.extend({
+        template: Ember.Handlebars.compile(['<p>{{view.message}}</p>'].join('\n')),
+        message: message
+      })
+    });
+  },
+
+  rollBackPopup: function (message) {
+    var self = this;
+    var result;
+
+    App.ModalPopup.show({
+      header: 'Restart ' + self.get('content.serviceName'),
+      primary: 'Yes',
+      secondary: 'No',
+      onPrimary: function () {
+        self.rollBack();
+        this.hide();
+      },
+      bodyClass: Ember.View.extend({
+        template: Ember.Handlebars.compile(['<p>{{view.message}}</p>'].join('\n')),
+        message: message
+      })
+    });
+  },
+
+  stopService: function () {
+    var self = this;
+    var clusterName = App.router.getClusterName();
+    var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName');
+    var method = (App.testMode) ? 'GET' : 'PUT';
+    var data = '{"ServiceInfo": {"state": "INSTALLED"}}';
+    var result;
+    $.ajax({
+      type: method,
+      url: url,
+      data: data,
+      async: false,
+      dataType: 'text',
+      timeout: 5000,
+      success: function (data) {
+        var jsonData = jQuery.parseJSON(data);
+        console.log("TRACE: In success function for the stopService call");
+        console.log("TRACE: value of the url is: " + url);
+        result = true;
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log("TRACE: STep8 -> In error function for the stopService call");
+        console.log("TRACE: STep8 -> value of the url is: " + url);
+        console.log("TRACE: STep8 -> error code status is: " + request.status);
+        result = (App.testMode) ? true : false;
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+    return result;
+  },
+
   /**
    * Save config properties
    */
   saveServiceConfigProperties: function () {
-    var serviceConfigProperties = [];
-    this.get('stepConfigs').forEach(function (_content) {
-      _content.get('configs').forEach(function (_configProperties) {
-        var configProperty = {
-          name: _configProperties.get('name'),
-          value: _configProperties.get('value'),
-          service: _configProperties.get('serviceName')
-        };
-        serviceConfigProperties.push(configProperty);
+    var result = false;
+    var configs = this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs');
+    this.saveGlobalConfigs(configs);
+    this.saveSiteConfigs(configs);
+    this.setCustomConfigs();
+    var result = this.createConfigurations();
+    if (result === true) {
+      result = this.applyCreatedConfToService('new');
+    }
+    console.log("The result from applyCreatdConfToService is: " + result);
+    return result;
+  },
+
+  saveGlobalConfigs: function (configs) {
+    var globalConfigs = this.get('globalConfigs');
+    configs.filterProperty('id', 'puppet var').forEach(function (_config) {
+      if (globalConfigs.someProperty('name', _config.name)) {
+        globalConfigs.findProperty('name', _config.name).value = _config.value;
+      } else {
+        globalConfigs.pushObject({
+          name: _config.name,
+          value: _config.value
+        });
+      }
+    }, this);
+    this.set('globalConfigs', globalConfigs);
+  },
+
+  saveSiteConfigs: function (configs) {
+    var storedConfigs = this.get('stepConfigs').filterProperty('id', 'site property').filterProperty('value');
+    var uiConfigs = this.loadUiSideConfigs();
+    this.set('uiConfigs', storedConfigs.concat(uiConfigs));
+  },
+
+  loadUiSideConfigs: function () {
+    var uiConfig = [];
+    var configs = this.get('configMapping').filterProperty('foreignKey', null);
+    configs.forEach(function (_config) {
+      var value = this.getGlobConfigValue(_config.templateName, _config.value);
+      uiConfig.pushObject({
+        "id": "site property",
+        "name": _config.name,
+        "value": value,
+        "filename": _config.filename
+      });
+    }, this);
+    var dependentConfig = this.get('configMapping').filterProperty('foreignKey');
+    dependentConfig.forEach(function (_config) {
+      this.setConfigValue(uiConfig, _config);
+      uiConfig.pushObject({
+        "id": "site property",
+        "name": _config.name,
+        "value": _config.value,
+        "filename": _config.filename
+      });
+    }, this);
+    return uiConfig;
+  },
+  /**
+   * Set all site property that are derived from other puppet-variable
+   */
+
+  getGlobConfigValue: function (templateName, expression) {
+    var express = expression.match(/<(.*?)>/g);
+    var value = expression;
+    if (express == null) {
+      return expression;
+    }
+    express.forEach(function (_express) {
+      //console.log("The value of template is: " + _express);
+      var index = parseInt(_express.match(/\[([\d]*)(?=\])/)[1]);
+      if (this.get('globalConfigs').someProperty('name', templateName[index])) {
+        //console.log("The name of the variable is: " + this.get('content.serviceConfigProperties').findProperty('name', templateName[index]).name);
+        var globValue = this.get('globalConfigs').findProperty('name', templateName[index]).value;
+        value = value.replace(_express, globValue);
+      } else {
+        /*
+         console.log("ERROR: The variable name is: " + templateName[index]);
+         console.log("ERROR: mapped config from configMapping file has no corresponding variable in " +
+         "content.serviceConfigProperties. Two possible reasons for the error could be: 1) The service is not selected. " +
+         "and/OR 2) The service_config metadata file has no corresponding global var for the site property variable");
+         */
+        value = null;
+      }
+    }, this);
+    return value;
+  },
+  /**
+   * Set all site property that are derived from other site-properties
+   */
+  setConfigValue: function (uiConfig, config) {
+    var fkValue = config.value.match(/<(foreignKey.*?)>/g);
+    if (fkValue) {
+      fkValue.forEach(function (_fkValue) {
+        var index = parseInt(_fkValue.match(/\[([\d]*)(?=\])/)[1]);
+        if (uiConfig.someProperty('name', config.foreignKey[index])) {
+          var globalValue = uiConfig.findProperty('name', config.foreignKey[index]).value;
+          config.value = config.value.replace(_fkValue, globalValue);
+        } else if (this.get('stepConfigs').someProperty('name', config.foreignKey[index])) {
+          var globalValue;
+          if (this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value === '') {
+            globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).defaultValue;
+          } else {
+            globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value;
+          }
+          config.value = config.value.replace(_fkValue, globalValue);
+        }
       }, this);
+    }
+    if (fkValue = config.name.match(/<(foreignKey.*?)>/g)) {
+      fkValue.forEach(function (_fkValue) {
+        var index = parseInt(_fkValue.match(/\[([\d]*)(?=\])/)[1]);
+        if (uiConfig.someProperty('name', config.foreignKey[index])) {
+          var globalValue = uiConfig.findProperty('name', config.foreignKey[index]).value;
+          config.name = config.name.replace(_fkValue, globalValue);
+        } else if (this.get('stepConfigs').someProperty('name', config.foreignKey[index])) {
+          var globalValue;
+          if (this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value === '') {
+            globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).defaultValue;
+          } else {
+            globalValue = this.get('stepConfigs').findProperty('name', config.foreignKey[index]).value;
+          }
+          config.name = config.name.replace(_fkValue, globalValue);
+        }
+      }, this);
+    }
+    //For properties in the configMapping file having foreignKey and templateName properties.
+    var templateValue = config.value.match(/<(templateName.*?)>/g);
+    if (templateValue) {
+      templateValue.forEach(function (_value) {
+        var index = parseInt(_value.match(/\[([\d]*)(?=\])/)[1]);
+        if (this.get('globalConfigs').someProperty('name', config.templateName[index])) {
+          var globalValue = this.get('globalConfigs').findProperty('name', config.templateName[index]).value;
+          config.value = config.value.replace(_value, globalValue);
+        }
+      }, this);
+    }
+  },
+  createConfigurations: function () {
+    var result = true;
+    var serviceConfigTags = this.get('serviceConfigTags');
+    serviceConfigTags.forEach(function (_serviceTags) {
+      if (_serviceTags.siteName === 'global') {
+        console.log("TRACE: Inside globalssss");
+        result = this.createConfigSite(this.createGlobalSiteObj(_serviceTags.newTagName));
+      } else if (_serviceTags.siteName === 'core-site') {
+        console.log("TRACE: Inside core-site");
+        result = this.createConfigSite(this.createCoreSiteObj(_serviceTags.newTagName));
+      } else {
+        result = this.createConfigSite(this.createSiteObj(_serviceTags.siteName, _serviceTags.newTagName));
+      }
+      if (result === false) {
+        return false;
+      }
+    }, this);
+    return true;
+  },
+
+  createConfigSite: function (data) {
+    var result;
+    var realData = data;
+    console.log("Inside createConfigSite");
+    var clusterName = App.router.getClusterName();
+    var url = App.apiPrefix + '/clusters/' + clusterName + '/configurations';
+    $.ajax({
+      type: 'POST',
+      url: url,
+      data: JSON.stringify(data),
+      async: false,
+      dataType: 'text',
+      timeout: 5000,
+      success: function (data) {
+        var jsonData = jQuery.parseJSON(data);
+        result = true;
+        console.log("TRACE: In success function for the createConfigSite");
+        console.log("TRACE: value of the url is: " + url);
+        console.log("TRACE: value of the received data is: " + jsonData);
+      },
+
+      error: function (request, ajaxOptions, error) {
+        result = false;
+        console.log('TRACE: In Error ');
+        console.log("The original data was: " + JSON.stringify(realData));
+        console.log('TRACE: Error message is: ' + request.responseText);
+        console.log("TRACE: value of the url is: " + url);
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+    console.log("Exiting createConfigSite");
+    console.log("Value of result is: " + result);
+    return result;
+  },
 
+  createGlobalSiteObj: function (tagName) {
+    var globalSiteProperties = {};
+    this.get('globalConfigs').forEach(function (_globalSiteObj) {
+      // do not pass any globalConfigs whose name ends with _host or _hosts
+      if (!/_hosts?$/.test(_globalSiteObj.name)) {
+        // append "m" to JVM memory options
+        if (/_heapsize|_newsize|_maxnewsize$/.test(_globalSiteObj.name)) {
+          _globalSiteObj.value += "m";
+        }
+        globalSiteProperties[_globalSiteObj.name] = _globalSiteObj.value;
+        //console.log("TRACE: name of the global property is: " + _globalSiteObj.name);
+        //console.log("TRACE: value of the global property is: " + _globalSiteObj.value);
+      }
+    }, this);
+    return {"type": "global", "tag": tagName, "properties": globalSiteProperties};
+  },
+
+  createCoreSiteObj: function (tagName) {
+    var coreSiteObj = this.get('uiConfigs').filterProperty('filename', 'core-site.xml');
+    var coreSiteProperties = {};
+    // hadoop.proxyuser.oozie.hosts needs to be skipped if oozie is not selected
+    var isOozieSelected = (this.get('content.serviceName') === 'OOZIE');
+    coreSiteObj.forEach(function (_coreSiteObj) {
+      if (isOozieSelected || _coreSiteObj.name != 'hadoop.proxyuser.oozie.hosts') {
+        coreSiteProperties[_coreSiteObj.name] = _coreSiteObj.value;
+      }
+      //console.log("TRACE: name of the property is: " + _coreSiteObj.name);
+      //console.log("TRACE: value of the property is: " + _coreSiteObj.value);
+    }, this);
+    return {"type": "core-site", "tag": tagName, "properties": coreSiteProperties};
+  },
+
+  createSiteObj: function (siteName, tagName) {
+    var siteObj = this.get('uiConfigs').filterProperty('filename', siteName + ".xml");
+    var siteProperties = {};
+    siteObj.forEach(function (_siteObj) {
+      siteProperties[_siteObj.name] = _siteObj.value;
+    }, this);
+    return {"type": siteName, "tag": tagName, "properties": siteProperties};
+  },
+
+  applyCreatedConfToService: function (configStatus) {
+    var result;
+    var clusterName = App.router.getClusterName();
+    var url = App.apiPrefix + '/clusters/' + clusterName + '/services/' + this.get('content.serviceName');
+    var data = this.getConfigForService(configStatus);
+    var realData = data;
+    $.ajax({
+      type: 'PUT',
+      url: url,
+      async: false,
+      dataType: 'text',
+      data: JSON.stringify(data),
+      timeout: 5000,
+      success: function (data) {
+        var jsonData = jQuery.parseJSON(data);
+        console.log("TRACE: In success function for the applyCreatedConfToService call");
+        console.log("TRACE: value of the url is: " + url);
+        result = true;
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log('Error: In Error of apply');
+        console.log("The original data was: " + JSON.stringify(realData));
+        console.log('Error: Error message is: ' + request.responseText);
+        result = false;
+      },
+
+      statusCode: require('data/statusCodes')
+    });
+    console.log("Exiting applyCreatedConfToService");
+    console.log("Value of result is: " + result);
+    return result;
+  },
+
+  getConfigForService: function (config) {
+    var data = {config: {}};
+    this.get('serviceConfigTags').forEach(function (_serviceTag) {
+      if (config === 'new')
+        data.config[_serviceTag.siteName] = _serviceTag.newTagName;
+      else if (config = 'previous') {
+        data.config[_serviceTag.siteName] = _serviceTag.tagName;
+      }
+    }, this);
+    return data;
+  },
+
+  setCustomConfigs: function () {
+    var site = this.get('stepConfigs').filterProperty('id', 'conf-site');
+    site.forEach(function (_site) {
+      var keyValue = _site.value.split(/\n+/);
+      if (keyValue) {
+        keyValue.forEach(function (_keyValue) {
+          console.log("The value of the keyValue is: " + _keyValue.trim());
+          _keyValue = _keyValue.trim();
+          var key = _keyValue.match(/(.+)=/);
+          var value = _keyValue.match(/=(.*)/);
+          if (key) {
+            this.setSiteProperty(key[1], value[1], _site.filename);
+          }
+
+        }, this);
+      }
     }, this);
+  },
+
+  /**
+   * Set property of the site variable
+   */
+  setSiteProperty: function (key, value, filename) {
+    if (this.get('uiConfigs').someProperty('name', key)) {
+      this.get('uiConfigs').findProperty('name', key).value = value;
+    } else {
+      this.get('uiConfigs').pushObject({
+        "id": "site property",
+        "name": key,
+        "value": value,
+        "filename": filename
+      });
+    }
+  },
+
+  getUrl: function (testUrl, url) {
+    return (App.testMode) ? testUrl : App.apiPrefix + '/clusters/' + App.router.getClusterName() + url;
+  },
 
-    App.db.setServiceConfigProperties(serviceConfigProperties);
-    alert('Data saved successfully');
-//    this.set('content.serviceConfigProperties', serviceConfigProperties);
+  doPolling: function (desiredStatus, successCallback, errCallback) {
+    var POLL_INTERVAL = 4000;
+    var self = this;
+    var result = true;
+    var servicesUrl1;
+    if (desiredStatus === 'stop') {
+      servicesUrl1 = this.getUrl('/data/dashboard/mapreduce/mapreduce_stop.json', '/services?ServiceInfo/service_name=' + this.get('content.serviceName') + '&fields=components/host_components/*');
+    } else if (desiredStatus === 'start') {
+      servicesUrl1 = this.getUrl('/data/dashboard/mapreduce/mapreduce_start.json', '/services?ServiceInfo/service_name=' + this.get('content.serviceName') + '&fields=components/host_components/*');
+    }
+
+    App.HttpClient.get(servicesUrl1, App.servicesMapper, {
+      complete: function () {
+        var status;
+        if (result === false) {
+          return;
+        }
+        if (desiredStatus === 'stop') {
+          status = self.get('content.isStopped');
+          if (self.get('content.components').someProperty('workStatus', 'STOP_FAILED')) {
+           // if (!self.stopService()) {
+             // return;
+            //}
+          }
+        } else if (desiredStatus === 'start') {
+          status = self.get('content.isStarted');
+          if (self.get('content.components').someProperty('workStatus', 'START_FAILED')) {
+            //if (!self.startService()) {
+             // return;
+            //}
+          }
+        }
+        if (status !== true) {
+          window.setTimeout(function () {
+            self.doPolling(desiredStatus, successCallback, errCallback);
+          }, POLL_INTERVAL);
+        } else if (status === true) {
+          successCallback.apply(self);
+        }
+      },
+      error: function (jqXHR, textStatus) {
+        errCallback.apply(self);
+        result = false;
+      }
+    });
+    return result;
+  },
+
+  initialValue: function (config) {
+    switch (config.name) {
+      case 'namenode_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'NAMENODE').get('host.hostName'));
+        break;
+      case 'snamenode_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'SECONDARY_NAMENODE').get('host.hostName'));
+        break;
+      case 'jobtracker_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'JOBTRACKER').get('host.hostName'));
+        break;
+      case 'hbasemaster_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'HBASE_MASTER').get('host.hostName'));
+        break;
+      case 'hivemetastore_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'HIVE_SERVER').get('host.hostName'));
+        break;
+      case 'hive_ambari_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'HIVE_SERVER').get('host.hostName'));
+        break;
+      case 'oozieserver_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'OOZIE_SERVER').get('host.hostName'));
+        break;
+      case 'oozie_ambari_host':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'OOZIE_SERVER').get('host.hostName'));
+        break;
+      case 'zookeeperserver_hosts':
+        config.set('id', 'puppet var');
+        config.set('value', this.get('content.components').findProperty('componentName', 'ZOOKEEPER_SERVER').get('host.hostName'));
+        break;
+    }
   }
+
 });
 
+
 App.MainServiceSlaveComponentGroupsController = App.SlaveComponentGroupsController.extend({
   name: 'mainServiceSlaveComponentGroupsController',
   contentBinding: 'App.router.mainServiceInfoConfigsController.slaveComponentHosts',

+ 2 - 2
ambari-web/app/controllers/main/service/item.js

@@ -26,7 +26,7 @@ App.MainServiceItemController = Em.Controller.extend({
    * @param url
    * @param data Object to send
    */
-  sendCommandToServer : function(url, method,postData, callback){
+  sendCommandToServer : function(url, method, postData, callback){
     var url =  (App.testMode) ?
       '/data/wizard/deploy/poll_1.json' : //content is the same as ours
       App.apiPrefix + '/clusters/' + App.router.getClusterName() + url;
@@ -36,7 +36,7 @@ App.MainServiceItemController = Em.Controller.extend({
     $.ajax({
       type: method,
       url: url,
-      data: JSON.stringify(postData),
+      data: (postData != null) ? JSON.stringify(postData) : null,
       dataType: 'json',
       timeout: App.timeout,
       success: function(data){

+ 16 - 9
ambari-web/app/controllers/wizard/step10_controller.js

@@ -66,7 +66,12 @@ App.WizardStep10Controller = Em.Controller.extend({
     var succededHosts = hostsInfo.filterProperty('status', 'success');
     var warnedHosts = hostsInfo.filterProperty('status', 'warning').concat(hostsInfo.filterProperty('status', 'failed'));
     if (succededHosts.length) {
-      var successStatement = succededHosts.length + ' nodes succeded completely to install and start all service components assigned to them.';
+      var successStatement;
+      if (succededHosts.length > 1) {
+        successStatement = succededHosts.length + ' nodes succeded completely to install and start all service components assigned to them.';
+      } else {
+        successStatement = succededHosts.length + ' node succeded completely to install and start all service components assigned to it.';
+      }
       this.get('clusterInfo').findProperty('id', 1).get('status').pushObject(Ember.Object.create({
         id: 1,
         displayStatement: successStatement
@@ -281,7 +286,7 @@ App.WizardStep10Controller = Em.Controller.extend({
 
   loadNagios: function (component) {
     if (component.get('hostName')) {
-      var statement = 'Ganglia Server installed on ' + component.get('hostName');
+      var statement = 'Nagios Server installed on ' + component.get('hostName');
       this.get('clusterInfo').findProperty('id', 2).get('status').pushObject(Ember.Object.create({
         id: 1,
         displayStatement: statement
@@ -315,13 +320,15 @@ App.WizardStep10Controller = Em.Controller.extend({
     }
   },
 
-  loadInstallTime: function() {
-    var statement = 'Install and start of all services completed in '  + this.get('content.cluster.serviceStartTime') + ' minutes';
-    this.get('clusterInfo').pushObject(Ember.Object.create({
-      id: 5,
-      displayStatement: statement,
-      status: []
-    }));
+  loadInstallTime: function () {
+    if (this.get('content.cluster.installTime')) {
+      var statement = 'Install and start of all services completed in ' + this.get('content.cluster.installTime') + ' minutes';
+      this.get('clusterInfo').pushObject(Ember.Object.create({
+        id: 5,
+        displayStatement: statement,
+        status: []
+      }));
+    }
   }
 
 

+ 3 - 4
ambari-web/app/controllers/wizard/step5_controller.js

@@ -64,7 +64,7 @@ App.WizardStep5Controller = Em.Controller.extend({
           host_name: _host.name,
           cpu: _host.cpu,
           memory: _host.memory,
-          host_info: "%@ ( %@GB %@cores )".fmt(_host.name, _host.memory, _host.cpu)
+          host_info: "%@ (%@, %@ cores)".fmt(_host.name, (_host.memory * 1024).bytesToSize(1, 'parseFloat'), _host.cpu)
         });
 
         this.get("hosts").pushObject(hostObj);
@@ -92,7 +92,7 @@ App.WizardStep5Controller = Em.Controller.extend({
     var masterComponents = this.get('components').filterProperty('isMaster', true); //get full list from mock data
 
     var servicesLength = services.length;
-    for (var index =0; index < servicesLength; index++) {
+    for (var index = 0; index < servicesLength; index++) {
       var componentInfo = masterComponents.filterProperty('service_name', services[index]);
 
       componentInfo.forEach(function (_componentInfo) {
@@ -383,11 +383,10 @@ App.WizardStep5Controller = Em.Controller.extend({
     mappedHosts.forEach(function (item) {
       hostObj = self.get("hosts").findProperty("host_name", item);
       console.log("Name of the host is: " + hostObj.host_name);
-      hostInfo = " ( " + hostObj.get("memory") + "GB" + " " + hostObj.get("cpu") + "cores )";
 
       mappingObject = Ember.Object.create({
         host_name: item,
-        hostInfo: hostInfo,
+        hostInfo: hostObj.host_info,
         masterServices: self.get("selectedServicesMasters").filterProperty("selectedHost", item)
       });
 

+ 4 - 4
ambari-web/app/controllers/wizard/step6_controller.js

@@ -231,7 +231,7 @@ App.WizardStep6Controller = Em.Controller.extend({
         var dataNode = hostsObj.findProperty('hostName', _dataNode.hostName);
         if (dataNode) {
           dataNode.set('isDataNode', true);
-          dataNode.set('isDataNodeInstalled', true);
+          dataNode.set('isDataNodeInstalled', _dataNode.isInstalled);
         }
       });
 
@@ -241,7 +241,7 @@ App.WizardStep6Controller = Em.Controller.extend({
           var taskTracker = hostsObj.findProperty('hostName', _taskTracker.hostName);
           if (taskTracker) {
             taskTracker.set('isTaskTracker', true);
-            taskTracker.set('isTaskTrackerInstalled', true);
+            taskTracker.set('isTaskTrackerInstalled', _taskTracker.isInstalled);
           }
         });
       }
@@ -252,7 +252,7 @@ App.WizardStep6Controller = Em.Controller.extend({
           var regionServer = hostsObj.findProperty('hostName', _regionServer.hostName);
           if (regionServer) {
             regionServer.set('isRegionServer', true);
-            regionServer.set('isRegionServerInstalled', true);
+            regionServer.set('isRegionServerInstalled', _regionServer.isInstalled);
           }
         });
       }
@@ -262,7 +262,7 @@ App.WizardStep6Controller = Em.Controller.extend({
         var client = hostsObj.findProperty('hostName', _client.hostName);
         if (client) {
           client.set('isClient', true);
-          client.set('isClientInstalled', true);
+          client.set('isClientInstalled', _client.isInstalled);
         }
       }, this);
 

+ 21 - 2
ambari-web/app/controllers/wizard/step7_controller.js

@@ -116,6 +116,11 @@ App.WizardStep7Controller = Em.Controller.extend({
     }
   },
 
+
+
+  /**
+   * Render a custom conf-site box for entering properties that will be written in *-site.xml files of the services
+   */
   loadCustomConfig: function () {
     var serviceConfigs = this.get('serviceConfigs');
     this.get('customConfigs').forEach(function (_config) {
@@ -134,8 +139,8 @@ App.WizardStep7Controller = Em.Controller.extend({
    */
   renderServiceConfigs: function (serviceConfigs) {
     serviceConfigs.forEach(function (_serviceConfig) {
+
       var serviceConfig = App.ServiceConfig.create({
-        id: _serviceConfig.id,
         filename: _serviceConfig.filename,
         serviceName: _serviceConfig.serviceName,
         displayName: _serviceConfig.displayName,
@@ -154,6 +159,21 @@ App.WizardStep7Controller = Em.Controller.extend({
       }
     }, this);
 
+    var miscConfigs = this.get('stepConfigs').findProperty('serviceName', 'MISC').configs;
+    var showProxyGroup = this.get('selectedServiceNames').contains('HIVE') ||
+      this.get('selectedServiceNames').contains('HCATALOG') ||
+      this.get('selectedServiceNames').contains('OOZIE');
+    miscConfigs.findProperty('name', 'proxyuser_group').set('isVisible', showProxyGroup);
+    miscConfigs.findProperty('name', 'hbase_user').set('isVisible', this.get('selectedServiceNames').contains('HBASE'));
+    miscConfigs.findProperty('name', 'mapred_user').set('isVisible', this.get('selectedServiceNames').contains('MAPREDUCE'));
+    miscConfigs.findProperty('name', 'hive_user').set('isVisible', this.get('selectedServiceNames').contains('HIVE'));
+    miscConfigs.findProperty('name', 'hcat_user').set('isVisible', this.get('selectedServiceNames').contains('HCATALOG'));
+    miscConfigs.findProperty('name', 'templeton_user').set('isVisible', this.get('selectedServiceNames').contains('HCATALOG'));
+    miscConfigs.findProperty('name', 'oozie_user').set('isVisible', this.get('selectedServiceNames').contains('OOZIE'));
+    miscConfigs.findProperty('name', 'pig_user').set('isVisible', this.get('selectedServiceNames').contains('PIG'));
+    miscConfigs.findProperty('name', 'sqoop_user').set('isVisible', this.get('selectedServiceNames').contains('SQOOP'));
+    miscConfigs.findProperty('name', 'zk_user').set('isVisible', this.get('selectedServiceNames').contains('ZOOKEEPER'));
+
     this.set('selectedService', this.get('stepConfigs').objectAt(0));
   },
 
@@ -167,7 +187,6 @@ App.WizardStep7Controller = Em.Controller.extend({
       var serviceConfigProperty = App.ServiceConfigProperty.create(_serviceConfigProperty);
       serviceConfigProperty.serviceConfig = componentConfig;
       serviceConfigProperty.initialValue();
-
       componentConfig.configs.pushObject(serviceConfigProperty);
       serviceConfigProperty.validate();
     }, this);

+ 3 - 2
ambari-web/app/controllers/wizard/step8_controller.js

@@ -293,6 +293,7 @@ App.WizardStep8Controller = Em.Controller.extend({
             break;
           case 'GANGLIA':
             this.loadGanglia(serviceObj);
+            break;
           case 'HCATALOG':
             break;
           default:
@@ -615,7 +616,7 @@ App.WizardStep8Controller = Em.Controller.extend({
 
   createCluster: function () {
 
-    if (this.get('content.cluster.isCompleted')){
+    if (this.get('content.isWizard')){
       return false;
     }
 
@@ -829,7 +830,7 @@ App.WizardStep8Controller = Em.Controller.extend({
 
   createConfigurations: function () {
     var selectedServices = this.get('selectedServices');
-    if (!this.get('content.cluster.isCompleted')){
+    if (!this.get('content.isWizard')){
       this.createConfigSite(this.createGlobalSiteObj());
       this.createConfigSite(this.createCoreSiteObj());
       this.createConfigSite(this.createHdfsSiteObj('HDFS'));

+ 7 - 5
ambari-web/app/controllers/wizard/step9_controller.js

@@ -77,11 +77,14 @@ App.WizardStep9Controller = Em.Controller.extend({
   },
 
   loadHosts: function () {
-    var hostInfo = [];
-    hostInfo = App.db.getHosts();
+    var hostInfo = this.get('content.hostsInfo');
+
     var hosts = new Ember.Set();
     for (var index in hostInfo) {
-      hosts.add(hostInfo[index]);
+      var obj = Em.Object.create(hostInfo[index]);
+      obj.tasks = [];
+      obj.logTasks = [];
+      hosts.add(obj);
       console.log("TRACE: host name is: " + hostInfo[index].name);
     }
     return hosts;
@@ -433,7 +436,6 @@ App.WizardStep9Controller = Em.Controller.extend({
 
   // This is done at HostRole level.
   setLogTasksStatePerHost: function (tasksPerHost, host) {
-    var tasks = [];
     console.log('In step9 setTasksStatePerHost function.');
     tasksPerHost.forEach(function (_task) {
       console.log('In step9 _taskPerHost function.');
@@ -491,7 +493,7 @@ App.WizardStep9Controller = Em.Controller.extend({
 
   getUrl: function () {
     var clusterName = this.get('content.cluster.name');
-    var requestId = App.db.getClusterStatus().requestId;
+    var requestId = this.get('content.cluster.requestId');
     var url = App.apiPrefix + '/clusters/' + clusterName + '/requests/' + requestId + '?fields=tasks/*';
     console.log("URL for step9 is: " + url);
     return url;

+ 0 - 7
ambari-web/app/data/config_mapping.js

@@ -101,13 +101,6 @@ module.exports = [
     "value": "<templateName[0]>",
     "filename": "hdfs-site.xml"
   },
-  {
-    "name": "dfs.webhdfs.enabled",
-    "templateName": ["dfs_webhdfs_enabled"],
-    "foreignKey": null,
-    "value": "<templateName[0]>",
-    "filename": "hdfs-site.xml"
-  },
   {
     "name": "dfs.datanode.failed.volumes.tolerated",
     "templateName": ["dfs_datanode_failed_volume_tolerated"],

+ 3 - 3
ambari-web/app/data/config_properties.js

@@ -609,7 +609,7 @@ module.exports =
     {
       "id": "puppet var",
       "name": "proxyuser_group",
-      "displayName": "Proxy group for Hive, Templeton and Oozie.",
+      "displayName": "Proxy group for Hive, Templeton, and Oozie",
       "description": "",
       "defaultValue": "users",
       "isReconfigurable": false,
@@ -648,8 +648,8 @@ module.exports =
     {
       "id": "puppet var",
       "name": "dfs_replication",
-      "displayName": "Include hosts",
-      "description": "Include entered hosts",
+      "displayName": "Block replication",
+      "description": "Default block replication.",
       "displayType": "int",
       "defaultValue": "3",
       "isReconfigurable": false,

+ 1 - 1
ambari-web/app/initialize.js

@@ -22,7 +22,7 @@ window.App = require('app');
 App.testMode = false;
 App.skipBootstrap = false;
 App.alwaysGoToInstaller = false;
-App.apiPrefix = '/api';
+App.apiPrefix = '/api/v1';
 // default AJAX timeout
 App.timeout = 20000;
 

+ 1 - 0
ambari-web/app/mappers/hosts_mapper.js

@@ -28,6 +28,7 @@ App.hostsMapper = App.QuickDataMapper.create({
     components: {
       item : 'HostRoles.component_name'
     },
+    rack: 'Hosts.rack_info',
     host_components_key: 'host_components',
     host_components_type: 'array',
     host_components: {

+ 9 - 2
ambari-web/app/mappers/jobs_mapper.js

@@ -57,7 +57,9 @@ App.jobsMapper = App.QuickDataMapper.create({
 
 App.jobTimeLineMapper = App.QuickDataMapper.create({
   config:{
-    jobTimeLine:'items'
+    map:'map',
+    shuffle:'shuffle',
+    reduce:'reduce'
   },
   map:function (json) {
     var job = this.get('model'); // @model App.MainAppsItemBarView
@@ -71,7 +73,12 @@ App.jobTimeLineMapper = App.QuickDataMapper.create({
 
 App.jobTasksMapper = App.QuickDataMapper.create({
   config:{
-    jobTaskView:'items'
+    mapNodeLocal:'mapNodeLocal',
+    mapRackLocal:'mapRackLocal',
+    mapOffSwitch:'mapOffSwitch',
+    reduceOffSwitch:'reduceOffSwitch',
+    submitTime:'submitTime',
+    finishTime:'finishTime'
   },
   map:function (json) {
     var job = this.get('model'); // @model App.MainAppsItemBarView

+ 1 - 0
ambari-web/app/mappers/services_mapper.js

@@ -25,6 +25,7 @@ App.servicesMapper = App.QuickDataMapper.create({
     'OOZIE',
     'GANGLIA',
     'NAGIOS',
+    'ZOOKEEPER',
     'PIG',
     'SQOOP'
   ],

+ 4 - 1
ambari-web/app/messages.js

@@ -340,7 +340,10 @@ Em.I18n.translations = {
   'dashboard.services.hbase.masterStarted':'Master Started',
   'dashboard.services.hbase.masterActivated':'Master Activated',
 
-
+  'dashboard.services.configs.popup.stopService.header':'Stop service',
+  'dashboard.services.configs.popup.stopService.body' : 'Service needs to be stopped for reconfiguration',
+  'dashboard.services.configs.popup.restartService.header' : 'Restart service',
+  'dashboard.services.configs.popup.restartService.body' : 'Service needs to be restarted for reconfiguration',
   'timeRange.presets.1hour':'1h',
   'timeRange.presets.12hour':'12h',
   'timeRange.presets.1day':'1d',

+ 6 - 0
ambari-web/app/models/component.js

@@ -62,6 +62,8 @@ App.Component.Status = {
   starting: "STARTING",
   stopped: "INSTALLED",
   stopping: "STOPPING",
+  stop_failed: "STOP_FAILED",
+  start_failed: "START_FAILED",
 
   getKeyName:function(value){
     switch(value){
@@ -73,6 +75,10 @@ App.Component.Status = {
         return 'installed';
       case this.stopping:
         return 'stopping';
+      case this.stop_failed:
+        return 'stop_failed';
+      case this.start_failed:
+        return 'start_failed';
     }
     return 'none';
   }

+ 1 - 0
ambari-web/app/models/host.js

@@ -31,6 +31,7 @@ App.Host = DS.Model.extend({
   loadAvg: DS.attr('string'),
   osArch: DS.attr('string'),
   ip: DS.attr('string'),
+  rack: DS.attr('string'),
   healthStatus: DS.attr('string'),
   cpuUsage: DS.attr('number'),
   memoryUsage: DS.attr('number'),

+ 2 - 2
ambari-web/app/models/hosts.js

@@ -21,8 +21,8 @@ var App = require('app');
 App.HostInfo = Ember.Object.extend({
   elementId: 'host',
   name: '',
-  cpu: '2',
-  memory: '2',
+  cpu: 2,
+  memory: 4000000000,
   message: 'Information',
   barColor: 'progress-info',
   isChecked: true,

+ 21 - 10
ambari-web/app/models/service.js

@@ -29,20 +29,31 @@ App.Service = DS.Model.extend({
   quickLinks: DS.hasMany('App.QuickLinks'),
   components: DS.hasMany('App.Component'),
   hostComponents: DS.hasMany('App.HostComponent'),
-  isRunning: function(){
-    return (this.get('healthStatus') == 'green' | this.get('healthStatus') == 'green-blinking');
+  isRunning: function () {
+    return (this.get('healthStatus') == 'green' || this.get('healthStatus') == 'green-blinking');
   }.property('healthStatus'),
 
-  healthStatus: function(){
+  healthStatus: function () {
     var components = this.get('components').filterProperty('isMaster', true);
-    if (components.everyProperty('workStatus', App.Component.Status.started)){
+    if (components.everyProperty('workStatus', App.Component.Status.started)) {
       return 'green';
-    } else if(components.someProperty('workStatus', App.Component.Status.stopped)){
-      return 'red';
-    } else if(components.someProperty('workStatus', App.Component.Status.starting)){
+    } else if (components.someProperty('workStatus', App.Component.Status.starting)) {
       return 'green-blinking';
+    } else if (components.someProperty('workStatus', App.Component.Status.stopped)) {
+      return 'red';
+    } else {
+      return 'red-blinking';
     }
-    return 'red-blinking';
+  }.property('components.@each.workStatus'),
+
+  isStopped: function () {
+    var components = this.get('components');
+    return components.everyProperty('workStatus', App.Component.Status.stopped);
+  }.property('components.@each.workStatus'),
+
+  isStarted: function () {
+    var components = this.get('components').filterProperty('isMaster', true);
+    return components.everyProperty('workStatus', App.Component.Status.started);
   }.property('components.@each.workStatus'),
 
   displayName: function () {
@@ -80,8 +91,8 @@ App.Service.Health = {
   starting: "STARTING",
   stopping: "STOPPING",
 
-  getKeyName:function(value){
-    switch(value){
+  getKeyName: function (value) {
+    switch (value) {
       case this.live:
         return 'live';
       case this.dead:

+ 1 - 22
ambari-web/app/routes/add_host_routes.js

@@ -34,26 +34,6 @@ module.exports = Em.Route.extend({
     router.get('mainController').connectOutlet('addHost');
   },
 
-  step0: Em.Route.extend({
-    route: '/step0',
-    connectOutlets: function (router) {
-      console.log('in addHost.step0:connectOutlets');
-      var controller = router.get('addHostController');
-      controller.setCurrentStep('0', false);
-      controller.loadAllPriorSteps();
-      controller.connectOutlet('wizardStep1', controller.get('content'));
-    },
-
-    next: function (router) {
-      var addHostController = router.get('addHostController');
-      var wizardStep1Controller = router.get('wizardStep1Controller');
-
-      addHostController.saveClusterInfo(wizardStep1Controller);
-
-      router.transitionTo('step1');
-    }
-  }),
-
   step1: Em.Route.extend({
     route: '/step1',
     connectOutlets: function (router) {
@@ -235,7 +215,6 @@ module.exports = Em.Route.extend({
     next: function (router) {
       var addHostController = router.get('addHostController');
       var wizardStep9Controller = router.get('wizardStep9Controller');
-      addHostController.saveClusterInfo(wizardStep9Controller);
       addHostController.saveInstalledHosts(wizardStep9Controller);
       router.transitionTo('step9');
     }
@@ -254,7 +233,7 @@ module.exports = Em.Route.extend({
     complete: function (router, context) {
       if (true) {   // this function will be moved to installerController where it will validate
         var addHostController = router.get('addHostController');
-        addHostController.setCurrentStep('1', false);
+        addHostController.finish();
         router.transitionTo('hosts');
       } else {
         console.log('cluster installation failure');

+ 1 - 2
ambari-web/app/routes/add_service_routes.js

@@ -154,7 +154,7 @@ module.exports = Em.Route.extend({
     },
     back: Em.Router.transitionTo('step5'),
     retry: function(router,context) {
-      var addServiceController = router.get('addSrviceController');
+      var addServiceController = router.get('addServiceController');
       var wizardStep9Controller = router.get('wizardStep9Controller');
       if (!wizardStep9Controller.get('isSubmitDisabled')) {
         addServiceController.installServices();
@@ -165,7 +165,6 @@ module.exports = Em.Route.extend({
     next: function (router) {
       var addServiceController = router.get('addServiceController');
       var wizardStep9Controller = router.get('wizardStep9Controller');
-      //addServiceController.saveClusterInfo(wizardStep9Controller);
       addServiceController.saveInstalledHosts(wizardStep9Controller);
       router.transitionTo('step7');
     }

+ 0 - 1
ambari-web/app/routes/installer.js

@@ -279,7 +279,6 @@ module.exports = Em.Route.extend({
     next: function (router) {
       var installerController = router.get('installerController');
       var wizardStep9Controller = router.get('wizardStep9Controller');
-     // installerController.saveClusterInfo(wizardStep9Controller);
       installerController.saveInstalledHosts(wizardStep9Controller);
       router.transitionTo('step10');
     }

+ 66 - 2
ambari-web/app/styles/application.less

@@ -843,9 +843,12 @@ a:focus {
     }
   }
   .table {
-    margin-bottom: 0;
+    //margin-bottom: 0;
     thead {
-      background: #EDF5FC;
+      //background: #EDF5FC;
+    }
+    th {
+      border-top: none;
     }
     th, td {
       width: 82px;
@@ -883,7 +886,68 @@ a:focus {
         }
       }
     }
+    .sorting_asc { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAHgAAAMBAQAAAAAAAAAAAAAAAAAFCAYKAQACAQUAAAAAAAAAAAAAAAAABQMCBAYHCBAAAQUAAQMEAwAAAAAAAAAAAwECBAUGABESByExIghBMxQRAAIBAwMDAwUAAAAAAAAAAAECAwAEBRESBiExUUHhB2GBIhMU/9oADAMBAAIRAxEAPwDvA8k+Qc54sxGj32qlNi0ucrjTj/JqGlmROyJXQ2u/bOsZTmBExPd70/HXmQcW41lOX5+145h0L391KEHhR3Z28Ii6sx9AKgubiO1gaeU6Io19h9TUg/S/7eP+wia3NbBIFbuqiyn3VTCjIMArHHTJarEDGGiNU8vOKVsc7/VxBuGR3yV683X86/Cq/GpssrhP2S8emiSKRm1JS5VfyLH0WfQug7KwZR0CilWHy39++ObQTgkgeV9ux+xq9uc6U8pLfZzP6mClZpKWrvq1DilJAt4Mewh/0hRyBOsaUMoVKLvXtVU6t6+nL/HZTJYi4/rxU81tdbSu+N2Rtp7jcpB0OnUa9aoeOOVdsgDL4I1pFS+NPHmcsQ2+fw+UpLWOwwwWNVQ1kCaIcgaiONkmLGEZrDDXtcnXo5PfjC+5VybKWrWWSyF5cWbEEpJNI6kqdQSrMRqD1B9KjS2t423xoqt5AArb8QVPRwoo4UUcKK//2Q==) no-repeat 85% 50%; }
+    .sorting_desc { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAIEAAAIDAQAAAAAAAAAAAAAAAAAGBwgJCgEBAAIDAQAAAAAAAAAAAAAAAAMFBAYHCBAAAAUDAwMFAAAAAAAAAAAAAQIDBAUABgcSNTYRFQgTZFUWZhEAAAQEAggGAwAAAAAAAAAAAAECAxEhBAYSMjFBYRMzFDQFUZFSYmMHJFRk/9oADAMBAAIRAxEAPwDv4oAKACgCKc1tMmusb3Eph6cSgsgx7fucEZxGRks2llGIGVWgVm8q1dt0+6ogKaapSgdNbQPXTqAdwsN602bopk3vTnUW24rduwccbU2S5E8Sm1JM92czSZwNOKUYDFrCqTp1corDUFMpEcYap+Ipb4P5O8n81y9xXXlG50yY+thR3AEivqFvRDmduvSUrhuLtrFNXqCFvJm1LAQ5RMuchB6gBy13f7+tP6lsOipuz2jSGdy1ZJeNzmXnEtU+pWFTikmbxyTEjgglKKZpMU3ZanudYtTtSr8dMoYSKKvKMte0aUV5YGxgoASbD2iQ4Tyi6uB7Rvz/AHD9R8r7/wBWr64uta6/pKfq+JwUZP5/1/hwCFjIeTMrLo0np93q2xDtVCJh/9k=) no-repeat 85% 50%; }
+    .sorting { background: url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEwATAwERAAIRAQMRAf/EAGgAAAIDAQAAAAAAAAAAAAAAAAUHAAYICgEBAQAAAAAAAAAAAAAAAAAAAAEQAAEEAQIFAgcAAAAAAAAAAAECAwQFABEGIRI0NQcTFDFBMmNUZRYRAQEBAQAAAAAAAAAAAAAAAAABEUH/2gAMAwEAAhEDEQA/AO93cd/XbXpLC9tHQ1Dr46nljUBby/gzGZB+p+Q6QhA+ZOApfDnllW/ha1tv6Ee7iyH5kRlvlbTIqHndWkNJ0HO7XFQbWeJUkpUeOpySrZh65UUnyFUW1ztaexRmIbaPyzoLE6vg2UWW9GC1e0XHnsSGEqfQohCwApK9OIGuAjfBP9VuG0m39vGqINVUe4r2xF21TVsuXZOI9N9lMmLBYkttQ21auBKhqtSUngCMkW5xqjKiYASh6SR2Tulr2HpOvf6j9p+V9/mwDeB//9k=) no-repeat 85% 50%; }
+
+    a.paginate_disabled_next, a.paginate_disabled_previous {
+      color: gray;
+      &:hover {
+        color: gray;
+        text-decoration: none;
+      }
+    }
+
+    a.paginate_enabled_next, a.paginate_enabled_previous {
+      &:hover {
+        text-decoration: none;
+      }
+    }
+
+    div.view-wrapper {
+      float: left;
+    }
+
+    a.ui-icon-circle-close {
+      float: right;
+      opacity: 0.2;
+      padding: 1px;
+      position: relative;
+      &:hover {
+        opacity: 0.7;
+      }
+    }
+    .notActive {
+      a.ui-icon-circle-close {
+        visibility: hidden;
+      }
+    }
+  }
+
+  .page-bar {
+    border: 1px solid silver;
+    text-align:right;
+    div {
+      display: inline-block;
+      margin:0 10px;
+    }
+    .dataTables_length {
+      label {
+        display:inline;
+      }
+      select {
+        margin-bottom: 4px;
+        margin-top: 4px;
+        width:70px;
+      }
+    }
+    .dataTables_paginate {
+      a {
+        padding:0 5px;
+      }
+    }
   }
+
   .open-group > .dropdown-menu {
     display: block;
   }

+ 5 - 4
ambari-web/app/templates/main/background_operations_popup.hbs

@@ -20,15 +20,16 @@
   {{#view App.MainBackgroundOperation contentBinding="operation"}}
     <div>
       <a {{action showOperationLog target="view"}} href="#">
-        {{#if view.isOpenShowLog}}Hide{{else}}Show{{/if}} info about {{operation.command}} {{operation.role}} on {{operation.host_name}}
+        <i {{bindAttr class="view.iconClass"}}></i>
+        {{#if view.isOpen}}Hide{{else}}Show{{/if}} info about {{operation.command}} {{operation.role}} on {{operation.host_name}}
       </a>
-      {{#if view.isOpenShowLog}}
+      {{#if view.isOpen}}
         <h5>exitcode:</h5>
         <pre class="stderr">{{operation.exit_code}}</pre>
         <h5>stderr:</h5>
-        <pre class="stderr">{{operation.stderr}}</pre>
+        <pre class="stderr">{{highlight operation.stderr [err;fail]}}</pre>
         <h5>stdout:</h5>
-        <pre class="stdout">{{operation.stdout}}</pre>
+        <pre class="stdout">{{highlight operation.stdout [err;fail]}}</pre>
       {{/if}}
     </div>
   {{/view}}

+ 14 - 39
ambari-web/app/templates/main/host.hbs

@@ -16,7 +16,7 @@
 * limitations under the License.
 }}
 
-<div id="hosts" class="box">
+<div id="hosts">
   <div class="box-header">
     <div class="button-section">
       <button class="btn btn-inverse add-host-button" {{action addHost}}>
@@ -25,27 +25,24 @@
       </button>
     </div>
   </div>
-  <table class="table table-bordered table-striped">
+  <table class="datatable table table-bordered table-striped" id="hosts-table">
     <thead>
     <tr>
-      <th class="name">
-        <div class="host-name-pos">
-          <a class="filter-label" href="#" {{action sortByName target="controller" }}>Name
-            {{#if controller.isSort}}
-            <i class="icon-arrow-up"{{bindAttr class="controller.sortClass"}}></i>
-            {{/if}}
-          </a>
-
-          {{view Ember.TextField class="host-name-search" placeholder="search" valueBinding="view.filterByName"}}
-        </div>
-
-      </th>
+      <th>Name</th>
       <th>Rack</th>
       <th>CPU</th>
       <th>RAM</th>
       <th>Disk Usage</th>
       <th>Load Avg</th>
-      <th>
+      <th>Components</th>
+    </tr>
+      <th class="notActive"><div class="view-wrapper">{{view view.nameFilterView viewName="nameFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_nameFilterViewInstance" class="ui-icon ui-icon-circle-close ui-name"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.rackFilterView viewName="rackFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_rackFilterViewInstance" class="ui-icon ui-icon-circle-close ui-rack"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.cpuFilterView viewName="cpuFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_cpuFilterViewInstance" class="ui-icon ui-icon-circle-close ui-cpu"></a></th>
+      <th class="notActive"><div class="view-wrapper">{{view view.ramFilterView viewName="ramFilterViewInstance"}}</div> <a href="#" {{action "clearFilterButtonClick" target="view"}} id="view_ramFilterViewInstance" class="ui-icon ui-icon-circle-close ui-ram"></a></th>
+      <th></th>
+      <th></th>
+      <th><input id="components_filter" type="hidden" />
         <div {{bindAttr class="view.btnGroupClass"}} >
           <button class="btn btn-info single-btn-group" {{action "clickFilterButton" target="view"}}>
             Components
@@ -104,11 +101,11 @@
     {{#each host in controller}}
     {{#view view.HostView contentBinding="host"}}
     <tr>
-      <td class="name">
+      <td>
         <span {{bindAttr class="host.healthClass"}}></span>
         <a href="#" {{action "showDetails" host}}>{{unbound host.hostName}}</a>
       </td>
-      <td>{{host.cluster.clusterName}}</td>
+      <td>{{host.rack}}</td>
       <td>{{host.cpu}}</td>
       <td>{{host.memoryFormatted}}</td>
       <td>
@@ -125,26 +122,4 @@
     {{/each}}
     </tbody>
   </table>
-  <div class="box-footer">
-    <hr/>
-    <div class="footer-pagination">
-      <ul class="nav nav-pills">
-        <li class="disabled">Show: </li>
-        <li class="dropdown">
-          {{view Em.Select contentBinding="pageSizeRange"
-                    selectionBinding="pageSize"
-                    optionValuePath="this"}}
-        </li>
-        <li class="disabled">{{startPosition}}-{{rangeStop}} of {{total}}</li>
-        <li class="disabled page-listing">
-          {{#if hasPrevious}}
-          <a href="#" {{action showPreviousPage target="controller"}}>previous</a>
-          {{/if}}
-          {{#if hasNext}}
-          <a href="#" {{action showNextPage target="controller"}}>next</a>
-          {{/if}}
-        </li>
-      </ul>
-    </div>
-  </div>
 </div>

+ 1 - 1
ambari-web/app/templates/main/service/info/configs.hbs

@@ -216,6 +216,6 @@
   <p class="pull-right">
     <!--<input class="btn btn-primary" type="button" value="Save and apply changes" {{!bindAttr disabled="isSubmitDisabled"}} />-->
     <a class="btn btn-primary" {{bindAttr disabled="isSubmitDisabled"}}
-      {{action saveServiceConfigProperties target="controller"}}>Save and apply changes</a>
+      {{action restartServicePopup target="controller"}}>Save and apply changes</a>
   </p>
 </div>

+ 1 - 1
ambari-web/app/templates/wizard/step5.hbs

@@ -57,7 +57,7 @@
   <div class="host-assignments">
     {{#each masterHostMapping}}
     <div class="mapping-box round-corners well">
-      <div class="hostString"><span><strong>{{host_name}}</strong></span><span>{{hostInfo}}</span></div>
+      <div class="hostString"><span>{{hostInfo}}</span></div>
       {{#each masterServices}}
       <span class="assignedService round-corners">{{display_name}}</span>
       {{/each}}

+ 23 - 6
ambari-web/app/utils/data_table.js

@@ -17,6 +17,20 @@
  */
 
 jQuery.extend(jQuery.fn.dataTableExt.oSort, {
+
+  "num-html-pre": function(date_string) {
+    date_string = $(date_string).text();
+    return parseInt(date_string, 10);
+  },
+
+  "num-html-asc": function (a, b) {
+    return a - b;
+  },
+
+  "num-html-desc": function (a, b) {
+    return b - a;
+  },
+
   // @see utils/date.js
   "ambari-date-pre": function (date_string) {
     date_string = $(date_string).text(); // strip Ember script tags
@@ -141,17 +155,19 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
     function (oSettings, aData, iDataIndex) {
       var inputFilters = [
         {iColumn: '0', elementId: 'star_filter', type: 'star'},
+        {iColumn: '2', elementId: 'cpu_filter', type: 'number'},
         {iColumn: '4', elementId: 'user_filter', type: 'multiple'},
         {iColumn: '5', elementId: 'jobs_filter', type: 'number' },
-        {iColumn: '6', elementId: 'input_filter', type: 'bandwidth' },
-        {iColumn: '7', elementId: 'output_filter', type: 'bandwidth' },
+        {iColumn: '3', elementId: 'ram_filter', type: 'ambari-bandwidth' },
+        {iColumn: '6', elementId: 'input_filter', type: 'ambari-bandwidth' },
+        {iColumn: '7', elementId: 'output_filter', type: 'ambari-bandwidth' },
         {iColumn: '8', elementId: 'duration_filter', type: 'time' },
-        {iColumn: '9', elementId: 'rundate_filter', type: 'date' }
+        //{iColumn: '9', elementId: 'rundate_filter', type: 'ambari-date' }
       ];
       var match = true;
-      for (i = 0; i < inputFilters.length; i++) {
+      for (var i = 0; i < inputFilters.length; i++) {
         switch (inputFilters[i].type) {
-          case 'date':
+          case 'ambari-date':
             if (jQuery('#' + inputFilters[i].elementId).val() !== 'Any' && match) {
               dateFilter(jQuery('#' + inputFilters[i].elementId).val(), aData[inputFilters[i].iColumn]);
             }
@@ -171,7 +187,7 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
               timeFilter(jQuery('#' + inputFilters[i].elementId).val(), aData[inputFilters[i].iColumn]);
             }
             break;
-          case 'bandwidth':
+          case 'ambari-bandwidth':
             if (jQuery('#' + inputFilters[i].elementId).val() && match) {
               bandwidthFilter(jQuery('#' + inputFilters[i].elementId).val(), aData[inputFilters[i].iColumn]);
             }
@@ -230,6 +246,7 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
       }
 
       function bandwidthFilter(rangeExp, rowValue) {
+        rowValue = $(rowValue).text();
         var compareChar = rangeExp.charAt(0);
         var compareScale = rangeExp.charAt(rangeExp.length - 1);
         var compareValue = isNaN(parseFloat(compareScale)) ? parseFloat(rangeExp.substr(1, rangeExp.length - 2)) : parseFloat(rangeExp.substr(1, rangeExp.length - 1));

+ 26 - 20
ambari-web/app/utils/graph.js

@@ -18,11 +18,13 @@
 
 
 module.exports = {
-  drawJobTimeLine:function (json_str, w, h, element, legend_id, timeline_id) {
-    var json = $.parseJSON(json_str);
-    console.log('json', json);
-    if (!json) {
-      return new Error("unable to load data");
+  drawJobTimeLine:function (map, shuffle, reduce, w, h, element, legend_id, timeline_id) {
+    var map = $.parseJSON(map);
+    var shuffle = $.parseJSON(shuffle);
+    var reduce = $.parseJSON(reduce);
+    if (!map || !shuffle || !reduce) {
+      console.warn('drawJobTimeLine');
+      return;
     }
 
     var graph = new Rickshaw.Graph({
@@ -33,17 +35,17 @@ module.exports = {
       stroke:true,
       series:[
         {
-          data:json[0],
+          data:map,
           color:'green',
           name:'maps'
         },
         {
-          data:json[1],
+          data:shuffle,
           color:'lightblue',
           name:'shuffles'
         },
         {
-          data:json[2],
+          data:reduce,
           color:'steelblue',
           name:'reduces'
         }
@@ -97,10 +99,15 @@ module.exports = {
       element:document.getElementById(timeline_id)
     });
   },
-  drawJobTasks:function (json_str, w, h, element, legend_id, timeline_id) {
-    var json = $.parseJSON(json_str);
-    if (!json) {
-      return new Error("unable to load data");
+  drawJobTasks:function (mapNodeLocal, mapRackLocal, mapOffSwitch, reduceOffSwitch, w, h, element, legend_id, timeline_id) {
+    var mapNodeLocal = $.parseJSON(mapNodeLocal);
+    var mapRackLocal = $.parseJSON(mapRackLocal);
+    var mapOffSwitch = $.parseJSON(mapOffSwitch);
+    var reduceOffSwitch = $.parseJSON(reduceOffSwitch);
+    console.log(mapNodeLocal, mapRackLocal, mapOffSwitch, reduceOffSwitch);
+    if (!mapNodeLocal || !mapRackLocal || !mapOffSwitch || !reduceOffSwitch) {
+      console.warn('drawJobTasks');
+      return;
     }
 
     var graph = new Rickshaw.Graph({
@@ -111,22 +118,22 @@ module.exports = {
       stroke:true,
       series:[
         {
-          data:json[0],
+          data:mapNodeLocal,
           color:'green',
           name:'node_local_map'
         },
         {
-          data:json[1],
+          data:mapRackLocal,
           color:'lightblue',
           name:'rack_local_map'
         },
         {
-          data:json[2],
+          data:mapOffSwitch,
           color:'brown',
           name:'off_switch_map'
         },
         {
-          data:json[3],
+          data:reduceOffSwitch,
           color:'red',
           name:'reduce'
         }
@@ -157,20 +164,20 @@ module.exports = {
 
     var xAxis = new Rickshaw.Graph.Axis.Time({
       graph:graph,
-      ticksTreatment:ticksTreatment,
+      ticksTreatment:ticksTreatment
     });
     xAxis.render();
 
     var yAxis = new Rickshaw.Graph.Axis.Y({
       graph:graph,
-      ticksTreatment:ticksTreatment,
+      ticksTreatment:ticksTreatment
     });
     yAxis.render();
 
     var hoverDetail = new Rickshaw.Graph.HoverDetail({
       graph:graph,
       xFormatter:function (x) {
-        return (x - json[4].submitTime) / 1000 + 's'
+        return (x - json.submitTime) + 's'
       },
       yFormatter:function (y) {
         return y / 1000 + 's'
@@ -186,7 +193,6 @@ module.exports = {
       graph:graph,
       element:document.getElementById(timeline_id)
     });
-    annotator.add(1337970759432, 'Lost tasktracker');
     graph.update();
   }
 }

+ 46 - 9
ambari-web/app/utils/helper.js

@@ -25,7 +25,7 @@ String.prototype.capitalize = function () {
 }
 
 Em.CoreObject.reopen({
-  t: function (key, attrs) {
+  t:function (key, attrs) {
     return Em.I18n.t(key, attrs)
   }
 });
@@ -38,6 +38,27 @@ Handlebars.registerHelper('warn', function (variable) {
   console.warn(variable);
 });
 
+Handlebars.registerHelper('highlight', function (variable, words) {
+  words = words.split(";");
+
+//  var self = this;
+//  if (highlightTemplate == undefined) {
+  var highlightTemplate = "<b>{0}</b>";
+//  }
+
+  words.forEach(function (word) {
+    var searchRegExp = new RegExp("\\b" + word + "\\b", "gi");
+    variable = variable.replace(searchRegExp, function (found) {
+      return highlightTemplate.format(found);
+    });
+  });
+
+  return new Handlebars.SafeString(variable);
+})
+/**
+ * Replace {i} with argument. where i is number of argument to replace with
+ * @return {String}
+ */
 String.prototype.format = function () {
   var args = arguments;
   return this.replace(/{(\d+)}/g, function (match, number) {
@@ -45,6 +66,22 @@ String.prototype.format = function () {
   });
 };
 
+String.prototype.highlight = function (words, highlightTemplate) {
+  var self = this;
+  if (highlightTemplate == undefined) {
+    var highlightTemplate = "<b>{0}</b>";
+  }
+
+  words.forEach(function (word) {
+    var searchRegExp = new RegExp("\\b" + word + "\\b", "gi");
+    self = self.replace(searchRegExp, function (found) {
+      return highlightTemplate.format(found);
+    });
+  });
+
+  return self;
+};
+
 /**
  * Convert byte size to other metrics.
  * @param {Number} precision  Number to adjust precision of return value. Default is 0.
@@ -120,10 +157,10 @@ App.formatUrl = function (urlTemplate, substitutes, testUrl) {
     if (!App.testMode) {
       var toSeconds = Math.round(new Date().getTime() / 1000);
       var allSubstitutes = {
-        toSeconds: toSeconds,
-        fromSeconds: toSeconds - 3600, // 1 hour back
-        stepSeconds: 15, // 15 seconds
-        hostName: App.test_hostname
+        toSeconds:toSeconds,
+        fromSeconds:toSeconds - 3600, // 1 hour back
+        stepSeconds:15, // 15 seconds
+        hostName:App.test_hostname
       };
       jQuery.extend(allSubstitutes, substitutes);
       for (key in allSubstitutes) {
@@ -141,15 +178,15 @@ App.formatUrl = function (urlTemplate, substitutes, testUrl) {
  * Certain variables can have JSON in string
  * format, or in JSON format itself.
  */
-App.parseJSON = function(value){
-  if(typeof value == "string"){
+App.parseJSON = function (value) {
+  if (typeof value == "string") {
     return jQuery.parseJSON(value);
   }
   return value;
 };
 
 App.format = {
-  role: function (role) {
+  role:function (role) {
     switch (role) {
       case 'ZOOKEEPER_SERVER':
         return 'ZooKeeper Server';
@@ -255,7 +292,7 @@ App.format = {
    * TIMEDOUT - Host did not respond in time
    * ABORTED - Operation was abandoned
    */
-  taskStatus: function (_taskStatus) {
+  taskStatus:function (_taskStatus) {
     return _taskStatus.replace('_', ' ').toLowerCase();
   }
 };

+ 33 - 13
ambari-web/app/views/main.js

@@ -20,32 +20,52 @@
 var App = require('app');
 
 App.MainView = Em.View.extend({
-  templateName: require('templates/main')
+  templateName:require('templates/main')
 });
 
 App.MainBackgroundOperation = Em.View.extend({
-  content: null,
-  classNames: ['background-operations'],
-  classNameBindings: ['isOpen'],
-  isOpen: false,
-  logDetails: null,
-  isOpenShowLog: false,
-  iconClass: function(){
+  content:null,
+  classNames:['background-operations'],
+  classNameBindings:['isOpen'],
+  isOpen:false,
+  iconClass:function () {
     return this.get('isOpen') ? 'icon-minus' : 'icon-plus';
   }.property('isOpen'),
-  openDetails: function(){
+  showOperationLog:function () {
     this.set('isOpen', !this.get('isOpen'))
-  },
-  showOperationLog:function(){
     var operation = this.get('content');
     var self = this;
     if (!this.get('isOpenShowLog') && !this.get('logDetails')) {
-      jQuery.getJSON('data/hosts/background_operations/logs/task' +operation.taskId + '.json',
+
+      jQuery.getJSON('data/hosts/background_operations/logs/task' + operation.taskId + '.json',
         function (data) {
+          var fields = ['stdout', 'stderror'];
+          if (data) {
+            fields.forEach(function (fieldName) {
+              if (data.fieldName) {
+                data.fieldName = data.fieldName.highlight(["fail", "err"]);
+              }
+            });
+          }
+
+          if (App.testMode) {
+            var stdError = "Donec quis error tincidunt dolor. word Proin vel fail dignissim metus. In hac err habitasse platea dictumst. Err Mauris error tortor dui, commodo vitae failure placerat ut, venenatis nec err dolor. failure Lorem ipsum dolor sit amet, fail err consectetur fail adipiscing elit. Error Vivamus vel velit ipsum, id laoreet velit. Nullam vel err augue a tortor mattis semper fail, in nec neque.";
+            stdError = stdError.highlight(["err", "fail"]);
+            data.stderror = stdError;
+          }
+
           self.set('logDetails', data);
         }
       );
     }
-    this.set('isOpenShowLog', !this.get('isOpenShowLog'))
+
+    if (App.testMode) {
+      var stdError = "Donec quis error tincidunt dolor. word Proin vel fail dignissim metus. In hac err habitasse platea dictumst. Err Mauris error tortor dui, commodo vitae failure placerat ut, venenatis nec err dolor. failure Lorem ipsum dolor sit amet, fail err consectetur fail adipiscing elit. Error Vivamus vel velit ipsum, id laoreet velit. Nullam vel err augue a tortor mattis semper fail, in nec neque.";
+      stdError = stdError.highlight(["err", "fail"]);
+      var data = {stderror:stdError};
+      self.set('logDetails', data);
+    }
+
+    this.set('isOpenShowLog', !this.get('isOpenShowLog'));
   }
 });

+ 4 - 4
ambari-web/app/views/main/admin/user/create.js

@@ -26,20 +26,20 @@ App.MainAdminUserCreateView = Em.View.extend({
     var form = this.get("userForm");
     if(form.isValid()) {
       if(form.getValues().admin === "" || form.getValues().admin == true) {
-        form.getField("roles").set("value","admin");
+        form.getField("roles").set("value","admin,user");
         form.getField("admin").set("value","true");
       } else{
         form.getField("roles").set("value","user");
       }
 
-      parent_controller.sendCommandToServer('users/' + form.getValues().userName, "POST" , {
+      parent_controller.sendCommandToServer('/users/' + form.getValues().userName, "POST" , {
         Users: {
           password: form.getValues().password,
           roles: form.getValues().roles
         }
-      }, function (requestId) {
+      }, function (success) {
 
-        if (!requestId) {
+        if (!success) {
           return;
         }
 

+ 4 - 4
ambari-web/app/views/main/admin/user/edit.js

@@ -27,7 +27,7 @@ App.MainAdminUserEditView = Em.View.extend({
     if(form.isValid()) {
       var Users={};
       if(form.getValues().admin === "" || form.getValues().admin == true) {
-        form.getField("roles").set("value","admin");
+        form.getField("roles").set("value","admin,user");
         form.getField("admin").set("value","true");
       } else{
         form.getField("roles").set("value","user");
@@ -40,11 +40,11 @@ App.MainAdminUserEditView = Em.View.extend({
         Users.old_password=form.getValues().old_password;
       }
 
-      parent_controller.sendCommandToServer('users/' + form.getValues().userName, "PUT" , {
+      parent_controller.sendCommandToServer('/users/' + form.getValues().userName, "PUT" , {
        Users:Users
-      }, function (requestId) {
+      }, function (success) {
 
-        if (!requestId) {
+        if (!success) {
           return;
         }
 

+ 27 - 11
ambari-web/app/views/main/apps/item/bar_view.js

@@ -63,31 +63,47 @@ App.MainAppsItemBarView = Em.View.extend({
 
   }.observes('activeJob'),
 
-  jobTimeLine:false,
-  jobTaskView:false,
+  map:false,
+  shuffle:false,
+  reduce:false,
+
+  mapNodeLocal:false,
+  mapRackLocal:false,
+  mapOffSwitch:false,
+  reduceOffSwitch:false,
+  submitTime:false,
+  finishTime:false,
 
   updateTimeLine:function () {
-    var url = App.testMode ? '/data/apps/jobs/timeline.json' : "urlTBD" + this.get('activeJob').get('jobName');
+    var url = App.testMode ? '/data/apps/jobs/timeline.json' : App.apiPrefix + "/jobhistory/task?jobId=" + this.get('activeJob').get('id') + 
+      "&width=" + this.get('width');
     var mapper = App.jobTimeLineMapper;
     mapper.set('model', this);
     App.HttpClient.get(url, mapper);
   }.observes('getChartData'),
 
   updateTasksView:function () {
-    var url = App.testMode ? '/data/apps/jobs/taskview.json' : "urlTBD" + this.get('activeJob').get('jobName');
+    var url = App.testMode ? '/data/apps/jobs/taskview.json' : App.apiPrefix + "/jobhistory/tasklocality?jobId=" + this.get('activeJob').get('id');
     var mapper = App.jobTasksMapper;
     mapper.set('model', this);
     App.HttpClient.get(url, mapper);
   }.observes('getChartData'),
 
   drawJobTimeline:function () {
-    var timeline = JSON.stringify(this.get('jobTimeLine'));
-    graph.drawJobTimeLine(timeline, this.get('width'), this.get('height'), '#chart', 'legend', 'timeline1');
-  }.observes('jobTimeLine'),
+    var map = JSON.stringify(this.get('map'));
+    var shuffle = JSON.stringify(this.get('shuffle'));
+    var reduce = JSON.stringify(this.get('reduce'));
+    $('#chart, #legend, #timeline1').html('');
+    graph.drawJobTimeLine(map, shuffle, reduce, this.get('width'), this.get('height'), '#chart', 'legend', 'timeline1');
+  }.observes('map', 'shuffle', 'reduce'),
 
   drawJobTasks:function () {
-    var taskview = JSON.stringify(this.get('jobTaskView'));
-    graph.drawJobTasks(taskview, this.get('width'), this.get('height'), '#job_tasks', 'tasks_legend', 'timeline2');
-  }.observes('jobTaskView')
+    var mapNodeLocal = JSON.stringify(this.get('mapNodeLocal'));
+    var mapRackLocal = JSON.stringify(this.get('mapRackLocal'));
+    var mapOffSwitch = JSON.stringify(this.get('mapOffSwitch'));
+    var reduceOffSwitch = JSON.stringify(this.get('reduceOffSwitch'));
+    $('#job_tasks, #tasks_legend, #timeline2').html('');
+    graph.drawJobTasks(mapNodeLocal, mapRackLocal, mapOffSwitch, reduceOffSwitch, this.get('width'), this.get('height'), '#job_tasks', 'tasks_legend', 'timeline2');
+  }.observes('mapNodeLocal', 'mapRackLocal', 'mapOffSwitch', 'reduceOffSwitch')
 
-});
+});

+ 0 - 2
ambari-web/app/views/main/apps/item/dag_view.js

@@ -98,8 +98,6 @@ App.MainAppsItemDagView = Em.View.extend({
     // Redraw table
     innerTable.fnDraw(false);
     innerTable.fnSettings().oFeatures.bFilter = false;
-
-    console.log(innerTable.fnSettings());
     var dagSchema = this.get('controller.content.workflowContext');
     var jobs = this.get('jobs');
     var graph = new DagViewer(false, 'dag_viewer')

+ 128 - 3
ambari-web/app/views/main/host.js

@@ -17,6 +17,7 @@
  */
 
 var App = require('app');
+require('utils/data_table');
 
 App.MainHostView = Em.View.extend({
   templateName:require('templates/main/host'),
@@ -28,7 +29,7 @@ App.MainHostView = Em.View.extend({
     return App.router.get('mainHostController.content');
   }.property('App.router.mainHostController.content'),
   componentsIds:[1, 2, 3, 4, 5, 6, 7, 8],
-
+  oTable: null,
   isFilterOpen:false,
 
 //  isApplyDisabled:function () {
@@ -68,6 +69,33 @@ App.MainHostView = Em.View.extend({
   }.observes('slaveComponentsChecked'),
 
   didInsertElement:function () {
+    var oTable = $('#hosts-table').dataTable({
+      "sDom": '<"search-bar"f><"clear">rt<"page-bar"lip><"clear">',
+      "oLanguage": {
+        "sSearch": "Search:",
+        "sLengthMenu": "Show: _MENU_",
+        "sInfo": "_START_ - _END_ of _TOTAL_ (_TOTAL_ total)",
+        "sInfoEmpty": "0 - _END_ of _TOTAL_ (_TOTAL_ total)",
+        "sInfoFiltered": "",
+        "oPaginate":{
+          "sPrevious": "<i class='icon-arrow-left'></i>",
+          "sNext": "<i class='icon-arrow-right'></i>"
+        }
+      },
+      "bSortCellsTop": true,
+      "iDisplayLength": 10,
+      "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
+      "aoColumns":[
+        { "sType":"html" },
+        { "sType":"html" },
+        { "sType":"num-html" },
+        { "sType":"ambari-bandwidth" },
+        { "sType":"string" },
+        { "sType":"string" },
+        { "sType":"string", "bSortable": false  }
+      ]
+    });
+    this.set('oTable', oTable);
     this.set('allComponentsChecked', true); // select all components (checkboxes) on start.
   },
 
@@ -111,7 +139,8 @@ App.MainHostView = Em.View.extend({
     }.property('content.components.@each'),
 
     usageStyle:function () {
-      return "width:" + this.get('content.diskUsage') + "%";
+      //return "width:" + this.get('content.diskUsage') + "%";
+      return "width:" + (25+Math.random()*50) + "%"; // Just for tests purposes
     }.property('content.diskUsage')
 
 //    HostCheckboxView:Em.Checkbox.extend({
@@ -152,5 +181,101 @@ App.MainHostView = Em.View.extend({
     var selectedHostsIds = App.router.get('mainHostController.selectedHostsIds');
     var rack = App.router.get('mainHostController.selectedRack');
     return (selectedHostsIds.length && rack && rack.constructor == 'App.Cluster') ? false : "disabled";
-  }.property('App.router.mainHostController.selectedHostsIds', 'App.router.mainHostController.selectedRack')
+  }.property('App.router.mainHostController.selectedHostsIds', 'App.router.mainHostController.selectedRack'),
+
+  nameFilterView: Em.TextField.extend({
+    classNames:['input-medium'],
+    type:'text',
+    placeholder: 'Any Name',
+    filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
+      this.get('parentView').get('applyFilter')(this.get('parentView'), 0, this.get('value'));
+    }.observes('value')
+  }),
+
+  rackFilterView: Em.TextField.extend({
+    classNames:['input-medium'],
+    type:'text',
+    placeholder: 'Any Name',
+    filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
+      this.get('parentView').get('applyFilter')(this.get('parentView'), 1, this.get('value'));
+    }.observes('value')
+  }),
+  /**
+   * Filter-field for cpu
+   */
+  cpuFilterView: Em.TextField.extend({
+    classNames:['input-mini'],
+    type:'text',
+    placeholder: 'Any ',
+    elementId:'cpu_filter',
+    filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
+      this.get('parentView').get('applyFilter')(this.get('parentView'), 2);
+    }.observes('value')
+  }),
+  /**
+   * Filter-field for RAM
+   */
+  ramFilterView: Em.TextField.extend({
+    classNames:['input-mini'],
+    type:'text',
+    placeholder: 'Any ',
+    elementId: 'ram_filter',
+    filtering:function(){
+      if (this.get('value') == '') {
+        this.$().closest('th').addClass('notActive');
+      }
+      else {
+        this.$().closest('th').removeClass('notActive');
+      }
+      this.get('parentView').get('applyFilter')(this.get('parentView'), 3);
+    }.observes('value')
+  }),
+  /**
+   * Clear selected filter
+   * @param event
+   */
+  clearFilterButtonClick: function(event) {
+    var viewName = event.target.id.replace('view_', '');
+    var elementId = this.get(viewName).get('elementId');
+    if(this.get(viewName).get('tagName') === 'input') {
+      this.get(viewName).set('value', '');
+    }
+    if(this.get(viewName).get('tagName') === 'select') {
+      this.get(viewName).set('value', 'Any');
+      this.get(viewName).change();
+    }
+    if(this.get(viewName).get('multiple')) {
+      this.get(viewName).get('clearFilter')(this.get(viewName));
+    }
+  },
+  /**
+   * apply each filter to dataTable
+   *
+   * @param {parentView}
+   * @param {iColumn} number of column by which filter
+   * @param {value}
+   */
+  applyFilter:function(parentView, iColumn, value) {
+    value = (value) ? value : '';
+    parentView.get('oTable').fnFilter(value, iColumn);
+  }
+
 });

+ 2 - 1
ambari-web/app/views/wizard/controls_view.js

@@ -28,7 +28,7 @@ App.ServiceConfigPopoverSupport = Ember.Mixin.create({
    * Config object. It will instance of App.ServiceConfigProperty
    */
   serviceConfig: null,
-
+  placeholderBinding: 'serviceConfig.defaultValue',
   isPopoverEnabled: true,
 
   didInsertElement: function () {
@@ -252,6 +252,7 @@ App.ServiceConfigMultipleHostsDisplay = Ember.Mixin.create(App.ServiceConfigHost
     console.log('controller', this.get('controller').name); //should be slaveComponentGroupsController
     if(!this.get('value')){
      // debugger;
+      return true;
     }
     return this.get('value').length === 0;
   }.property('value'),