浏览代码

AMBARI-1059. Refactor cluster management. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1418991 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 年之前
父节点
当前提交
0ea9f9b778

+ 270 - 220
ambari-web/app/assets/data/apps/jobs/taskview.json

@@ -1,556 +1,606 @@
 {
 {
     "mapNodeLocal": [
     "mapNodeLocal": [
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349195920,
+            "x": 1353963926,
             "y": 0
             "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
+            "IO": 32616,
+            "label": "attempt_201211241031_0008_m_000000_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964059,
+            "y": 11007
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196030,
+            "x": 1353964071,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_m_000000_2",
-            "r": 6,
-            "x": 1349196031,
-            "y": 102219
-        },
-        {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196034,
+            "x": 1353964074,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196037,
+            "x": 1353964080,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196043,
+            "x": 1353964083,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196046,
+            "x": 1353964092,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196055,
+            "x": 1353964095,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196058,
+            "x": 1353964104,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196067,
+            "x": 1353964107,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196070,
+            "x": 1353964116,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196079,
+            "x": 1353964119,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196085,
+            "x": 1353964128,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196091,
+            "x": 1353964131,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196097,
+            "x": 1353964140,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196103,
+            "x": 1353964143,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196106,
+            "x": 1353964152,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196115,
+            "x": 1353964155,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196118,
+            "x": 1353964164,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196124,
+            "x": 1353964167,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196127,
+            "x": 1353964176,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196136,
+            "x": 1353964179,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196139,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196160,
+            "x": 1353964197,
             "y": 0
             "y": 0
         }
         }
     ],
     ],
     "mapRackLocal": [
     "mapRackLocal": [
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349195920,
+            "x": 1353963926,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196028,
+            "x": 1353964059,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196029,
+            "x": 1353964071,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196030,
+            "x": 1353964074,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196031,
+            "x": 1353964080,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196034,
+            "x": 1353964083,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196037,
+            "x": 1353964092,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196043,
+            "x": 1353964095,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196046,
+            "x": 1353964104,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196055,
+            "x": 1353964107,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196058,
+            "x": 1353964116,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196067,
+            "x": 1353964119,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196070,
+            "x": 1353964128,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196079,
+            "x": 1353964131,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196085,
+            "x": 1353964140,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196091,
+            "x": 1353964143,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196097,
+            "x": 1353964152,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196103,
+            "x": 1353964155,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196106,
+            "x": 1353964164,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196115,
+            "x": 1353964167,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196118,
+            "x": 1353964176,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196124,
+            "x": 1353964179,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196127,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196136,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196139,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196160,
+            "x": 1353964197,
             "y": 0
             "y": 0
         }
         }
     ],
     ],
     "mapOffSwitch": [
     "mapOffSwitch": [
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349195920,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196028,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196029,
-            "y": 0
-        },
-        {
-            "r": 0,
-            "x": 1349196030,
+            "x": 1353963926,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196031,
+            "x": 1353964059,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196034,
+            "x": 1353964071,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196037,
+            "x": 1353964074,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196043,
+            "x": 1353964080,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196046,
+            "x": 1353964083,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196055,
+            "x": 1353964092,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196058,
+            "x": 1353964095,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196067,
+            "x": 1353964104,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196070,
+            "x": 1353964107,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196079,
+            "x": 1353964116,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196085,
+            "x": 1353964119,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196091,
+            "x": 1353964128,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196097,
+            "x": 1353964131,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196103,
+            "x": 1353964140,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196106,
+            "x": 1353964143,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196115,
+            "x": 1353964152,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196118,
+            "x": 1353964155,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196124,
+            "x": 1353964164,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196127,
+            "x": 1353964167,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196136,
+            "x": 1353964176,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196139,
+            "x": 1353964179,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196160,
+            "x": 1353964197,
             "y": 0
             "y": 0
         }
         }
     ],
     ],
     "reduceOffSwitch": [
     "reduceOffSwitch": [
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349195920,
+            "x": 1353963926,
             "y": 0
             "y": 0
         },
         },
         {
         {
+            "IO": 0,
             "r": 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,
+            "x": 1353964059,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000000_0",
-            "r": 6,
-            "x": 1349196034,
-            "y": 10484
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000000_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964071,
+            "y": 10572
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000001_0",
-            "r": 6,
-            "x": 1349196037,
-            "y": 10645
+            "IO": 31700,
+            "label": "attempt_201211241031_0008_r_000001_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964074,
+            "y": 10651
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000002_0",
-            "r": 6,
-            "x": 1349196043,
-            "y": 14970
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000002_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964080,
+            "y": 15123
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000003_0",
-            "r": 6,
-            "x": 1349196046,
-            "y": 14872
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000003_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964083,
+            "y": 15007
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000004_0",
-            "r": 6,
-            "x": 1349196055,
-            "y": 13521
+            "IO": 31706,
+            "label": "attempt_201211241031_0008_r_000004_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964092,
+            "y": 13555
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000005_0",
-            "r": 6,
-            "x": 1349196058,
-            "y": 16319
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000005_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964095,
+            "y": 13326
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000006_0",
-            "r": 6,
-            "x": 1349196067,
-            "y": 15078
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000006_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964104,
+            "y": 15120
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000007_0",
-            "r": 6,
-            "x": 1349196070,
-            "y": 17741
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000007_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964107,
+            "y": 14947
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000008_0",
-            "r": 6,
-            "x": 1349196079,
-            "y": 13609
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000008_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964116,
+            "y": 13493
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000009_0",
-            "r": 6,
-            "x": 1349196085,
-            "y": 13184
+            "IO": 31658,
+            "label": "attempt_201211241031_0008_r_000009_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964119,
+            "y": 13349
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000010_0",
-            "r": 6,
-            "x": 1349196091,
-            "y": 14919
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000010_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964128,
+            "y": 15011
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000011_0",
-            "r": 6,
-            "x": 1349196097,
-            "y": 11590
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000011_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964131,
+            "y": 11646
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000012_0",
-            "r": 6,
-            "x": 1349196103,
-            "y": 13223
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000012_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964140,
+            "y": 13337
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000013_0",
-            "r": 6,
-            "x": 1349196106,
-            "y": 12841
+            "IO": 31701,
+            "label": "attempt_201211241031_0008_r_000013_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964143,
+            "y": 10900
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000014_0",
-            "r": 6,
-            "x": 1349196115,
-            "y": 11585
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000014_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964152,
+            "y": 14688
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000015_0",
-            "r": 6,
-            "x": 1349196118,
-            "y": 11085
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000015_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964155,
+            "y": 10592
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000016_0",
-            "r": 6,
-            "x": 1349196124,
-            "y": 12886
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000016_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964164,
+            "y": 15100
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000017_0",
-            "r": 6,
-            "x": 1349196127,
-            "y": 15345
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000017_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964167,
+            "y": 10719
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000018_0",
-            "r": 6,
-            "x": 1349196136,
-            "y": 11112
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000018_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964176,
+            "y": 14973
         },
         },
         {
         {
-            "label": "attempt_201210011000_0012_r_000019_0",
-            "r": 6,
-            "x": 1349196139,
-            "y": 13773
+            "IO": 31659,
+            "label": "attempt_201211241031_0008_r_000019_0",
+            "r": 12,
+            "status": "SUCCESS",
+            "x": 1353964179,
+            "y": 10534
         },
         },
         {
         {
+            "IO": 0,
             "r": 0,
             "r": 0,
-            "x": 1349196160,
+            "x": 1353964197,
             "y": 0
             "y": 0
         }
         }
     ],
     ],
-    "submitTime": 1349195920,
-    "finishTime": 1349196160
+    "submitTime": 1353963926,
+    "finishTime": 1353964197
 }
 }

+ 2764 - 232
ambari-web/app/assets/data/apps/jobs/timeline.json

@@ -1,739 +1,3271 @@
 {
 {
     "map": [
     "map": [
         {
         {
-            "x": 1349195920,
+            "x": 1353963926,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195924,
+            "x": 1353963927,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195928,
+            "x": 1353963928,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195932,
+            "x": 1353963929,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195936,
+            "x": 1353963930,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195940,
+            "x": 1353963931,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195944,
+            "x": 1353963932,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195948,
+            "x": 1353963933,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195952,
+            "x": 1353963934,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195956,
+            "x": 1353963935,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195960,
+            "x": 1353963936,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195964,
+            "x": 1353963937,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195968,
+            "x": 1353963938,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195972,
+            "x": 1353963939,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195976,
+            "x": 1353963940,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195980,
+            "x": 1353963941,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195984,
+            "x": 1353963942,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195988,
+            "x": 1353963943,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195992,
+            "x": 1353963944,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195996,
+            "x": 1353963945,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196000,
+            "x": 1353963946,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196004,
+            "x": 1353963947,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196008,
+            "x": 1353963948,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196012,
+            "x": 1353963949,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196016,
+            "x": 1353963950,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196020,
+            "x": 1353963951,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196024,
+            "x": 1353963952,
+            "y": 0
+        },
+        {
+            "x": 1353963953,
+            "y": 0
+        },
+        {
+            "x": 1353963954,
+            "y": 0
+        },
+        {
+            "x": 1353963955,
+            "y": 0
+        },
+        {
+            "x": 1353963956,
+            "y": 0
+        },
+        {
+            "x": 1353963957,
+            "y": 0
+        },
+        {
+            "x": 1353963958,
+            "y": 0
+        },
+        {
+            "x": 1353963959,
+            "y": 0
+        },
+        {
+            "x": 1353963960,
+            "y": 0
+        },
+        {
+            "x": 1353963961,
+            "y": 0
+        },
+        {
+            "x": 1353963962,
+            "y": 0
+        },
+        {
+            "x": 1353963963,
+            "y": 0
+        },
+        {
+            "x": 1353963964,
+            "y": 0
+        },
+        {
+            "x": 1353963965,
+            "y": 0
+        },
+        {
+            "x": 1353963966,
+            "y": 0
+        },
+        {
+            "x": 1353963967,
+            "y": 0
+        },
+        {
+            "x": 1353963968,
+            "y": 0
+        },
+        {
+            "x": 1353963969,
+            "y": 0
+        },
+        {
+            "x": 1353963970,
+            "y": 0
+        },
+        {
+            "x": 1353963971,
+            "y": 0
+        },
+        {
+            "x": 1353963972,
+            "y": 0
+        },
+        {
+            "x": 1353963973,
+            "y": 0
+        },
+        {
+            "x": 1353963974,
+            "y": 0
+        },
+        {
+            "x": 1353963975,
+            "y": 0
+        },
+        {
+            "x": 1353963976,
+            "y": 0
+        },
+        {
+            "x": 1353963977,
+            "y": 0
+        },
+        {
+            "x": 1353963978,
+            "y": 0
+        },
+        {
+            "x": 1353963979,
+            "y": 0
+        },
+        {
+            "x": 1353963980,
+            "y": 0
+        },
+        {
+            "x": 1353963981,
+            "y": 0
+        },
+        {
+            "x": 1353963982,
+            "y": 0
+        },
+        {
+            "x": 1353963983,
+            "y": 0
+        },
+        {
+            "x": 1353963984,
+            "y": 0
+        },
+        {
+            "x": 1353963985,
+            "y": 0
+        },
+        {
+            "x": 1353963986,
+            "y": 0
+        },
+        {
+            "x": 1353963987,
+            "y": 0
+        },
+        {
+            "x": 1353963988,
+            "y": 0
+        },
+        {
+            "x": 1353963989,
+            "y": 0
+        },
+        {
+            "x": 1353963990,
+            "y": 0
+        },
+        {
+            "x": 1353963991,
+            "y": 0
+        },
+        {
+            "x": 1353963992,
+            "y": 0
+        },
+        {
+            "x": 1353963993,
+            "y": 0
+        },
+        {
+            "x": 1353963994,
+            "y": 0
+        },
+        {
+            "x": 1353963995,
+            "y": 0
+        },
+        {
+            "x": 1353963996,
+            "y": 0
+        },
+        {
+            "x": 1353963997,
+            "y": 0
+        },
+        {
+            "x": 1353963998,
+            "y": 0
+        },
+        {
+            "x": 1353963999,
+            "y": 0
+        },
+        {
+            "x": 1353964000,
+            "y": 0
+        },
+        {
+            "x": 1353964001,
+            "y": 0
+        },
+        {
+            "x": 1353964002,
+            "y": 0
+        },
+        {
+            "x": 1353964003,
+            "y": 0
+        },
+        {
+            "x": 1353964004,
+            "y": 0
+        },
+        {
+            "x": 1353964005,
+            "y": 0
+        },
+        {
+            "x": 1353964006,
+            "y": 0
+        },
+        {
+            "x": 1353964007,
+            "y": 0
+        },
+        {
+            "x": 1353964008,
+            "y": 0
+        },
+        {
+            "x": 1353964009,
+            "y": 0
+        },
+        {
+            "x": 1353964010,
+            "y": 0
+        },
+        {
+            "x": 1353964011,
+            "y": 0
+        },
+        {
+            "x": 1353964012,
+            "y": 0
+        },
+        {
+            "x": 1353964013,
+            "y": 0
+        },
+        {
+            "x": 1353964014,
+            "y": 0
+        },
+        {
+            "x": 1353964015,
+            "y": 0
+        },
+        {
+            "x": 1353964016,
+            "y": 0
+        },
+        {
+            "x": 1353964017,
+            "y": 0
+        },
+        {
+            "x": 1353964018,
+            "y": 0
+        },
+        {
+            "x": 1353964019,
+            "y": 0
+        },
+        {
+            "x": 1353964020,
+            "y": 0
+        },
+        {
+            "x": 1353964021,
+            "y": 0
+        },
+        {
+            "x": 1353964022,
+            "y": 0
+        },
+        {
+            "x": 1353964023,
+            "y": 0
+        },
+        {
+            "x": 1353964024,
+            "y": 0
+        },
+        {
+            "x": 1353964025,
+            "y": 0
+        },
+        {
+            "x": 1353964026,
+            "y": 0
+        },
+        {
+            "x": 1353964027,
+            "y": 0
+        },
+        {
+            "x": 1353964028,
+            "y": 0
+        },
+        {
+            "x": 1353964029,
+            "y": 0
+        },
+        {
+            "x": 1353964030,
+            "y": 0
+        },
+        {
+            "x": 1353964031,
+            "y": 0
+        },
+        {
+            "x": 1353964032,
+            "y": 0
+        },
+        {
+            "x": 1353964033,
+            "y": 0
+        },
+        {
+            "x": 1353964034,
+            "y": 0
+        },
+        {
+            "x": 1353964035,
+            "y": 0
+        },
+        {
+            "x": 1353964036,
+            "y": 0
+        },
+        {
+            "x": 1353964037,
+            "y": 0
+        },
+        {
+            "x": 1353964038,
+            "y": 0
+        },
+        {
+            "x": 1353964039,
+            "y": 0
+        },
+        {
+            "x": 1353964040,
+            "y": 0
+        },
+        {
+            "x": 1353964041,
+            "y": 0
+        },
+        {
+            "x": 1353964042,
+            "y": 0
+        },
+        {
+            "x": 1353964043,
+            "y": 0
+        },
+        {
+            "x": 1353964044,
+            "y": 0
+        },
+        {
+            "x": 1353964045,
+            "y": 0
+        },
+        {
+            "x": 1353964046,
+            "y": 0
+        },
+        {
+            "x": 1353964047,
+            "y": 0
+        },
+        {
+            "x": 1353964048,
+            "y": 0
+        },
+        {
+            "x": 1353964049,
+            "y": 0
+        },
+        {
+            "x": 1353964050,
+            "y": 0
+        },
+        {
+            "x": 1353964051,
+            "y": 0
+        },
+        {
+            "x": 1353964052,
+            "y": 0
+        },
+        {
+            "x": 1353964053,
+            "y": 0
+        },
+        {
+            "x": 1353964054,
+            "y": 0
+        },
+        {
+            "x": 1353964055,
+            "y": 0
+        },
+        {
+            "x": 1353964056,
+            "y": 0
+        },
+        {
+            "x": 1353964057,
+            "y": 0
+        },
+        {
+            "x": 1353964058,
+            "y": 0
+        },
+        {
+            "x": 1353964059,
+            "y": 1
+        },
+        {
+            "x": 1353964060,
+            "y": 1
+        },
+        {
+            "x": 1353964061,
+            "y": 1
+        },
+        {
+            "x": 1353964062,
+            "y": 1
+        },
+        {
+            "x": 1353964063,
+            "y": 1
+        },
+        {
+            "x": 1353964064,
+            "y": 1
+        },
+        {
+            "x": 1353964065,
+            "y": 1
+        },
+        {
+            "x": 1353964066,
+            "y": 1
+        },
+        {
+            "x": 1353964067,
+            "y": 1
+        },
+        {
+            "x": 1353964068,
+            "y": 1
+        },
+        {
+            "x": 1353964069,
+            "y": 1
+        },
+        {
+            "x": 1353964070,
+            "y": 1
+        },
+        {
+            "x": 1353964071,
+            "y": 0
+        },
+        {
+            "x": 1353964072,
+            "y": 0
+        },
+        {
+            "x": 1353964073,
+            "y": 0
+        },
+        {
+            "x": 1353964074,
+            "y": 0
+        },
+        {
+            "x": 1353964075,
+            "y": 0
+        },
+        {
+            "x": 1353964076,
+            "y": 0
+        },
+        {
+            "x": 1353964077,
+            "y": 0
+        },
+        {
+            "x": 1353964078,
+            "y": 0
+        },
+        {
+            "x": 1353964079,
+            "y": 0
+        },
+        {
+            "x": 1353964080,
+            "y": 0
+        },
+        {
+            "x": 1353964081,
+            "y": 0
+        },
+        {
+            "x": 1353964082,
+            "y": 0
+        },
+        {
+            "x": 1353964083,
+            "y": 0
+        },
+        {
+            "x": 1353964084,
+            "y": 0
+        },
+        {
+            "x": 1353964085,
+            "y": 0
+        },
+        {
+            "x": 1353964086,
+            "y": 0
+        },
+        {
+            "x": 1353964087,
+            "y": 0
+        },
+        {
+            "x": 1353964088,
+            "y": 0
+        },
+        {
+            "x": 1353964089,
+            "y": 0
+        },
+        {
+            "x": 1353964090,
+            "y": 0
+        },
+        {
+            "x": 1353964091,
+            "y": 0
+        },
+        {
+            "x": 1353964092,
+            "y": 0
+        },
+        {
+            "x": 1353964093,
+            "y": 0
+        },
+        {
+            "x": 1353964094,
+            "y": 0
+        },
+        {
+            "x": 1353964095,
+            "y": 0
+        },
+        {
+            "x": 1353964096,
+            "y": 0
+        },
+        {
+            "x": 1353964097,
+            "y": 0
+        },
+        {
+            "x": 1353964098,
+            "y": 0
+        },
+        {
+            "x": 1353964099,
+            "y": 0
+        },
+        {
+            "x": 1353964100,
+            "y": 0
+        },
+        {
+            "x": 1353964101,
+            "y": 0
+        },
+        {
+            "x": 1353964102,
+            "y": 0
+        },
+        {
+            "x": 1353964103,
+            "y": 0
+        },
+        {
+            "x": 1353964104,
+            "y": 0
+        },
+        {
+            "x": 1353964105,
+            "y": 0
+        },
+        {
+            "x": 1353964106,
+            "y": 0
+        },
+        {
+            "x": 1353964107,
+            "y": 0
+        },
+        {
+            "x": 1353964108,
+            "y": 0
+        },
+        {
+            "x": 1353964109,
+            "y": 0
+        },
+        {
+            "x": 1353964110,
+            "y": 0
+        },
+        {
+            "x": 1353964111,
+            "y": 0
+        },
+        {
+            "x": 1353964112,
+            "y": 0
+        },
+        {
+            "x": 1353964113,
+            "y": 0
+        },
+        {
+            "x": 1353964114,
+            "y": 0
+        },
+        {
+            "x": 1353964115,
+            "y": 0
+        },
+        {
+            "x": 1353964116,
+            "y": 0
+        },
+        {
+            "x": 1353964117,
+            "y": 0
+        },
+        {
+            "x": 1353964118,
+            "y": 0
+        },
+        {
+            "x": 1353964119,
+            "y": 0
+        },
+        {
+            "x": 1353964120,
+            "y": 0
+        },
+        {
+            "x": 1353964121,
+            "y": 0
+        },
+        {
+            "x": 1353964122,
+            "y": 0
+        },
+        {
+            "x": 1353964123,
+            "y": 0
+        },
+        {
+            "x": 1353964124,
+            "y": 0
+        },
+        {
+            "x": 1353964125,
+            "y": 0
+        },
+        {
+            "x": 1353964126,
+            "y": 0
+        },
+        {
+            "x": 1353964127,
+            "y": 0
+        },
+        {
+            "x": 1353964128,
+            "y": 0
+        },
+        {
+            "x": 1353964129,
+            "y": 0
+        },
+        {
+            "x": 1353964130,
+            "y": 0
+        },
+        {
+            "x": 1353964131,
+            "y": 0
+        },
+        {
+            "x": 1353964132,
+            "y": 0
+        },
+        {
+            "x": 1353964133,
+            "y": 0
+        },
+        {
+            "x": 1353964134,
+            "y": 0
+        },
+        {
+            "x": 1353964135,
+            "y": 0
+        },
+        {
+            "x": 1353964136,
+            "y": 0
+        },
+        {
+            "x": 1353964137,
+            "y": 0
+        },
+        {
+            "x": 1353964138,
+            "y": 0
+        },
+        {
+            "x": 1353964139,
+            "y": 0
+        },
+        {
+            "x": 1353964140,
+            "y": 0
+        },
+        {
+            "x": 1353964141,
+            "y": 0
+        },
+        {
+            "x": 1353964142,
+            "y": 0
+        },
+        {
+            "x": 1353964143,
+            "y": 0
+        },
+        {
+            "x": 1353964144,
+            "y": 0
+        },
+        {
+            "x": 1353964145,
+            "y": 0
+        },
+        {
+            "x": 1353964146,
+            "y": 0
+        },
+        {
+            "x": 1353964147,
+            "y": 0
+        },
+        {
+            "x": 1353964148,
+            "y": 0
+        },
+        {
+            "x": 1353964149,
+            "y": 0
+        },
+        {
+            "x": 1353964150,
+            "y": 0
+        },
+        {
+            "x": 1353964151,
+            "y": 0
+        },
+        {
+            "x": 1353964152,
+            "y": 0
+        },
+        {
+            "x": 1353964153,
+            "y": 0
+        },
+        {
+            "x": 1353964154,
+            "y": 0
+        },
+        {
+            "x": 1353964155,
+            "y": 0
+        },
+        {
+            "x": 1353964156,
+            "y": 0
+        },
+        {
+            "x": 1353964157,
+            "y": 0
+        },
+        {
+            "x": 1353964158,
+            "y": 0
+        },
+        {
+            "x": 1353964159,
+            "y": 0
+        },
+        {
+            "x": 1353964160,
+            "y": 0
+        },
+        {
+            "x": 1353964161,
+            "y": 0
+        },
+        {
+            "x": 1353964162,
+            "y": 0
+        },
+        {
+            "x": 1353964163,
+            "y": 0
+        },
+        {
+            "x": 1353964164,
+            "y": 0
+        },
+        {
+            "x": 1353964165,
+            "y": 0
+        },
+        {
+            "x": 1353964166,
+            "y": 0
+        },
+        {
+            "x": 1353964167,
+            "y": 0
+        },
+        {
+            "x": 1353964168,
+            "y": 0
+        },
+        {
+            "x": 1353964169,
+            "y": 0
+        },
+        {
+            "x": 1353964170,
+            "y": 0
+        },
+        {
+            "x": 1353964171,
+            "y": 0
+        },
+        {
+            "x": 1353964172,
+            "y": 0
+        },
+        {
+            "x": 1353964173,
+            "y": 0
+        },
+        {
+            "x": 1353964174,
+            "y": 0
+        },
+        {
+            "x": 1353964175,
+            "y": 0
+        },
+        {
+            "x": 1353964176,
+            "y": 0
+        },
+        {
+            "x": 1353964177,
+            "y": 0
+        },
+        {
+            "x": 1353964178,
+            "y": 0
+        },
+        {
+            "x": 1353964179,
+            "y": 0
+        },
+        {
+            "x": 1353964180,
+            "y": 0
+        },
+        {
+            "x": 1353964181,
+            "y": 0
+        },
+        {
+            "x": 1353964182,
+            "y": 0
+        },
+        {
+            "x": 1353964183,
+            "y": 0
+        },
+        {
+            "x": 1353964184,
+            "y": 0
+        },
+        {
+            "x": 1353964185,
+            "y": 0
+        },
+        {
+            "x": 1353964186,
+            "y": 0
+        },
+        {
+            "x": 1353964187,
+            "y": 0
+        },
+        {
+            "x": 1353964188,
+            "y": 0
+        },
+        {
+            "x": 1353964189,
+            "y": 0
+        },
+        {
+            "x": 1353964190,
+            "y": 0
+        },
+        {
+            "x": 1353964191,
+            "y": 0
+        },
+        {
+            "x": 1353964192,
+            "y": 0
+        },
+        {
+            "x": 1353964193,
+            "y": 0
+        },
+        {
+            "x": 1353964194,
+            "y": 0
+        },
+        {
+            "x": 1353964195,
+            "y": 0
+        },
+        {
+            "x": 1353964196,
+            "y": 0
+        },
+        {
+            "x": 1353964197,
+            "y": 0
+        }
+    ],
+    "shuffle": [
+        {
+            "x": 1353963926,
+            "y": 0
+        },
+        {
+            "x": 1353963927,
+            "y": 0
+        },
+        {
+            "x": 1353963928,
+            "y": 0
+        },
+        {
+            "x": 1353963929,
+            "y": 0
+        },
+        {
+            "x": 1353963930,
+            "y": 0
+        },
+        {
+            "x": 1353963931,
+            "y": 0
+        },
+        {
+            "x": 1353963932,
+            "y": 0
+        },
+        {
+            "x": 1353963933,
+            "y": 0
+        },
+        {
+            "x": 1353963934,
+            "y": 0
+        },
+        {
+            "x": 1353963935,
+            "y": 0
+        },
+        {
+            "x": 1353963936,
+            "y": 0
+        },
+        {
+            "x": 1353963937,
+            "y": 0
+        },
+        {
+            "x": 1353963938,
+            "y": 0
+        },
+        {
+            "x": 1353963939,
+            "y": 0
+        },
+        {
+            "x": 1353963940,
+            "y": 0
+        },
+        {
+            "x": 1353963941,
+            "y": 0
+        },
+        {
+            "x": 1353963942,
+            "y": 0
+        },
+        {
+            "x": 1353963943,
+            "y": 0
+        },
+        {
+            "x": 1353963944,
+            "y": 0
+        },
+        {
+            "x": 1353963945,
+            "y": 0
+        },
+        {
+            "x": 1353963946,
+            "y": 0
+        },
+        {
+            "x": 1353963947,
+            "y": 0
+        },
+        {
+            "x": 1353963948,
+            "y": 0
+        },
+        {
+            "x": 1353963949,
+            "y": 0
+        },
+        {
+            "x": 1353963950,
+            "y": 0
+        },
+        {
+            "x": 1353963951,
+            "y": 0
+        },
+        {
+            "x": 1353963952,
+            "y": 0
+        },
+        {
+            "x": 1353963953,
+            "y": 0
+        },
+        {
+            "x": 1353963954,
+            "y": 0
+        },
+        {
+            "x": 1353963955,
+            "y": 0
+        },
+        {
+            "x": 1353963956,
+            "y": 0
+        },
+        {
+            "x": 1353963957,
+            "y": 0
+        },
+        {
+            "x": 1353963958,
+            "y": 0
+        },
+        {
+            "x": 1353963959,
+            "y": 0
+        },
+        {
+            "x": 1353963960,
+            "y": 0
+        },
+        {
+            "x": 1353963961,
+            "y": 0
+        },
+        {
+            "x": 1353963962,
+            "y": 0
+        },
+        {
+            "x": 1353963963,
+            "y": 0
+        },
+        {
+            "x": 1353963964,
+            "y": 0
+        },
+        {
+            "x": 1353963965,
+            "y": 0
+        },
+        {
+            "x": 1353963966,
+            "y": 0
+        },
+        {
+            "x": 1353963967,
+            "y": 0
+        },
+        {
+            "x": 1353963968,
+            "y": 0
+        },
+        {
+            "x": 1353963969,
+            "y": 0
+        },
+        {
+            "x": 1353963970,
+            "y": 0
+        },
+        {
+            "x": 1353963971,
+            "y": 0
+        },
+        {
+            "x": 1353963972,
+            "y": 0
+        },
+        {
+            "x": 1353963973,
+            "y": 0
+        },
+        {
+            "x": 1353963974,
+            "y": 0
+        },
+        {
+            "x": 1353963975,
+            "y": 0
+        },
+        {
+            "x": 1353963976,
+            "y": 0
+        },
+        {
+            "x": 1353963977,
+            "y": 0
+        },
+        {
+            "x": 1353963978,
+            "y": 0
+        },
+        {
+            "x": 1353963979,
+            "y": 0
+        },
+        {
+            "x": 1353963980,
+            "y": 0
+        },
+        {
+            "x": 1353963981,
+            "y": 0
+        },
+        {
+            "x": 1353963982,
+            "y": 0
+        },
+        {
+            "x": 1353963983,
+            "y": 0
+        },
+        {
+            "x": 1353963984,
+            "y": 0
+        },
+        {
+            "x": 1353963985,
+            "y": 0
+        },
+        {
+            "x": 1353963986,
+            "y": 0
+        },
+        {
+            "x": 1353963987,
+            "y": 0
+        },
+        {
+            "x": 1353963988,
+            "y": 0
+        },
+        {
+            "x": 1353963989,
+            "y": 0
+        },
+        {
+            "x": 1353963990,
+            "y": 0
+        },
+        {
+            "x": 1353963991,
+            "y": 0
+        },
+        {
+            "x": 1353963992,
+            "y": 0
+        },
+        {
+            "x": 1353963993,
+            "y": 0
+        },
+        {
+            "x": 1353963994,
+            "y": 0
+        },
+        {
+            "x": 1353963995,
+            "y": 0
+        },
+        {
+            "x": 1353963996,
+            "y": 0
+        },
+        {
+            "x": 1353963997,
+            "y": 0
+        },
+        {
+            "x": 1353963998,
+            "y": 0
+        },
+        {
+            "x": 1353963999,
+            "y": 0
+        },
+        {
+            "x": 1353964000,
+            "y": 0
+        },
+        {
+            "x": 1353964001,
+            "y": 0
+        },
+        {
+            "x": 1353964002,
+            "y": 0
+        },
+        {
+            "x": 1353964003,
+            "y": 0
+        },
+        {
+            "x": 1353964004,
+            "y": 0
+        },
+        {
+            "x": 1353964005,
+            "y": 0
+        },
+        {
+            "x": 1353964006,
+            "y": 0
+        },
+        {
+            "x": 1353964007,
+            "y": 0
+        },
+        {
+            "x": 1353964008,
+            "y": 0
+        },
+        {
+            "x": 1353964009,
+            "y": 0
+        },
+        {
+            "x": 1353964010,
+            "y": 0
+        },
+        {
+            "x": 1353964011,
+            "y": 0
+        },
+        {
+            "x": 1353964012,
+            "y": 0
+        },
+        {
+            "x": 1353964013,
+            "y": 0
+        },
+        {
+            "x": 1353964014,
+            "y": 0
+        },
+        {
+            "x": 1353964015,
+            "y": 0
+        },
+        {
+            "x": 1353964016,
+            "y": 0
+        },
+        {
+            "x": 1353964017,
+            "y": 0
+        },
+        {
+            "x": 1353964018,
+            "y": 0
+        },
+        {
+            "x": 1353964019,
+            "y": 0
+        },
+        {
+            "x": 1353964020,
+            "y": 0
+        },
+        {
+            "x": 1353964021,
+            "y": 0
+        },
+        {
+            "x": 1353964022,
+            "y": 0
+        },
+        {
+            "x": 1353964023,
+            "y": 0
+        },
+        {
+            "x": 1353964024,
+            "y": 0
+        },
+        {
+            "x": 1353964025,
+            "y": 0
+        },
+        {
+            "x": 1353964026,
+            "y": 0
+        },
+        {
+            "x": 1353964027,
+            "y": 0
+        },
+        {
+            "x": 1353964028,
+            "y": 0
+        },
+        {
+            "x": 1353964029,
+            "y": 0
+        },
+        {
+            "x": 1353964030,
+            "y": 0
+        },
+        {
+            "x": 1353964031,
+            "y": 0
+        },
+        {
+            "x": 1353964032,
+            "y": 0
+        },
+        {
+            "x": 1353964033,
+            "y": 0
+        },
+        {
+            "x": 1353964034,
+            "y": 0
+        },
+        {
+            "x": 1353964035,
+            "y": 0
+        },
+        {
+            "x": 1353964036,
+            "y": 0
+        },
+        {
+            "x": 1353964037,
+            "y": 0
+        },
+        {
+            "x": 1353964038,
+            "y": 0
+        },
+        {
+            "x": 1353964039,
+            "y": 0
+        },
+        {
+            "x": 1353964040,
+            "y": 0
+        },
+        {
+            "x": 1353964041,
+            "y": 0
+        },
+        {
+            "x": 1353964042,
+            "y": 0
+        },
+        {
+            "x": 1353964043,
+            "y": 0
+        },
+        {
+            "x": 1353964044,
+            "y": 0
+        },
+        {
+            "x": 1353964045,
+            "y": 0
+        },
+        {
+            "x": 1353964046,
+            "y": 0
+        },
+        {
+            "x": 1353964047,
+            "y": 0
+        },
+        {
+            "x": 1353964048,
+            "y": 0
+        },
+        {
+            "x": 1353964049,
+            "y": 0
+        },
+        {
+            "x": 1353964050,
+            "y": 0
+        },
+        {
+            "x": 1353964051,
+            "y": 0
+        },
+        {
+            "x": 1353964052,
+            "y": 0
+        },
+        {
+            "x": 1353964053,
+            "y": 0
+        },
+        {
+            "x": 1353964054,
+            "y": 0
+        },
+        {
+            "x": 1353964055,
+            "y": 0
+        },
+        {
+            "x": 1353964056,
+            "y": 0
+        },
+        {
+            "x": 1353964057,
+            "y": 0
+        },
+        {
+            "x": 1353964058,
+            "y": 0
+        },
+        {
+            "x": 1353964059,
+            "y": 0
+        },
+        {
+            "x": 1353964060,
+            "y": 0
+        },
+        {
+            "x": 1353964061,
+            "y": 0
+        },
+        {
+            "x": 1353964062,
+            "y": 0
+        },
+        {
+            "x": 1353964063,
+            "y": 0
+        },
+        {
+            "x": 1353964064,
+            "y": 0
+        },
+        {
+            "x": 1353964065,
+            "y": 0
+        },
+        {
+            "x": 1353964066,
+            "y": 0
+        },
+        {
+            "x": 1353964067,
+            "y": 0
+        },
+        {
+            "x": 1353964068,
+            "y": 0
+        },
+        {
+            "x": 1353964069,
+            "y": 0
+        },
+        {
+            "x": 1353964070,
+            "y": 0
+        },
+        {
+            "x": 1353964071,
+            "y": 1
+        },
+        {
+            "x": 1353964072,
+            "y": 1
+        },
+        {
+            "x": 1353964073,
+            "y": 1
+        },
+        {
+            "x": 1353964074,
+            "y": 2
+        },
+        {
+            "x": 1353964075,
+            "y": 2
+        },
+        {
+            "x": 1353964076,
+            "y": 2
+        },
+        {
+            "x": 1353964077,
+            "y": 2
+        },
+        {
+            "x": 1353964078,
+            "y": 2
+        },
+        {
+            "x": 1353964079,
+            "y": 2
+        },
+        {
+            "x": 1353964080,
+            "y": 2
+        },
+        {
+            "x": 1353964081,
+            "y": 2
+        },
+        {
+            "x": 1353964082,
+            "y": 1
+        },
+        {
+            "x": 1353964083,
+            "y": 2
+        },
+        {
+            "x": 1353964084,
+            "y": 2
+        },
+        {
+            "x": 1353964085,
+            "y": 2
+        },
+        {
+            "x": 1353964086,
+            "y": 2
+        },
+        {
+            "x": 1353964087,
+            "y": 2
+        },
+        {
+            "x": 1353964088,
+            "y": 2
+        },
+        {
+            "x": 1353964089,
+            "y": 2
+        },
+        {
+            "x": 1353964090,
+            "y": 1
+        },
+        {
+            "x": 1353964091,
+            "y": 1
+        },
+        {
+            "x": 1353964092,
+            "y": 2
+        },
+        {
+            "x": 1353964093,
+            "y": 1
+        },
+        {
+            "x": 1353964094,
+            "y": 1
+        },
+        {
+            "x": 1353964095,
+            "y": 2
+        },
+        {
+            "x": 1353964096,
+            "y": 2
+        },
+        {
+            "x": 1353964097,
+            "y": 2
+        },
+        {
+            "x": 1353964098,
+            "y": 2
+        },
+        {
+            "x": 1353964099,
+            "y": 2
+        },
+        {
+            "x": 1353964100,
+            "y": 2
+        },
+        {
+            "x": 1353964101,
+            "y": 2
+        },
+        {
+            "x": 1353964102,
+            "y": 2
+        },
+        {
+            "x": 1353964103,
+            "y": 1
+        },
+        {
+            "x": 1353964104,
+            "y": 2
+        },
+        {
+            "x": 1353964105,
+            "y": 2
+        },
+        {
+            "x": 1353964106,
+            "y": 1
+        },
+        {
+            "x": 1353964107,
+            "y": 2
+        },
+        {
+            "x": 1353964108,
+            "y": 2
+        },
+        {
+            "x": 1353964109,
+            "y": 2
+        },
+        {
+            "x": 1353964110,
+            "y": 2
+        },
+        {
+            "x": 1353964111,
+            "y": 2
+        },
+        {
+            "x": 1353964112,
+            "y": 2
+        },
+        {
+            "x": 1353964113,
+            "y": 2
+        },
+        {
+            "x": 1353964114,
+            "y": 1
+        },
+        {
+            "x": 1353964115,
+            "y": 1
+        },
+        {
+            "x": 1353964116,
+            "y": 2
+        },
+        {
+            "x": 1353964117,
+            "y": 1
+        },
+        {
+            "x": 1353964118,
+            "y": 1
+        },
+        {
+            "x": 1353964119,
+            "y": 2
+        },
+        {
+            "x": 1353964120,
+            "y": 2
+        },
+        {
+            "x": 1353964121,
+            "y": 2
+        },
+        {
+            "x": 1353964122,
+            "y": 2
+        },
+        {
+            "x": 1353964123,
+            "y": 2
+        },
+        {
+            "x": 1353964124,
+            "y": 2
+        },
+        {
+            "x": 1353964125,
+            "y": 2
+        },
+        {
+            "x": 1353964126,
+            "y": 2
+        },
+        {
+            "x": 1353964127,
+            "y": 1
+        },
+        {
+            "x": 1353964128,
+            "y": 2
+        },
+        {
+            "x": 1353964129,
+            "y": 2
+        },
+        {
+            "x": 1353964130,
+            "y": 1
+        },
+        {
+            "x": 1353964131,
+            "y": 2
+        },
+        {
+            "x": 1353964132,
+            "y": 2
+        },
+        {
+            "x": 1353964133,
+            "y": 2
+        },
+        {
+            "x": 1353964134,
+            "y": 2
+        },
+        {
+            "x": 1353964135,
+            "y": 2
+        },
+        {
+            "x": 1353964136,
+            "y": 2
+        },
+        {
+            "x": 1353964137,
+            "y": 2
+        },
+        {
+            "x": 1353964138,
+            "y": 1
+        },
+        {
+            "x": 1353964139,
+            "y": 1
+        },
+        {
+            "x": 1353964140,
+            "y": 2
+        },
+        {
+            "x": 1353964141,
+            "y": 1
+        },
+        {
+            "x": 1353964142,
+            "y": 1
+        },
+        {
+            "x": 1353964143,
+            "y": 2
+        },
+        {
+            "x": 1353964144,
+            "y": 2
+        },
+        {
+            "x": 1353964145,
+            "y": 2
+        },
+        {
+            "x": 1353964146,
+            "y": 2
+        },
+        {
+            "x": 1353964147,
+            "y": 2
+        },
+        {
+            "x": 1353964148,
+            "y": 2
+        },
+        {
+            "x": 1353964149,
+            "y": 2
+        },
+        {
+            "x": 1353964150,
+            "y": 2
+        },
+        {
+            "x": 1353964151,
+            "y": 1
+        },
+        {
+            "x": 1353964152,
+            "y": 1
+        },
+        {
+            "x": 1353964153,
+            "y": 1
+        },
+        {
+            "x": 1353964154,
+            "y": 1
+        },
+        {
+            "x": 1353964155,
+            "y": 2
+        },
+        {
+            "x": 1353964156,
+            "y": 2
+        },
+        {
+            "x": 1353964157,
+            "y": 2
+        },
+        {
+            "x": 1353964158,
+            "y": 2
+        },
+        {
+            "x": 1353964159,
+            "y": 2
+        },
+        {
+            "x": 1353964160,
+            "y": 2
+        },
+        {
+            "x": 1353964161,
+            "y": 2
+        },
+        {
+            "x": 1353964162,
+            "y": 1
+        },
+        {
+            "x": 1353964163,
+            "y": 0
+        },
+        {
+            "x": 1353964164,
+            "y": 1
+        },
+        {
+            "x": 1353964165,
+            "y": 1
+        },
+        {
+            "x": 1353964166,
+            "y": 1
+        },
+        {
+            "x": 1353964167,
+            "y": 2
+        },
+        {
+            "x": 1353964168,
+            "y": 2
+        },
+        {
+            "x": 1353964169,
+            "y": 2
+        },
+        {
+            "x": 1353964170,
+            "y": 2
+        },
+        {
+            "x": 1353964171,
+            "y": 2
+        },
+        {
+            "x": 1353964172,
+            "y": 2
+        },
+        {
+            "x": 1353964173,
+            "y": 2
+        },
+        {
+            "x": 1353964174,
+            "y": 1
+        },
+        {
+            "x": 1353964175,
+            "y": 1
+        },
+        {
+            "x": 1353964176,
+            "y": 1
+        },
+        {
+            "x": 1353964177,
+            "y": 1
+        },
+        {
+            "x": 1353964178,
+            "y": 1
+        },
+        {
+            "x": 1353964179,
+            "y": 2
+        },
+        {
+            "x": 1353964180,
+            "y": 2
+        },
+        {
+            "x": 1353964181,
+            "y": 2
+        },
+        {
+            "x": 1353964182,
+            "y": 2
+        },
+        {
+            "x": 1353964183,
+            "y": 2
+        },
+        {
+            "x": 1353964184,
+            "y": 2
+        },
+        {
+            "x": 1353964185,
+            "y": 2
+        },
+        {
+            "x": 1353964186,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196028,
-            "y": 1
+            "x": 1353964187,
+            "y": 0
+        },
+        {
+            "x": 1353964188,
+            "y": 0
+        },
+        {
+            "x": 1353964189,
+            "y": 0
+        },
+        {
+            "x": 1353964190,
+            "y": 0
+        },
+        {
+            "x": 1353964191,
+            "y": 0
+        },
+        {
+            "x": 1353964192,
+            "y": 0
+        },
+        {
+            "x": 1353964193,
+            "y": 0
+        },
+        {
+            "x": 1353964194,
+            "y": 0
+        },
+        {
+            "x": 1353964195,
+            "y": 0
+        },
+        {
+            "x": 1353964196,
+            "y": 0
+        },
+        {
+            "x": 1353964197,
+            "y": 0
+        }
+    ],
+    "reduce": [
+        {
+            "x": 1353963926,
+            "y": 0
+        },
+        {
+            "x": 1353963927,
+            "y": 0
+        },
+        {
+            "x": 1353963928,
+            "y": 0
+        },
+        {
+            "x": 1353963929,
+            "y": 0
+        },
+        {
+            "x": 1353963930,
+            "y": 0
+        },
+        {
+            "x": 1353963931,
+            "y": 0
+        },
+        {
+            "x": 1353963932,
+            "y": 0
+        },
+        {
+            "x": 1353963933,
+            "y": 0
+        },
+        {
+            "x": 1353963934,
+            "y": 0
+        },
+        {
+            "x": 1353963935,
+            "y": 0
+        },
+        {
+            "x": 1353963936,
+            "y": 0
+        },
+        {
+            "x": 1353963937,
+            "y": 0
+        },
+        {
+            "x": 1353963938,
+            "y": 0
+        },
+        {
+            "x": 1353963939,
+            "y": 0
+        },
+        {
+            "x": 1353963940,
+            "y": 0
+        },
+        {
+            "x": 1353963941,
+            "y": 0
+        },
+        {
+            "x": 1353963942,
+            "y": 0
+        },
+        {
+            "x": 1353963943,
+            "y": 0
+        },
+        {
+            "x": 1353963944,
+            "y": 0
+        },
+        {
+            "x": 1353963945,
+            "y": 0
+        },
+        {
+            "x": 1353963946,
+            "y": 0
+        },
+        {
+            "x": 1353963947,
+            "y": 0
+        },
+        {
+            "x": 1353963948,
+            "y": 0
+        },
+        {
+            "x": 1353963949,
+            "y": 0
+        },
+        {
+            "x": 1353963950,
+            "y": 0
+        },
+        {
+            "x": 1353963951,
+            "y": 0
+        },
+        {
+            "x": 1353963952,
+            "y": 0
+        },
+        {
+            "x": 1353963953,
+            "y": 0
+        },
+        {
+            "x": 1353963954,
+            "y": 0
+        },
+        {
+            "x": 1353963955,
+            "y": 0
+        },
+        {
+            "x": 1353963956,
+            "y": 0
+        },
+        {
+            "x": 1353963957,
+            "y": 0
+        },
+        {
+            "x": 1353963958,
+            "y": 0
+        },
+        {
+            "x": 1353963959,
+            "y": 0
+        },
+        {
+            "x": 1353963960,
+            "y": 0
+        },
+        {
+            "x": 1353963961,
+            "y": 0
+        },
+        {
+            "x": 1353963962,
+            "y": 0
+        },
+        {
+            "x": 1353963963,
+            "y": 0
+        },
+        {
+            "x": 1353963964,
+            "y": 0
+        },
+        {
+            "x": 1353963965,
+            "y": 0
+        },
+        {
+            "x": 1353963966,
+            "y": 0
+        },
+        {
+            "x": 1353963967,
+            "y": 0
+        },
+        {
+            "x": 1353963968,
+            "y": 0
+        },
+        {
+            "x": 1353963969,
+            "y": 0
+        },
+        {
+            "x": 1353963970,
+            "y": 0
+        },
+        {
+            "x": 1353963971,
+            "y": 0
+        },
+        {
+            "x": 1353963972,
+            "y": 0
+        },
+        {
+            "x": 1353963973,
+            "y": 0
+        },
+        {
+            "x": 1353963974,
+            "y": 0
+        },
+        {
+            "x": 1353963975,
+            "y": 0
+        },
+        {
+            "x": 1353963976,
+            "y": 0
+        },
+        {
+            "x": 1353963977,
+            "y": 0
+        },
+        {
+            "x": 1353963978,
+            "y": 0
+        },
+        {
+            "x": 1353963979,
+            "y": 0
+        },
+        {
+            "x": 1353963980,
+            "y": 0
+        },
+        {
+            "x": 1353963981,
+            "y": 0
+        },
+        {
+            "x": 1353963982,
+            "y": 0
+        },
+        {
+            "x": 1353963983,
+            "y": 0
+        },
+        {
+            "x": 1353963984,
+            "y": 0
+        },
+        {
+            "x": 1353963985,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196032,
-            "y": 1
+            "x": 1353963986,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196036,
+            "x": 1353963987,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196040,
+            "x": 1353963988,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196044,
+            "x": 1353963989,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196048,
+            "x": 1353963990,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196052,
+            "x": 1353963991,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196056,
+            "x": 1353963992,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196060,
+            "x": 1353963993,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196064,
+            "x": 1353963994,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196068,
+            "x": 1353963995,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196072,
+            "x": 1353963996,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196076,
+            "x": 1353963997,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196080,
+            "x": 1353963998,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196084,
+            "x": 1353963999,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196088,
+            "x": 1353964000,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196092,
+            "x": 1353964001,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196096,
+            "x": 1353964002,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196100,
+            "x": 1353964003,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196104,
+            "x": 1353964004,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196108,
+            "x": 1353964005,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196112,
+            "x": 1353964006,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196116,
+            "x": 1353964007,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196120,
+            "x": 1353964008,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196124,
+            "x": 1353964009,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196128,
+            "x": 1353964010,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196132,
+            "x": 1353964011,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196136,
+            "x": 1353964012,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196140,
+            "x": 1353964013,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196144,
+            "x": 1353964014,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196148,
+            "x": 1353964015,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196152,
+            "x": 1353964016,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196156,
+            "x": 1353964017,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196160,
+            "x": 1353964018,
             "y": 0
             "y": 0
-        }
-    ],
-    "shuffle": [
+        },
         {
         {
-            "x": 1349195920,
+            "x": 1353964019,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195924,
+            "x": 1353964020,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195928,
+            "x": 1353964021,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195932,
+            "x": 1353964022,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195936,
+            "x": 1353964023,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195940,
+            "x": 1353964024,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195944,
+            "x": 1353964025,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195948,
+            "x": 1353964026,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195952,
+            "x": 1353964027,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195956,
+            "x": 1353964028,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195960,
+            "x": 1353964029,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195964,
+            "x": 1353964030,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195968,
+            "x": 1353964031,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195972,
+            "x": 1353964032,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195976,
+            "x": 1353964033,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195980,
+            "x": 1353964034,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195984,
+            "x": 1353964035,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195988,
+            "x": 1353964036,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195992,
+            "x": 1353964037,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195996,
+            "x": 1353964038,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196000,
+            "x": 1353964039,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196004,
+            "x": 1353964040,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196008,
+            "x": 1353964041,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196012,
+            "x": 1353964042,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196016,
+            "x": 1353964043,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196020,
+            "x": 1353964044,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196024,
+            "x": 1353964045,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196028,
+            "x": 1353964046,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196032,
-            "y": 1
+            "x": 1353964047,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196036,
-            "y": 2
+            "x": 1353964048,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196040,
-            "y": 3
+            "x": 1353964049,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196044,
-            "y": 3
+            "x": 1353964050,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196048,
-            "y": 2
+            "x": 1353964051,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196052,
-            "y": 2
+            "x": 1353964052,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196056,
-            "y": 2
+            "x": 1353964053,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196060,
-            "y": 2
+            "x": 1353964054,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196064,
-            "y": 3
+            "x": 1353964055,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196068,
-            "y": 3
+            "x": 1353964056,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196072,
-            "y": 2
+            "x": 1353964057,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196076,
-            "y": 2
+            "x": 1353964058,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196080,
-            "y": 2
+            "x": 1353964059,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196084,
-            "y": 2
+            "x": 1353964060,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196088,
-            "y": 3
+            "x": 1353964061,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196092,
-            "y": 2
+            "x": 1353964062,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196096,
-            "y": 2
+            "x": 1353964063,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196100,
-            "y": 2
+            "x": 1353964064,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196104,
-            "y": 3
+            "x": 1353964065,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196108,
-            "y": 2
+            "x": 1353964066,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196112,
-            "y": 3
+            "x": 1353964067,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196116,
-            "y": 2
+            "x": 1353964068,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196120,
-            "y": 3
+            "x": 1353964069,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196124,
-            "y": 3
+            "x": 1353964070,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196128,
-            "y": 2
+            "x": 1353964071,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196132,
-            "y": 3
+            "x": 1353964072,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196136,
-            "y": 2
+            "x": 1353964073,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196140,
-            "y": 2
+            "x": 1353964074,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196144,
-            "y": 1
+            "x": 1353964075,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196148,
-            "y": 1
+            "x": 1353964076,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196152,
+            "x": 1353964077,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196156,
+            "x": 1353964078,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196160,
+            "x": 1353964079,
             "y": 0
             "y": 0
-        }
-    ],
-    "reduce": [
+        },
+        {
+            "x": 1353964080,
+            "y": 1
+        },
+        {
+            "x": 1353964081,
+            "y": 1
+        },
+        {
+            "x": 1353964082,
+            "y": 1
+        },
         {
         {
-            "x": 1349195920,
+            "x": 1353964083,
+            "y": 1
+        },
+        {
+            "x": 1353964084,
+            "y": 1
+        },
+        {
+            "x": 1353964085,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195924,
+            "x": 1353964086,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195928,
+            "x": 1353964087,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195932,
+            "x": 1353964088,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195936,
+            "x": 1353964089,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195940,
+            "x": 1353964090,
+            "y": 1
+        },
+        {
+            "x": 1353964091,
+            "y": 1
+        },
+        {
+            "x": 1353964092,
+            "y": 1
+        },
+        {
+            "x": 1353964093,
+            "y": 2
+        },
+        {
+            "x": 1353964094,
+            "y": 2
+        },
+        {
+            "x": 1353964095,
+            "y": 2
+        },
+        {
+            "x": 1353964096,
+            "y": 1
+        },
+        {
+            "x": 1353964097,
+            "y": 1
+        },
+        {
+            "x": 1353964098,
+            "y": 1
+        },
+        {
+            "x": 1353964099,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195944,
+            "x": 1353964100,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195948,
+            "x": 1353964101,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195952,
+            "x": 1353964102,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195956,
+            "x": 1353964103,
+            "y": 1
+        },
+        {
+            "x": 1353964104,
+            "y": 1
+        },
+        {
+            "x": 1353964105,
+            "y": 1
+        },
+        {
+            "x": 1353964106,
+            "y": 1
+        },
+        {
+            "x": 1353964107,
+            "y": 1
+        },
+        {
+            "x": 1353964108,
+            "y": 1
+        },
+        {
+            "x": 1353964109,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195960,
+            "x": 1353964110,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195964,
+            "x": 1353964111,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195968,
+            "x": 1353964112,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195972,
+            "x": 1353964113,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195976,
+            "x": 1353964114,
+            "y": 1
+        },
+        {
+            "x": 1353964115,
+            "y": 1
+        },
+        {
+            "x": 1353964116,
+            "y": 1
+        },
+        {
+            "x": 1353964117,
+            "y": 2
+        },
+        {
+            "x": 1353964118,
+            "y": 2
+        },
+        {
+            "x": 1353964119,
+            "y": 2
+        },
+        {
+            "x": 1353964120,
+            "y": 1
+        },
+        {
+            "x": 1353964121,
+            "y": 1
+        },
+        {
+            "x": 1353964122,
+            "y": 1
+        },
+        {
+            "x": 1353964123,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195980,
+            "x": 1353964124,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195984,
+            "x": 1353964125,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195988,
+            "x": 1353964126,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195992,
+            "x": 1353964127,
+            "y": 1
+        },
+        {
+            "x": 1353964128,
+            "y": 1
+        },
+        {
+            "x": 1353964129,
+            "y": 1
+        },
+        {
+            "x": 1353964130,
+            "y": 1
+        },
+        {
+            "x": 1353964131,
+            "y": 1
+        },
+        {
+            "x": 1353964132,
+            "y": 1
+        },
+        {
+            "x": 1353964133,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349195996,
+            "x": 1353964134,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196000,
+            "x": 1353964135,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196004,
+            "x": 1353964136,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196008,
+            "x": 1353964137,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196012,
+            "x": 1353964138,
+            "y": 1
+        },
+        {
+            "x": 1353964139,
+            "y": 1
+        },
+        {
+            "x": 1353964140,
+            "y": 1
+        },
+        {
+            "x": 1353964141,
+            "y": 2
+        },
+        {
+            "x": 1353964142,
+            "y": 2
+        },
+        {
+            "x": 1353964143,
+            "y": 1
+        },
+        {
+            "x": 1353964144,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196016,
+            "x": 1353964145,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196020,
+            "x": 1353964146,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196024,
+            "x": 1353964147,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196028,
+            "x": 1353964148,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196032,
+            "x": 1353964149,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196036,
+            "x": 1353964150,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196040,
+            "x": 1353964151,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196044,
+            "x": 1353964152,
+            "y": 2
+        },
+        {
+            "x": 1353964153,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196048,
+            "x": 1353964154,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196052,
-            "y": 2
+            "x": 1353964155,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196056,
-            "y": 2
+            "x": 1353964156,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196060,
-            "y": 1
+            "x": 1353964157,
+            "y": 0
+        },
+        {
+            "x": 1353964158,
+            "y": 0
+        },
+        {
+            "x": 1353964159,
+            "y": 0
+        },
+        {
+            "x": 1353964160,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196064,
+            "x": 1353964161,
+            "y": 0
+        },
+        {
+            "x": 1353964162,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196068,
+            "x": 1353964163,
+            "y": 2
+        },
+        {
+            "x": 1353964164,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196072,
+            "x": 1353964165,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196076,
+            "x": 1353964166,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196080,
-            "y": 2
+            "x": 1353964167,
+            "y": 1
+        },
+        {
+            "x": 1353964168,
+            "y": 0
+        },
+        {
+            "x": 1353964169,
+            "y": 0
+        },
+        {
+            "x": 1353964170,
+            "y": 0
+        },
+        {
+            "x": 1353964171,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196084,
+            "x": 1353964172,
+            "y": 0
+        },
+        {
+            "x": 1353964173,
+            "y": 0
+        },
+        {
+            "x": 1353964174,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196088,
+            "x": 1353964175,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196092,
+            "x": 1353964176,
+            "y": 2
+        },
+        {
+            "x": 1353964177,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196096,
+            "x": 1353964178,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196100,
+            "x": 1353964179,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196104,
-            "y": 2
+            "x": 1353964180,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196108,
-            "y": 1
+            "x": 1353964181,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196112,
-            "y": 2
+            "x": 1353964182,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196116,
-            "y": 1
+            "x": 1353964183,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196120,
-            "y": 1
+            "x": 1353964184,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196124,
-            "y": 2
+            "x": 1353964185,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196128,
+            "x": 1353964186,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196132,
+            "x": 1353964187,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196136,
+            "x": 1353964188,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196140,
+            "x": 1353964189,
             "y": 2
             "y": 2
         },
         },
         {
         {
-            "x": 1349196144,
+            "x": 1353964190,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196148,
+            "x": 1353964191,
             "y": 1
             "y": 1
         },
         },
         {
         {
-            "x": 1349196152,
-            "y": 1
+            "x": 1353964192,
+            "y": 0
+        },
+        {
+            "x": 1353964193,
+            "y": 0
+        },
+        {
+            "x": 1353964194,
+            "y": 0
+        },
+        {
+            "x": 1353964195,
+            "y": 0
         },
         },
         {
         {
-            "x": 1349196156,
+            "x": 1353964196,
             "y": 0
             "y": 0
         },
         },
         {
         {
-            "x": 1349196160,
+            "x": 1353964197,
             "y": 0
             "y": 0
         }
         }
     ]
     ]

+ 11 - 0
ambari-web/app/assets/data/users/user_admin.json

@@ -0,0 +1,11 @@
+{
+  "href" : "http://dev.hortonworks.com:8080/api/v1/users/admin",
+  "Users" : {
+    "user_name" : "admin",
+    "ldap_user" : false,
+    "roles" : [
+      "admin",
+      "user"
+    ]
+  }
+}

+ 10 - 0
ambari-web/app/assets/data/users/user_user.json

@@ -0,0 +1,10 @@
+{
+  "href" : "http://dev.hortonworks.com:8080/api/v1/users/user",
+  "Users" : {
+    "user_name" : "user",
+    "ldap_user" : false,
+    "roles" : [
+      "user"
+    ]
+  }
+}

+ 37 - 15
ambari-web/app/assets/data/users/users.json

@@ -1,25 +1,47 @@
 {
 {
-  "href": "http://ambari:8080/api/clusters/mycluster/users",
-  "items": [
+  "href" : "http://dev.hortonworks.com:8080/api/v1/users/?fields=*",
+  "items" : [
     {
     {
-      "href" : "http://ambari:8080/api/users/admin",
-      "Users" :
-      { "user_name" : "admin", "roles" : "admin,user",  "type" : "local" }
+      "href" : "http://dev.hortonworks.com:8080/api/v1/users/user",
+      "Users" : {
+        "user_name" : "user",
+        "ldap_user" : false,
+        "roles" : [
+          "user"
+        ]
+      }
     },
     },
     {
     {
-      "href" : "http://ambari:8080/api/users/user",
-      "Users" :
-      { "user_name" : "user", "roles" : "user", "type" : "local" }
+      "href" : "http://dev.hortonworks.com:8080/api/v1/users/admin",
+      "Users" : {
+        "user_name" : "admin",
+        "ldap_user" : false,
+        "roles" : [
+          "admin",
+          "user"
+        ]
+      }
     },
     },
     {
     {
-      "href" : "http://ambari:8080/api/users/john",
-      "Users" :
-      { "user_name" : "john", "roles" : "admin,user", "type" : "LDAP" }
+      "href" : "http://dev.hortonworks.com:8080/api/v1/users/jone",
+      "Users" : {
+        "user_name" : "jone",
+        "ldap_user" : true,
+        "roles" : [
+          "user"
+        ]
+      }
     },
     },
     {
     {
-      "href" : "http://ambari:8080/api/users/mike",
-      "Users" :
-      { "user_name" : "mike", "roles" : "user", "type" : "LDAP" }
+      "href" : "http://dev.hortonworks.com:8080/api/v1/users/alex",
+      "Users" : {
+        "user_name" : "alex",
+        "ldap_user" : false,
+        "roles" : [
+          "admin",
+          "user"
+        ]
+      }
     }
     }
   ]
   ]
-}
+}

+ 1 - 1
ambari-web/app/controllers/login_controller.js

@@ -32,7 +32,7 @@ App.LoginController = Em.Object.extend({
     this.set('errorMessage', '');
     this.set('errorMessage', '');
 
 
     var self = this;
     var self = this;
-    var loginFunc = (App.testMode) ? App.get('router').mockLogin : App.get('router').login;
+    var loginFunc =  App.get('router').login;
 
 
     var user = loginFunc.call(App.get('router'), function (isAuthenticated) {
     var user = loginFunc.call(App.get('router'), function (isAuthenticated) {
       if (!isAuthenticated) {
       if (!isAuthenticated) {

+ 7 - 0
ambari-web/app/controllers/main.js

@@ -21,6 +21,13 @@ require('models/background_operation');
 
 
 App.MainController = Em.Controller.extend({
 App.MainController = Em.Controller.extend({
   name: 'mainController',
   name: 'mainController',
+  clusterName: function () {
+    var name = App.db.getClusterName();
+    if (name) {
+      return name.capitalize();
+    }
+    return 'My Cluster';
+  }.property(),
   isClusterDataLoaded: function(){
   isClusterDataLoaded: function(){
       return App.router.get('clusterController.isLoaded');
       return App.router.get('clusterController.isLoaded');
   }.property('App.router.clusterController.isLoaded'),
   }.property('App.router.clusterController.isLoaded'),

+ 43 - 2
ambari-web/app/controllers/wizard/step3_controller.js

@@ -277,9 +277,13 @@ App.WizardStep3Controller = Em.Controller.extend({
               _host.set('bootStatus', 'REGISTERED');
               _host.set('bootStatus', 'REGISTERED');
               _host.set('bootLog', (_host.get('bootLog') != null ? _host.get('bootLog') : '') + '\nRegistration with the server succeeded.');
               _host.set('bootLog', (_host.get('bootLog') != null ? _host.get('bootLog') : '') + '\nRegistration with the server succeeded.');
             }
             }
+          } else if (_host.get('bootStatus') == 'FAILED') {
+            // ignore FAILED hosts
           } else {
           } else {
+            // there are some hosts that are not REGISTERED or FAILED
+            // we need to keep polling
             allRegistered = false;
             allRegistered = false;
-            if (_host.get('bootStatus') != 'FAILED' && _host.get('bootStatus') != 'REGISTERING') {
+            if (_host.get('bootStatus') != 'REGISTERING') {
               _host.set('bootStatus', 'REGISTERING');
               _host.set('bootStatus', 'REGISTERING');
               currentBootLog = _host.get('bootLog') != null ? _host.get('bootLog') : '';
               currentBootLog = _host.get('bootLog') != null ? _host.get('bootLog') : '';
               _host.set('bootLog', (_host.get('bootLog') != null ? _host.get('bootLog') : '') + '\nRegistering with the server...');
               _host.set('bootLog', (_host.get('bootLog') != null ? _host.get('bootLog') : '') + '\nRegistering with the server...');
@@ -391,7 +395,44 @@ App.WizardStep3Controller = Em.Controller.extend({
 
 
       bodyClass: Ember.View.extend({
       bodyClass: Ember.View.extend({
         templateName: require('templates/wizard/step3_host_log_popup'),
         templateName: require('templates/wizard/step3_host_log_popup'),
-        host: host
+        host: host,
+        didInsertElement: function () {
+          var self = this;
+          var button = $(this.get('element')).find('#textTrigger');
+          button.click(function () {
+            if(self.get('isTextArea')){
+              $(this).text('click to highlight');
+            } else {
+              $(this).text('press CTRL+C');
+            }
+            self.set('isTextArea', !self.get('isTextArea'));
+          });
+          $(this.get('element')).find('.content-area').mouseenter(
+            function () {
+              var element = $(this);
+              element.css('border', '1px solid #dcdcdc');
+              button.css('visibility', 'visible');
+            }).mouseleave(
+            function () {
+              var element = $(this);
+              element.css('border', 'none');
+              button.css('visibility', 'hidden');
+            })
+        },
+        isTextArea: false,
+        textArea: Em.TextArea.extend({
+          didInsertElement: function(){
+            var element = $(this.get('element'));
+            element.width($(this.get('parentView').get('element')).width() - 10);
+            element.height($(this.get('parentView').get('element')).height());
+            element.select();
+            element.css('resize', 'none');
+          },
+          disabled: true,
+          value: function(){
+            return this.get('content');
+          }.property('content')
+        })
       })
       })
     });
     });
   },
   },

+ 1 - 1
ambari-web/app/controllers/wizard/step8_controller.js

@@ -774,7 +774,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     var allHosts = this.get('content.hostsInfo');
     var allHosts = this.get('content.hostsInfo');
     var data = [];
     var data = [];
     for (var hostName in allHosts) {
     for (var hostName in allHosts) {
-      if (!allHosts[hostName].isInstalled) {
+      if (!allHosts[hostName].isInstalled && allHosts[hostName].bootStatus == 'REGISTERED') {
         data.pushObject({"Hosts": { "host_name": hostName}});
         data.pushObject({"Hosts": { "host_name": hostName}});
       }
       }
     }
     }

+ 0 - 1
ambari-web/app/controllers/wizard/step9_controller.js

@@ -520,7 +520,6 @@ App.WizardStep9Controller = Em.Controller.extend({
       } else {
       } else {
         url = 'data/wizard/deploy/poll_' + this.numPolls + '.json';
         url = 'data/wizard/deploy/poll_' + this.numPolls + '.json';
       }
       }
-      debugger;
     }
     }
 
 
     $.ajax({
     $.ajax({

+ 4 - 4
ambari-web/app/mappers/hosts_mapper.js

@@ -39,9 +39,9 @@ App.hostsMapper = App.QuickDataMapper.create({
     disk_info: 'Hosts.disk_info',
     disk_info: 'Hosts.disk_info',
     disk_usage: 'disk_usage',
     disk_usage: 'disk_usage',
     health_status: 'Hosts.host_status',
     health_status: 'Hosts.host_status',
-    load_one: 'Hosts.load.load_one',
-    load_five: 'Hosts.load.load_five',
-    load_fifteen: 'Hosts.load.load_fifteen',
+    load_one: 'metrics.load.load_one',
+    load_five: 'metrics.load.load_five',
+    load_fifteen: 'metrics.load.load_fifteen',
     cpu_usage: 'cpu_usage',
     cpu_usage: 'cpu_usage',
     memory_usage: 'memory_usage',
     memory_usage: 'memory_usage',
     $network_usage: 36,
     $network_usage: 36,
@@ -110,7 +110,7 @@ App.hostsMapper = App.QuickDataMapper.create({
 
 
         }
         }
       }, this);
       }, this);
-      // console.log(this.get('model'), result);
+       //console.log(this.get('model'), result);
 
 
     }
     }
   },
   },

+ 19 - 1
ambari-web/app/mappers/users_mapper.js

@@ -20,8 +20,26 @@
 App.usersMapper = App.QuickDataMapper.create({
 App.usersMapper = App.QuickDataMapper.create({
   model : App.User,
   model : App.User,
   config : {
   config : {
+    id : 'Users.user_name',
     user_name : 'Users.user_name',
     user_name : 'Users.user_name',
     roles : 'Users.roles',
     roles : 'Users.roles',
-    is_ldap: 'Users.ldap_user'
+    is_ldap: 'Users.ldap_user',
+    admin: 'Users.admin'
+  },
+  map: function (json) {
+    self = this;
+    json.items.forEach(function (item) {
+      var result= [] ;
+      if(App.User.find(item.Users.user_name).get("userName") != item.Users.user_name)
+      {
+        if(item.Users.roles.indexOf("admin") >= 0){
+          item.Users.admin = true;
+        }else{
+          item.Users.admin = false;
+        }
+        result.push(self.parseIt(item, self.config));
+        App.store.loadMany(self.get('model'), result);
+      }
+    });
   }
   }
 });
 });

+ 17 - 56
ambari-web/app/router.js

@@ -135,9 +135,18 @@ App.Router = Em.Router.extend({
     controller.set('loginName', loginName);
     controller.set('loginName', loginName);
     var hash = window.btoa(loginName + ":" + controller.get('password'));
     var hash = window.btoa(loginName + ":" + controller.get('password'));
     var router = this;
     var router = this;
+    var url = '';
+
+    if(loginName === "admin" && controller.get('password') === 'admin')
+    {
+      url = '/data/users/user_admin.json';
+    }else if(loginName === 'user' && controller.get('password') === 'user'){
+      url = '/data/users/user_user.json';
+    }
+
     $.ajax({
     $.ajax({
-      url : App.apiPrefix + '/users/' + loginName,
-      dataType : 'text',
+      url : (App.testMode) ? url  : App.apiPrefix + '/users/' + loginName ,
+      dataType : 'json',
       type: 'GET',
       type: 'GET',
       beforeSend: function (xhr) {
       beforeSend: function (xhr) {
         xhr.setRequestHeader("Authorization", "Basic " + hash);
         xhr.setRequestHeader("Authorization", "Basic " + hash);
@@ -156,18 +165,18 @@ App.Router = Em.Router.extend({
       success: function (data) {
       success: function (data) {
         console.log('login success');
         console.log('login success');
 
 
-        var resp = $.parseJSON(data);
+        var resp = data;
         var isAdmin = resp.Users.roles.indexOf('admin') >= 0;
         var isAdmin = resp.Users.roles.indexOf('admin') >= 0;
         if(isAdmin){
         if(isAdmin){
           router.setAuthenticated(true);
           router.setAuthenticated(true);
           router.setLoginName(loginName);
           router.setLoginName(loginName);
-
-          router.setUser(App.store.createRecord(App.User, { userName: loginName, admin: isAdmin }));
+          App.usersMapper.map({"items":[data]});
+          router.setUser(App.User.find(loginName));
           router.transitionTo(router.getSection());
           router.transitionTo(router.getSection());
           postLogin(true);
           postLogin(true);
         } else {
         } else {
           $.ajax({
           $.ajax({
-            url: App.apiPrefix + '/clusters',
+            url:  (App.testMode) ? '/data/clusters/info.json' : App.apiPrefix + '/clusters',
             dataType: 'text',
             dataType: 'text',
             type: 'GET',
             type: 'GET',
             success: function (data) {
             success: function (data) {
@@ -175,8 +184,8 @@ App.Router = Em.Router.extend({
               if (clusterResp.items.length) {
               if (clusterResp.items.length) {
                 router.setAuthenticated(true);
                 router.setAuthenticated(true);
                 router.setLoginName(loginName);
                 router.setLoginName(loginName);
-
-                router.setUser(App.store.createRecord(App.User, { userName: loginName, admin: isAdmin }));
+                App.usersMapper.map({"items":[resp]});
+                router.setUser(App.User.find(loginName));
                 router.transitionTo(router.getSection());
                 router.transitionTo(router.getSection());
                 postLogin(true);
                 postLogin(true);
               } else {
               } else {
@@ -234,54 +243,6 @@ App.Router = Em.Router.extend({
     });
     });
   },
   },
 
 
-  mockLogin: function (postLogin) {
-    var controller = this.get('loginController');
-    var loginName = controller.get('loginName');
-    var router = this;
-    if ((loginName === 'admin' && controller.get('password') === 'admin') ||
-      (loginName === 'user' && controller.get('password') === 'user')) {
-      if(loginName === 'admin'){
-        router.setAuthenticated(true);
-        router.setLoginName(loginName);
-
-        router.setUser(App.store.createRecord(App.User, { userName: loginName, admin: loginName === 'admin' }));
-        router.setAmbariStacks();
-
-        router.transitionTo(router.getSection());
-        postLogin(true);
-      } else {
-        $.ajax({
-          url: '/data/clusters/info.json',
-          dataType: 'text',
-          type: 'GET',
-          success: function (data) {
-            var clusterResp = $.parseJSON(data);
-            if (clusterResp.items.length) {
-              router.setAuthenticated(true);
-              router.setLoginName(loginName);
-
-              router.setUser(App.store.createRecord(App.User, { userName: loginName, admin: loginName === 'admin' }));
-              router.setAmbariStacks();
-
-              router.transitionTo(router.getSection());
-              postLogin(true);
-            } else {
-              controller.set('errorMessage', "Your administrator has not set up a Hadoop cluster yet.");
-            }
-          },
-          error: function (req) {
-            console.log("Server not responding: " + req.statusCode);
-          }
-        });
-      }
-    } else {
-      router.setAuthenticated(false);
-      postLogin(false);
-    }
-
-
-  },
-
   getSection: function () {
   getSection: function () {
     if (App.alwaysGoToInstaller) {
     if (App.alwaysGoToInstaller) {
       return 'installer';
       return 'installer';

+ 20 - 0
ambari-web/app/styles/application.less

@@ -131,6 +131,7 @@ footer {
   .brand {
   .brand {
     font-size: 17px;
     font-size: 17px;
     border-right: 1px solid rgba(0, 0, 0, 0.08);
     border-right: 1px solid rgba(0, 0, 0, 0.08);
+    color: #555555;
   }
   }
   .operations-count {
   .operations-count {
     background-color: #006DCC;
     background-color: #006DCC;
@@ -1881,6 +1882,18 @@ ul.inline li {
 #step10-content {
 #step10-content {
   max-height: 440px;
   max-height: 440px;
 }
 }
+.content-area {
+  position: relative;
+  #textTrigger {
+    cursor: pointer;
+    position: absolute;
+    right: 0;
+    top: 0;
+    visibility: hidden;
+    background-color: #dcdcdc;
+  }
+}
+
 
 
 //bootstrap
 //bootstrap
 //.dropdown-menu .active > a, .dropdown-menu .active > a:hover {
 //.dropdown-menu .active > a, .dropdown-menu .active > a:hover {
@@ -1894,3 +1907,10 @@ ul.inline li {
   background-position: 0;
   background-position: 0;
 }
 }
 // COMBOBOX FIXES END
 // COMBOBOX FIXES END
+@media all and (max-width: 1024px) {
+  #main-nav {
+    li.span2 {
+      width: 125px;
+    }
+  }
+}

+ 9 - 0
ambari-web/app/styles/apps.less

@@ -359,4 +359,13 @@
   }
   }
 }
 }
 
 
+@media all and (max-width: 1024px) {
+  .big-modal {
+    .modal {
+      width: 980px;
+      margin: -290px 0 0 -495px;
+    }
+  }
+}
+
 /*Big modal window end*/
 /*Big modal window end*/

+ 1 - 1
ambari-web/app/templates/main.hbs

@@ -21,7 +21,7 @@
   <div class="navbar">
   <div class="navbar">
     <div class="navbar-inner">
     <div class="navbar-inner">
       <a class="brand" href="#">
       <a class="brand" href="#">
-        My Cluster
+        {{clusterName}}
 
 
           {{#view App.EmptyView controllerBinding="App.router.backgroundOperationsController"}}
           {{#view App.EmptyView controllerBinding="App.router.backgroundOperationsController"}}
             {{#if allOperationsCount}}
             {{#if allOperationsCount}}

+ 12 - 1
ambari-web/app/templates/main/background_operations_popup.hbs

@@ -23,14 +23,25 @@
         <i {{bindAttr class="view.iconClass"}}></i>
         <i {{bindAttr class="view.iconClass"}}></i>
         {{#if view.isOpen}}Hide{{else}}Show{{/if}} info about {{operation.command}} {{operation.role}} on {{operation.host_name}}
         {{#if view.isOpen}}Hide{{else}}Show{{/if}} info about {{operation.command}} {{operation.role}} on {{operation.host_name}}
       </a>
       </a>
+      <div class="content-area">
+      <div id="textTrigger">click to highlight</div>
       {{#if view.isOpen}}
       {{#if view.isOpen}}
+      {{#if view.isTextArea}}
+      <div>
+      {{view view.textArea contentBinding="operation"}}
+      </div>
+      {{else}}
+      <div>
         <h5>exitcode:</h5>
         <h5>exitcode:</h5>
         <pre class="stderr">{{operation.exit_code}}</pre>
         <pre class="stderr">{{operation.exit_code}}</pre>
         <h5>stderr:</h5>
         <h5>stderr:</h5>
         <pre class="stderr">{{highlight operation.stderr [err;fail]}}</pre>
         <pre class="stderr">{{highlight operation.stderr [err;fail]}}</pre>
         <h5>stdout:</h5>
         <h5>stdout:</h5>
         <pre class="stdout">{{highlight operation.stdout [err;fail]}}</pre>
         <pre class="stdout">{{highlight operation.stdout [err;fail]}}</pre>
+      </div>
       {{/if}}
       {{/if}}
-    </div>
+      {{/if}}
+      </div>
+     </div>
   {{/view}}
   {{/view}}
 {{/each}}
 {{/each}}

+ 2 - 2
ambari-web/app/templates/main/dashboard/service/hbase.hbs

@@ -20,9 +20,9 @@
 <div class="clearfix" {{action toggleInfoView target="view"}}>
 <div class="clearfix" {{action toggleInfoView target="view"}}>
   <div class="name span2">
   <div class="name span2">
     {{#if view.isCollapsed}}
     {{#if view.isCollapsed}}
-    <i class="icon-arrow-down pull-left"></i>
+    <i class="icon-caret-down pull-left"></i>
     {{else}}
     {{else}}
-    <i class="icon-arrow-right pull-left"></i>
+    <i class="icon-caret-right pull-left"></i>
     {{/if}}
     {{/if}}
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>

+ 2 - 2
ambari-web/app/templates/main/dashboard/service/hdfs.hbs

@@ -20,9 +20,9 @@
 <div class="clearfix" {{action toggleInfoView target="view"}}>
 <div class="clearfix" {{action toggleInfoView target="view"}}>
   <div class="name span2">
   <div class="name span2">
     {{#if view.isCollapsed}}
     {{#if view.isCollapsed}}
-    <i class="icon-arrow-down pull-left"></i>
+    <i class="icon-caret-down pull-left"></i>
     {{else}}
     {{else}}
-    <i class="icon-arrow-right pull-left"></i>
+    <i class="icon-caret-right pull-left"></i>
     {{/if}}
     {{/if}}
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>

+ 2 - 2
ambari-web/app/templates/main/dashboard/service/mapreduce.hbs

@@ -20,9 +20,9 @@
 <div class="clearfix" {{action toggleInfoView target="view"}}>
 <div class="clearfix" {{action toggleInfoView target="view"}}>
   <div class="name span2">
   <div class="name span2">
     {{#if view.isCollapsed}}
     {{#if view.isCollapsed}}
-    <i class="icon-arrow-down pull-left"></i>
+    <i class="icon-caret-down pull-left"></i>
     {{else}}
     {{else}}
-    <i class="icon-arrow-right pull-left"></i>
+    <i class="icon-caret-right pull-left"></i>
     {{/if}}
     {{/if}}
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>

+ 8 - 1
ambari-web/app/templates/wizard/step3_host_log_popup.hbs

@@ -18,7 +18,14 @@
 
 
 
 
 <div id="host-log">
 <div id="host-log">
-  <div>
+  <div class="content-area">
+      <div id="textTrigger">click to highlight</div>
+    {{#if view.isTextArea}}
+    <div>
+      {{view view.textArea contentBinding="view.host.bootLog"}}
+    </div>
+    {{else}}
     <pre class="bootLog">{{view.host.bootLog}}</pre>
     <pre class="bootLog">{{view.host.bootLog}}</pre>
+    {{/if}}
   </div>
   </div>
 </div>
 </div>

+ 5 - 5
ambari-web/app/views/common/chart/linear_time.js

@@ -215,11 +215,11 @@ App.ChartLinearTimeView = Ember.View.extend({
         var c = value[value.length - 1];
         var c = value[value.length - 1];
         if (!isNaN(parseInt(c))) {
         if (!isNaN(parseInt(c))) {
           // c is digit
           // c is digit
-          value = parseFloat(value).toFixed(3);
+          value = parseFloat(value).toFixed(3).replace(/0+$/, '').replace(/\.$/, '');
         }
         }
         else {
         else {
           // c in not digit
           // c in not digit
-          value = parseFloat(value.substr(0, value.length - 1)).toFixed(3) + c;
+          value = parseFloat(value.substr(0, value.length - 1)).toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + c;
         }
         }
         return value;
         return value;
       },
       },
@@ -540,7 +540,7 @@ App.ChartLinearTimeView.PercentageFormatter = function (percentage) {
   if (!value || value.length < 1) {
   if (!value || value.length < 1) {
     value = '0 %';
     value = '0 %';
   } else {
   } else {
-    value = value.toFixed(3) + '%';
+    value = value.toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + '%';
   }
   }
   return value;
   return value;
 };
 };
@@ -569,9 +569,9 @@ App.ChartLinearTimeView.TimeElapsedFormatter = function (millis) {
     } else if (seconds > 0) {
     } else if (seconds > 0) {
       value = seconds + ' s';
       value = seconds + ' s';
     } else if (millis > 0) {
     } else if (millis > 0) {
-      value = millis.toFixed(3) + ' ms';
+      value = millis.toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + ' ms';
     } else {
     } else {
-      value = millis.toFixed(3) + ' ms';
+      value = millis.toFixed(3).replace(/0+$/, '').replace(/\.$/, '') + ' ms';
     }
     }
   }
   }
   return value;
   return value;

+ 49 - 2
ambari-web/app/views/main.js

@@ -32,6 +32,53 @@ App.MainBackgroundOperation = Em.View.extend({
     return this.get('isOpen') ? 'icon-minus' : 'icon-plus';
     return this.get('isOpen') ? 'icon-minus' : 'icon-plus';
   }.property('isOpen'),
   }.property('isOpen'),
   showOperationLog:function(){
   showOperationLog:function(){
-    this.set('isOpen', !this.get('isOpen'))
-  }
+    this.set('isOpen', !this.get('isOpen'));
+    this.set('isTextArea', false);
+  },
+  buttonLabel:function(){
+    var button = $(this.get('element')).find('#textTrigger');
+    if(this.get('isTextArea')){
+      button.text('press CTRL+C');
+    } else {
+      button.text('click to highlight');
+    }
+  }.observes('isTextArea'),
+  didInsertElement: function () {
+    var self = this;
+    var button = $(this.get('element')).find('#textTrigger');
+    button.click(function () {
+      self.set('isTextArea', !self.get('isTextArea'));
+    });
+    $(this.get('element')).find('.content-area').mouseenter(
+      function () {
+        var element = $(this);
+        element.css('border', '1px solid #dcdcdc');
+        button.css('visibility', 'visible');
+      }).mouseleave(
+      function () {
+        var element = $(this);
+        element.css('border', 'none');
+        button.css('visibility', 'hidden');
+      })
+  },
+  isTextArea: false,
+  textArea: Em.TextArea.extend({
+    didInsertElement: function(){
+      var element = $(this.get('element'));
+      element.width($(this.get('parentView').get('element')).width() - 10);
+      element.height($(this.get('parentView').get('element')).height());
+      element.select();
+      element.css('resize', 'none');
+    },
+    disabled: true,
+    value: function(){
+      var operation = this.get('content');
+      var content = "";
+      content += operation.command + " " + operation.role + " on " + operation.host_name + "\n";
+      content += "exitcode: " + operation.exit_code + "\n";
+      content += "stderr: " + operation.stderr + "\n";
+      content += "stdout: " + operation.stdout + "\n";
+      return content;
+    }.property('content')
+  })
 });
 });